新手提问 TH0、TL0为什么不直接赋值

[复制链接]
4619|4
 楼主| killvx 发表于 2011-11-14 21:48 | 显示全部楼层 |阅读模式
今天看到一段程序
void T0_irq(void) interrupt 1 using 1
{
TH0 = -(300/256);
TL0 =- (300%256);
beepbit = ~beepbit;   
}

查看汇编代码是
MOV TH0 ,#0xFF
MOV TL0,#0xD4
不明白这里为什么不直接赋值呢?有什么好处?
HWM 发表于 2011-11-14 22:23 | 显示全部楼层
这应该是个错误的表示。其原意可能是要设置计数300次的初值,即65536-300 = 65236 = 0xFED4。结果变成了0xFFD4。

采用

TH0 = (-300)/256;
TL0 = (-300)%256;

也许成。
原野之狼 发表于 2011-11-14 22:35 | 显示全部楼层
不直接写是为了让程序便于阅读,另外编译出来的结果与期望不符,因为程序写得有问题。
TH0 = -1  那不就变成0XFF了么
参考H老师的做法吧~
ayb_ice 发表于 2011-11-15 07:57 | 显示全部楼层
源程序是给人看的
 楼主| killvx 发表于 2011-11-15 08:26 | 显示全部楼层
明白点了 谢谢  结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

54

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部