微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位高手,低手,你一定没见过的奇怪现象

各位高手,低手,你一定没见过的奇怪现象

时间:10-02 整理:3721RD 点击:
好吧,我承认,我单片机没学好,单片机串口没学好,标题只是为了求助而已,抱歉,望见谅。不过今天确实遇到了一个奇怪问题。先看三张图。
我发现我的串口发送函数,要执行两次才会把数据通过串口哈出去。
而其中的原因就是写中断函数与不写中断函数的结果;
写中断函数,如图,中断服务函数内容为空(为了验证结论),发送数据函数要执行两次才会把数据发送给出去。第一次不会发送数据出来。
不管ES = 1或者ES = 0;
不写那个内容为空的中断服务函数,,,发送数据函数只需要执行一次,就会把数据发送出去。
我是用红外遥控实验的,,跟发送数据函数在一起的P3口的LED指示灯指示了我的红外程序没有问题。
用的单片机是 STC12C5A60S2,,,,,,求解。





还有  串口发送函数 前后  关中断,开中断的语句没有影响。

这个没硬件难以确定,你怀疑串口中断,那就永远不要使能串口中断,因为发送不需要中断,看是否正常运行,否则你就一直在原地打转,好的调试方法很重要,初学单片机调试遇到问题不用急,把思路理清

这个不需要复杂的硬件,单片机最小系统就可以搞定,连接电脑用串口调试助手。
只需要控制按一下按键 执行一下发送程序,看串口助手是否收到数据,
我用的是红外遥控,执行完发送程序,会点亮P3口的指示灯,已经证明执行了发送程序。
不是是能串口中断的问题,,,是写或者不写中断服务函数的问题。
我的中断服务函数为空,我想证明不是中断服务函数内容的原因。
写:要执行两遍发送程序,串口助手才会受到数据。
不写:执行一遍发送程序,,串口就会发送程序。
已经证明了。我就是不明白为什么。
还有我要用到单片机 中断服务函数接收数据。那么我要发送数据,那么意味着我必须发两下。
有没有解决方法啊?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top