打印

keil c51 很郁闷的问题

[复制链接]
1915|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服务

使用特权

评论回复
5
工控秀才| | 2007-1-9 08:45 | 只看该作者

单步运行不产生中断

一般的仿真单步运行不产生中断,是否在中断中修改的?

使用特权

评论回复
6
工控秀才| | 2007-1-9 08:48 | 只看该作者

单步运行不产生中断

一般的仿真单步运行不产生中断,是否在中断中修改的?
还有你的比如TL0等,中断响应是需要时间的,所以每次有一点不同也是正常的.

使用特权

评论回复
7
HWM| | 2007-1-9 08:50 | 只看该作者

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

使用特权

评论回复
8
xwj| | 2007-1-9 09:05 | 只看该作者

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

不开中断也照样会计数

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

LZ碰到问题是要先看看书,先仔细点把资料读明白哦

使用特权

评论回复
9
tony_1221|  楼主 | 2007-1-9 09:18 | 只看该作者

问题就是这样产生的

问题就是这样产生的:

确实如各位所说,在运行中寄存器的数值会自动修改,先设置定时值,再开寄存器就不会有这个问题了,真是一语点醒梦中人,谢谢热心的朋友。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

15

帖子

0

粉丝