奇怪的问题 !!!开定时器0

[复制链接]
 楼主| 贺信 发表于 2009-10-13 23:04 | 显示全部楼层 |阅读模式
ET0=1;      //允许T0中断
TR0  = 1;      //开定时器0中断

这两句到底在编写程序时有啥区别和忌讳呢?
我现在跑个程序
当上面两句都写上其程序就发现乱码(串口发送,但定时器0与发送无关,我的波特率是定时器1设置)!!
只有上面两句随便选一句(注;只能一句)程序才正常发送数据!!!


真是不明白!!
awmc_m 发表于 2009-10-13 23:42 | 显示全部楼层
两个是不同的寄存器,不冲突。tr0是定时器0使能,et0是定时器0中断使能。
只有tr0=1定时器0才开始计时,et0=1时才会在计数完成后产生中断。
你遇到的问题应该还是和串口使用的定时器有关。
gooogleman 发表于 2009-10-14 08:22 | 显示全部楼层
楼上说的对。
程序匠人 发表于 2009-10-14 08:38 | 显示全部楼层
是那个红外接收程序吗?你不是说串口部分已经搞定了?
ejack 发表于 2009-10-14 08:57 | 显示全部楼层
随便选一句,Timer0就是个摆设,当然不会影响你的程序。
从你的注释来看就该打PP,TR0跟“定时器0中断”混为一谈。
开T0中断、开TR0,导致定时器0开始工作,并在溢出后触发中断,跳转到Timer0中断向量地址C:0x000B。而你的程序在那里是什么就天晓得了……
 楼主| 贺信 发表于 2009-10-14 09:46 | 显示全部楼层
是那个红外接收程序吗?你不是说串口部分已经搞定了?
程序匠人 发表于 2009-10-14 08:38


这个是我昨晚无意之中加ET0=1;,后用串口发送单一数据时就出错,不明白之中,但屏蔽了就没有乱码发送!!!     
void InitialTimer0()
{
TMOD = 0x01;  // 定时器0, 1工作模式1, 16位定时方式

TH1  = 0xfe;  //定时500uS
TL1  = 0x0c;
//TCON = 0x01;
EA   = 1;
//ET0=1;     
TR0  = 1;   //开定时器0中断
}
5880527 发表于 2009-10-14 10:49 | 显示全部楼层
TR0是让汽车发动机转动起来,ET0是离合器,输出动力
 楼主| 贺信 发表于 2009-10-14 15:03 | 显示全部楼层
本帖最后由 贺信 于 2009-10-14 15:08 编辑

谢谢大家!这个定时器设置已明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

305

帖子

0

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