找回密码
 立即注册
查看: 803|回复: 5

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

[复制链接]

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2024-4-3 19:01:37 | 显示全部楼层 |阅读模式
本帖最后由 zrh96363 于 2024-4-3 19:12 编辑

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

RS232_正确.rar

17.33 KB, 下载次数: 49

工程文件

回复

使用道具 举报 送花

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2024-4-3 19:05:17 | 显示全部楼层
本帖最后由 zrh96363 于 2024-4-3 20:49 编辑


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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15632
发表于 2024-4-3 19:32:37 | 显示全部楼层
AT89S52的串口,你调试通不过,可以尝试 STC89C52RC的串口
截图202404031931275306.jpg

截图202404031932325205.jpg



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-4-3 20:02:44 来自手机 | 显示全部楼层
没开中断,可能只收不发
回复 支持 反对

使用道具 举报 送花

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2024-4-3 20:45:21 | 显示全部楼层
神*** 发表于 2024-4-3 19:32
AT89S52的串口,你调试通不过,可以尝试 STC89C52RC的串口

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

使用道具 举报 送花

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2024-4-3 20:47:10 | 显示全部楼层
so*** 发表于 2024-4-3 20:02
没开中断,可能只收不发

谢谢您的回复!我没有表达清楚,我的意思是,把空的中断函数删掉,就会出现这个问题。串口中断是开启的,只是没有添加空的中断函数。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 08:05 , Processed in 0.131074 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表