zrh96363 发表于 2024-4-3 19:01:37

proteus仿真通过,实物不通过,问题已解决,但细究原因,百思不得其解!

本帖最后由 zrh96363 于 2024-4-3 19:12 编辑

一、现象
1、在proteus下仿真:单片机串口给计算机串口发单个字符,仿真正确。即:每按一次按键,单片机向串口虚拟终端交替发送字符'X'或字符'Y'。
2、风标电子单片机实验箱,使用AT89S52,烧录程序后:
1)第一次按键,可以发送字符;
2)大约7~8次按按键的时间里面,不响应按键(现象是串口调试助手接收不到信息)
3)过了这段时间,响应按键发送信息,没有任何问题。
二、解决问题
1、因为是单工通信,没有写串口中断函数,加上串口中断函数,问题解决。
2、按键按下,会触发串口中断,没有写串口中断函数,导致单片机按照向量入口地址,找不到中断函数的地址,所以第一次能响应,后续会出问题。
三、我的问题
为什么经过一段时间以后,单片机能在找不到中断程序入口地址的情况下,正常工作?
按我的理解,类似野指针,PC指针应该跑飞呀!为什么单片机能神奇的自我恢复?是不是AT89S52有保护机制?
proteus中仿真正常,是因为该软件也有防护机制吗?

zrh96363 发表于 2024-4-3 19:05:17

本帖最后由 zrh96363 于 2024-4-3 20:49 编辑


补充说明:
1)初始化的时候串口中断和总中断都是开启的。
2)中断函数是空的。只要把空的中断函数删掉,就会有这个问题。只要加上这个空的中断函数,就一切正常。
附上仿真电路图。仿真中的甲机,实物调试的时候是风标电子实验箱的AT89S52,仿真中的乙机,实物调试的时候是计算机运行ISP软件中的串口调试助手。

神农鼎 发表于 2024-4-3 19:32:37

AT89S52的串口,你调试通不过,可以尝试 STC89C52RC的串口






soma 发表于 2024-4-3 20:02:44

没开中断,可能只收不发

zrh96363 发表于 2024-4-3 20:45:21

神农鼎 发表于 2024-4-3 19:32
AT89S52的串口,你调试通不过,可以尝试 STC89C52RC的串口

谢谢您的答复!遇到的问题是,如果把中断函数删掉,即使中断函数里面是空的,删掉以后,就会出现这个问题。但是,如果把空的中断函数加上,AT89S52就没有任何问题。

zrh96363 发表于 2024-4-3 20:47:10

soma 发表于 2024-4-3 20:02
没开中断,可能只收不发

谢谢您的回复!我没有表达清楚,我的意思是,把空的中断函数删掉,就会出现这个问题。串口中断是开启的,只是没有添加空的中断函数。
页: [1]
查看完整版本: proteus仿真通过,实物不通过,问题已解决,但细究原因,百思不得其解!