教训少占鱼之:单片机定时器初始化不能用负号\"-(1000/256)\"写法

来源:互联网 发布:lvs haproxy nginx 编辑:程序博客网 时间:2024/04/25 16:33
//少占鱼制作  河北正定欢迎您   长沙航空职业技术学院  2010 年QQ:411656434 
用负号的写法是错误的。定时时间并不是从-A到0。 
 TMOD=0x01;
 TH0=-(50000/256);
 TL0=-(50000%256);
下面这样写才是对的:有的书上用的负号写法。误导我了!!
负号是错误的,并不相当于65536-A;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
 
用负号出错:
 TH0=-(1000/256);
 TL0=-(1000%256);
             th0=TH0;  //这里的结果是:253
             tl0=TL0;  //这里的结果是:24
             sum=TH0*256+TL0;
           //这里sum结果是 65021;
这个定时器0初始化就不是定时1000了。
          正确写法:
             TMOD=0x01;            
             TH0=(65536-1000)/256;
             TL0=(65536-1000)%256;
             th0=TH0;  //这里的结果是:252
             tl0=TL0; //这里的结果是:  24
             sum=TH0*256+TL0;
             //这里sum结果是 64536;