打印

请高手解释一下下面的程序

[复制链接]
2332|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
glen_cao|  楼主 | 2007-9-25 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void init_serialcomm(void)
{
       SCON  = 0xF0;       //SCON: serail mode 1, 8-bit UART, enable 
       TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
       PCON |= 0x80;       //SMOD=1; 
  //    TH1   = 0xFA;       //Baud:4800  fosc=11.0592MHz 
    TH1 = 0xFD;
    TL1 = 0xFD;
       IE |= 0x90;       //Enable Serial Interrupt 
       TR1 = 1;          // timer 1 run 
    PS = 1;
    PT0 = 0;
    PT2 = 0;
    PT0 = 0;
    PX0 = 0;
    PX1 = 0;
    PT1 = 0;
    EX0 = 0;;
    ES = 1; 

相关帖子

沙发
古道热肠| | 2007-9-25 11:26 | 只看该作者

请新手去看看单片机原理和C51应用的教材

使用特权

评论回复
板凳
ayb_ice| | 2007-9-25 13:06 | 只看该作者

这有什么好讲的...

使用特权

评论回复
地板
姑苏孙利| | 2007-9-25 13:22 | 只看该作者

回去好好看看书吧!

使用特权

评论回复
5
wwh| | 2007-9-25 13:22 | 只看该作者

全部都是初始配置程序

使用特权

评论回复
6
diannaoza| | 2007-9-25 16:04 | 只看该作者

re:初值单片机

void init_serialcomm(void)
{
       SCON  = 0xF0;      //;;串口工作方式选择d7,d6,d5,d4,d3,d2,d1,d0
                                       sm0 sm1 sm2 ren tb8 rb8 ti ri
                              0xf0h;;;  1   1   1   1   0   0  0  0
                        & 工作在串口方式3,11位,1启,8数,1校验,1停

      TMOD |= 0x20;       //d7 d6 d5 d4 d3 d2 d1 d0
                           gate1 c/t1 m1 m0 gate0 c/t0 m1 m0
                              定时器1           定时器0
                        0x20h;0  0 1 0  0  0 0 0
                         &定时器1工作在方式2,8位自动加载
                         &定时器0工作在方式0,13位定时方式
                           
       PCON |= 0x80;       //d7,d6,d5,d4,d3,d2,d1,d0
                             smod - - - X X pd idle 
                       0x80h= 1   0 0 0 ,0 0 0 0
                          波物率乘2
 
  //    TH1   = 0xFA;       //Baud:4800  fosc=11.0592MHz 
    TH1 = 0xFD;
    TL1 = 0xFD;
                         th1定时器的初值赋给,在这是指定波特率

                     256-( 11.0592*10^6/384/波特率)=th1
                     256-(11059200/384/波特率)=th1
                     256-(28800/波特率)=th1
                   1)若想得到4800;;256-(28800/4800)=th1
                                   256-6=250=th1;;0xfah
                   2)若想得到9600;;256-(28800/9600)=th1
                                   256-3=253=th1;;0xfdh
                  ;;这个值不包括smod*2


       IE |= 0x90;       //d7 d6 d5 d4 d3 d2 d1 d0
                          ea - - es et1 ex1 et0 ex0
                   0x90h;;  1  0  0 1 0 0 0 0
                   &允计总中断,充许串口中断


       TR1 = 1;          // timer 1 run 
                      scon;d7 d6 d5 d4 d3 d2 d1 d0
                           tf1 tr1 tf0 tr0 ie1 it1 ie0 it0
              tr1=1;setb tr1;; x   1   x   x   x   x   x   x
                      

;;            ip:d7 d6 d5 d4 d3 d2 d1 d0
                 - - - ps pt1 px1 pt0 px0
;;
    PS = 1;   允计串口中断优先
    PT0 = 0;
    PT2 = 0;
    PT0 = 0;
    PX0 = 0;
    PX1 = 0;
    PT1 = 0;
    EX0 = 0;;
    ES = 1; 


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

61

帖子

0

粉丝