请教定时器的问题,谢谢

xu555xu   2008-8-21 11:42 楼主
请问这里为什么要除256,取模,谢谢大家
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; //定义定时器初值

以下是全部代码
#include
#define uchar unsigned char
uchar count; //全局变量
void time0() interrupt 1 using 0 //定时器0
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; //重新载入延时时间,如果晶振为12M,则为被减数则为50000

count++;
if(count==20) //11.0592 晶振精确延时1 秒
{
P0=~P0;
count=0;
}
}
void main()
{
TMOD=0x01; //定时器工作在方式1
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; //定义定时器初值
ET0=1; //开定时器0 中断
EA=1; //开总中断
TR0=1; //中断开始
while(1);
}
  

回复评论 (5)

计算16位数据的高8位和低8位, 寄存器是8位的。
点赞  2008-8-21 11:58
请问这里为什么要除256,取模,谢谢大家

分开十六位数据的,高八位和低八位

除以256相当于右移八位,得到高八位
和256取余相当于留下低八位
点赞  2008-8-21 12:21
定时器,有四种模式,其中一种模式就是256
点赞  2008-8-21 12:41
好像没有看出什么问题哦
点赞  2008-8-21 15:16
名字都有含义的 TH0 high 高八位
TL0  low
点赞  2008-8-21 15:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复