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

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

[复制链接]

该用户从未签到

1

主题

3

回帖

13

积分

新手上路

积分
13
发表于 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, 下载次数: 3

工程文件

回复 送花

使用道具 举报

该用户从未签到

1

主题

3

回帖

13

积分

新手上路

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


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

使用道具 举报

该用户从未签到

551

主题

9297

回帖

1万

积分

管理员

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

截图202404031932325205.jpg



回复 支持 反对 送花

使用道具 举报

  • TA的每日心情

    12 分钟前
  • 签到天数: 59 天

    [LV.5]常住居民I

    3

    主题

    542

    回帖

    724

    积分

    高级会员

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

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    13

    积分

    新手上路

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

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

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    13

    积分

    新手上路

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-3 09:10 , Processed in 0.062732 second(s), 52 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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