stc12c5a60s2的芯片做了一个程序,主要用到两个串口和两个定时器,c编写的, 为什么程序

stc12c5a60s2的芯片做了一个程序,主要用到两个串口和两个定时器,c编写的, 为什么程序,第1张

引起程序跑飞的因素主要有三个:

其一是软件错误,比如汇编语言编程使用了直接地址跳转(没有使用标号),而地址输入或计算错误,产生错误跳转(目标地址落入数据区或者不在指令起始位置),或者 *** 作堆栈不匹配等。这在C语言中不容易出现。

其二是编译器错误,即编译器有BUG,这个我遇到过(汇编语言)。也是小概率事件。

其三是干扰造成,这个最普遍。干扰信号造成程序计数器值错乱,后果难于预期。

在同一个程序里面,可以串口1使用中断方式、串口2使用查询方式。当然,串口2也可以使用中断方式,并且推荐这样做。

中断的开启和关闭应该怎样具体 *** 作?为什么关闭中断?设置好串口(不管1、2),打开中断,就不需要关闭中断了,除非特殊需要。

是不是串口1收发完成时关总中断?同上,为什么老要关中断你?

串口2就可以使用查询方式正常收发了,然后串口1需要通信时再打开总中断?

你自己不觉得这样安排很别扭吗?串口2任何时候都可以使用查询方式正常收发(包括中断方式),跟串口1无关。

如果只是直接转发,还用什么单片机啊,用一个直连线不就解决了?

当然了,如果你执意要这么做,最简单的就是:

sbit R=P3^0;T=P1^3;

while(1) T=R;

这样无论什么速率的串行数据都会从串口1被发到串口2

不过,我估计你不是这个意思

1设置串口通讯速率

2设置串口中断

3串口1收到数据中断,进入你的处理过程同时转发到串口2

让串口1响应中断

将串口1接收寄存器中的数据放到内存中

退出串口1中断

将内存中的数据通过串口2发送寄存器发出去

以上就是关于stc12c5a60s2的芯片做了一个程序,主要用到两个串口和两个定时器,c编写的, 为什么程序全部的内容,包括:stc12c5a60s2的芯片做了一个程序,主要用到两个串口和两个定时器,c编写的, 为什么程序、STC12C5A60S2双串口单片机的串口通信方式问题、单片机双串口通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9503280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存