打印

假死!!

[复制链接]
1945|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxq1234508|  楼主 | 2007-4-12 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近遇到了AT89C51假死的现象,不知道如何解决,望高手赐教!现象如下:程序运行正常,但是回偶然出现“死机”的现象。键盘操作无响应,键盘是通过中断处理的。串口不能接收数据,但是很奇怪的是上位机却能接受到AT89C51发送出来的数据。从这一点来讲,单片机应该没有死机,但是为什么却不响应中断呢?外如果中断总开关关闭了(EA=0)的时候AT89C51还能往外送数据?部使用了看门狗。

相关帖子

沙发
lixun00| | 2007-4-12 17:02 | 只看该作者

估计软件逻辑出了问题,建议调通每个模块

使用特权

评论回复
板凳
tdwmcu| | 2007-4-12 17:15 | 只看该作者

RE:

"外如果中断总开关关闭了(EA=0)的时候AT89C51还能往外送数据?"
这看你采取什么方式发数据了,如果不采用中断,照样可以发出去

使用特权

评论回复
地板
born| | 2007-4-12 18:23 | 只看该作者

中断里头一定要做好现场保护

DPTR 等都要入栈

使用特权

评论回复
5
平常人| | 2007-4-12 22:18 | 只看该作者

假死与真死在本质上没有区别

请看我在另一个帖子里31楼的发言。

使用特权

评论回复
6
ayb_ice| | 2007-4-13 07:57 | 只看该作者

死机就是程序进入死循环了...

使用特权

评论回复
7
平常人| | 2007-4-13 08:00 | 只看该作者

6楼只是指出软件意义上的死机

使用特权

评论回复
8
zxq1234508|  楼主 | 2007-4-13 08:24 | 只看该作者

修改结果

根据大家的发言,我修改了一下我的程序。现在似乎是好了,正在测试中。
我估计应该是我的串口中断出了问题,定义如下:
void uart(void) interrupt 4 using 1 我用了工作寄存器1,但是在串口中断程序里又有一个return;会不会是在返回值的时候出错了?我现在是把using 1给去掉了。系统似乎很正常,会是这个原因吗?

使用特权

评论回复
9
zxq1234508|  楼主 | 2007-4-13 08:25 | 只看该作者

再来

软件逻辑怎么理解?怎么样才能做到逻辑合理?

使用特权

评论回复
10
tdwmcu| | 2007-4-13 08:36 | 只看该作者

中断中不用return

使用特权

评论回复
11
燕南啸| | 2007-4-13 09:07 | 只看该作者

中断函数没有返回值

使用特权

评论回复
12
ayb_ice| | 2007-4-13 09:45 | 只看该作者

中断中可以用return,只是不能返回任何值...

使用特权

评论回复
13
mugenwon| | 2007-4-13 10:12 | 只看该作者

软件问题

把多余的东西慢慢注释掉,一步步调试。

使用特权

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

本版积分规则

90

主题

486

帖子

0

粉丝