dami的笔记 https://bbs.21ic.com/?264414 [收藏] [复制] [RSS] 技术交流你我他

日志

三星单片机825a串口 C

已有 1257 次阅读2011-6-11 02:16 |个人分类:三星单片机|系统分类:单片机| 三星单片机, 825a, 串口

http://shop66732237.taobao.com/   http://armlinux.taobao.com


QQ空间的老文章转到这里。


//***********************dami 2006,9,6************************
//这里实现: 9位异步,可变波特率 (其他就不搞了)
//825a串口通信,有关的寄存器有:P5CONH,UARTCON,INTPND,BRDATA,UDATA ,还有关连
//波特率的寄存器(CLKCON,要有FXX的值tt).
//825a串口通信模式有四种:
//同步:一个时钟,一个数据
//8位异步 可变波特率
//9位异步 FXX/16
//9位异步 可变波特率
//825a校验和,发送TB8,接收RB8,用户计算校验和,处理校验和.
//如果用户不用校验,TB8,RB8可以作为一般的数据位传送.
//多机通信:有专用多机通信位

#include<ioS3C825A.H>
#include<INTRINSICS.H>
#define uchar unsigned char
#define uint unsigned int
#definetestbit(var,bit)((var)&(1<<(bit)))//位测试
#definesetbit(var,bit)((var)|=(1<<(bit)))//位置1
#defineclrbit(var,bit)((var)&=~(1<<(bit)))//位清零  clrbit(p3,1);就是了
void delay();
unsigned int i;
    
void main()
{
    
    BTCON     = 0xa2;
    CLKCON    = 0x98;//时钟控制器不分频
    OSCCON    = 0x0;//主从晶体及运行/停止
    IMR       = 0X8;
    WTCON     = 0x0;
    P5CONH    = 0x8c;//P3CONL.7~5:011,P3CONL.4~2=001
    BRDATA    = 0x19;//4M 晶体频率不分频. 波特率9600
    UARTCON   = 0xd2;//模式:11,MCE:0,TB8,RB8:00,RIE:接收中断允许,TIE发送中断不允许
    
    //__disable_interrupt();
    __enable_interrupt();
    //while(1)
    //{
    UDATA     = 0x55; //发送数据就直接写UART就行
    delay();
    UDATA     = 0x33; //发送数据,注意延时要够啊.用中断方式也行.我嫌麻烦就不搞了
    delay();
    
    //}
     __enable_interrupt();
     while(1)
     {
      __no_operation();
       __no_operation();
     }
  
}
//    if(testbit(P0,3)==1)
//    {
//        setbit(P3,1);
//        //delay();
//        clrbit(P3,1);
//        while(!testbit(P0,3));
//    }
//    while(1);
//}
void delay()
{
  unsigned int i;
  for (i=1000;i>0;i--);
}

#pragma vector=__UART_RX_vector
__interrupt void UART_RX_interrupt( void )
{
  unsigned char rxdatabuf;
  rxdatabuf = UDATA;
  rxdatabuf++;
  UDATA = rxdatabuf;
  delay();
  INTPND  = 0x0;
}  


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)