求助:各位大哥帮我看看这个问题啊,谢谢!

yjk000   2008-9-30 12:12 楼主
请教:
帮我看看这几个问题啊

1:
波特率发生器
是什么啊,
是不是 T0 ,T1 啊

2:
定时器预置数
这里计算出来的是  FA


TH1 = FA;
TL1 = FA;

还是
TH1 = 0;
TL1 = FA;

还是
TL1 = FA
TH1 = 0;
谢谢!


3:
T1 给串口做波特率
我还能用 定时器中断 1 吗?
如果不可以的话
(T0 有别的用途)
那么就需要有 3 个定时器的芯片了,是不?

T1 给串口做波特率
是用哪个寄存器来设置的
我可以用 T0 给串口做波涛率不?
那要怎么设置?

如:
void ComInStr() interrupt 4 //串行口中断
{
   
}



void timer0(void) interrupt 1   //定时器中断 0
{
  TH0 = 0xdc;     //重载计数初值 每  3ms 中断一次 (原先是 20ms)
  TL0 = 0x00;
   
}


void timer0(void) interrupt 3   //定时器中断 1
{
  
}


void main()
{
  Delaytimes(100,100);    //延时
      
  WDT_CONTR = 0x3c;             //内部看们
  
  EA = 0;
   
  TMOD = 0x21;                  //定时器1模式1  定时器0模式1
  //---------------------------处理串口中断---------------------------------------
   SCON = 0x50;                  //串行口工作方式1, 10 位异步收发,波特率由定时器控制
   PCON |= 0x00;
   TL1 = 0xFA;
   TH1 = 0xFA;                   //22.1184M晶振 波特率9600
   //---------------------------处理串口中断---------------------------------------
   
   //------------------------------处理中断喂狗------------------------------------  
   TH0 =0xdc;     //预置计数初值,每 5 ms 中断一次 晶振 22.1184
   TL0 =0x00;
   //------------------------------处理中断喂狗------------------------------------
   EA = 1 ;                    //允许中断
   ES = 1 ;                    //允许串行中断
   ET0 = 1;                    //T/C0 开中断(定时器0/计数器0)
   ET1 = 0;                    //T/C0 开中断(定时器0/计数器0)
   
   TR1=1;                      //启动定时器1/计数器1
   TR0 = 1;                    //启动定时器0/计数器0
   
   while(1)
   {
   ;
   }
}

回复评论 (4)

1:
波特率发生器
是什么啊,

这个得看看串口原理了,这就是产生每一个绝断周期的时间(好像不太科学,差不多就是这个吧)

2:
定时器预置数
这里计算出来的是  FA

//如果用的定时器是自动重载的方式
那么像下面这个进行初始化,可以保持上面说的那个周期的稳定

TH1 = FA;
TL1 = FA;

//下面这两个是一样的

还是
TH1 = 0;
TL1 = FA;

还是
TL1 = FA
TH1 = 0;
谢谢!
//如果LZ的意思是:
TL1 = 0
TH1 = FA; 的话,除了第一个周期差一点外,也不会有啥大问题,只要不是非常急,一上来就发数据,那没办法


3:
T1 给串口做波特率
我还能用 定时器中断 1 吗?
//按理说是不可以用的,因为用了会响应波特率不准,通信误码率上升
//实在不行,如果能保证绝对的计算不会有问题,用也就那样用了。。。
如果不可以的话
(T0 有别的用途)
那么就需要有 3 个定时器的芯片了,是不?

T1 给串口做波特率
是用哪个寄存器来设置的
//默认的。。。
我可以用 T0 给串口做波涛率不?
那要怎么设置?
//这个忘了,印象有的片子可以的
点赞  2008-9-30 20:34
楼上回答的很具体!
点赞  2008-9-30 21:40
lbing7
自从eeworld不能抢分以后,我就很少来eeworld了.郁闷!!

iFish
自从不能跟eeworld斑猪抢食之后,我也很少来eeworld了,我更郁闷!!!!
点赞  2008-10-4 20:16
建议楼主找几本单片机C语言看看
点赞  2008-10-4 23:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复