keil c51 很郁闷的问题

[复制链接]
2889|8
 楼主| tony_1221 发表于 2007-1-8 17:44 | 显示全部楼层 |阅读模式


在c51 调试的时候,单步运行,查看寄存器里的数据,结果数据可设置的不一样:
void init_serialcomm(void)
{
           //SCON: serail mode 1, 8-bit UART, enable ucvr
    TH1   = 0xfc;       //Baud:19200  fosc=12MHz
    TL1   =  0xfc;
    TCON  = 0xe0;
    TMOD  = 0x21;       //TMOD: timer 1, mode 2, 8-bit reload
    PCON  = 0x00;       //SMOD=0;
    SCON  = 0x50;
    IE    = 0x92;       //enable serail int and t0 int
}
 
比如 TL1   =  0xfc;
运行后,用鼠标放在TL1 位置观察数据结果却是 0xff, 有时候是0xfd,很郁闷.
lpf336 发表于 2007-1-8 17:45 | 显示全部楼层

没遇过

suntao325 发表于 2007-1-8 18:26 | 显示全部楼层

硬件问题

可能是寄存器挂了。偶遇到过。或者是电路没设计好。
zhaoyu2005 发表于 2007-1-9 08:32 | 显示全部楼层

运行后TL1一直在计数,你说它是哪个值?

真是的,都设置成为UART用了,你还指望他听你的,除非改成普通定时/计数器,否则它会很忠实地为UART服务
工控秀才 发表于 2007-1-9 08:45 | 显示全部楼层

单步运行不产生中断

一般的仿真单步运行不产生中断,是否在中断中修改的?
工控秀才 发表于 2007-1-9 08:48 | 显示全部楼层

单步运行不产生中断

一般的仿真单步运行不产生中断,是否在中断中修改的?
还有你的比如TL0等,中断响应是需要时间的,所以每次有一点不同也是正常的.
HWM 发表于 2007-1-9 08:50 | 显示全部楼层

如果你设置了T1的运行位,则TL1自行计数,非中断所致。

xwj 发表于 2007-1-9 09:05 | 显示全部楼层

1、你TCON让T1运行了它当然要总是的运行,和开不开中断无关

不开中断也照样会计数

2、要仿真中断应该再中断入口下断点

LZ碰到问题是要先看看书,先仔细点把资料读明白哦
 楼主| tony_1221 发表于 2007-1-9 09:18 | 显示全部楼层

问题就是这样产生的

问题就是这样产生的:

确实如各位所说,在运行中寄存器的数值会自动修改,先设置定时值,再开寄存器就不会有这个问题了,真是一语点醒梦中人,谢谢热心的朋友。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

15

帖子

0

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