请教定时器的问题,谢谢

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

以下是全部代码
#include <AT89X52.H>
#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);
}

...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenyangtiantong 2008-08-21
  • 打赏
  • 举报
回复
定时器,有四种模式,其中一种模式就是256
lbing7 2008-08-21
  • 打赏
  • 举报
回复
请问这里为什么要除256,取模,谢谢大家

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

除以256相当于右移八位,得到高八位
和256取余相当于留下低八位
zyzhang365 2008-08-21
  • 打赏
  • 举报
回复
计算16位数据的高8位和低8位, 寄存器是8位的。
zhujinqiang 2008-08-21
  • 打赏
  • 举报
回复
名字都有含义的 TH0 high 高八位
TL0 low
zxcvbnm_20080512 2008-08-21
  • 打赏
  • 举报
回复
好像没有看出什么问题哦

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧