打印
[51单片机]

2个51MCU的串口通信,有时会在这走不出来,请高手指点

[复制链接]
1219|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linguide|  楼主 | 2013-12-12 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2个51MCU的串口通信,有时会在这走不出来(软件设置完好的)
走不出来时停在 JNB  RI,$
SERIAL:
        PUSH        A
        PUSH        PSW       
;..........................
        JNB     RI,$       
        CLR     RI
        MOV     A,SBUF
        MOV     MEM_MIMA,A
;..............................       
        JNB     RI,$
        CLR     RI
        MOV     A,SBUF
        MOV     MEM_SW,A
;..............................       
        JNB     RI,$
        CLR     RI
        MOV     A,SBUF
        MOV     MEM_WD,A
;...............................       
        MOV     A,MEM_MIMA
        CJNE    A,#SYNC_CODE,RET_SER
        SETB    PSW_RXD
RET_SER:
;.........................................
        POP        PSW
        POP        A
        RETI

相关帖子

沙发
ayb_ice| | 2013-12-12 09:15 | 只看该作者
这完全取决于发送方如果发数据了

这样的程序几乎没有实用价值,死悄悄是很容易的,因为程序本身被对方牵着走,对方数据错了,挂了,自己也跟着挂了。。。

使用特权

评论回复
板凳
linguide|  楼主 | 2013-12-12 09:41 | 只看该作者
ayb_ice 发表于 2013-12-12 09:15
这完全取决于发送方如果发数据了

这样的程序几乎没有实用价值,死悄悄是很容易的,因为程序本身被对方牵着 ...

那有什么好的方法.请指点.

使用特权

评论回复
地板
ayb_ice| | 2013-12-12 10:14 | 只看该作者
linguide 发表于 2013-12-12 09:41
那有什么好的方法.请指点.

首先要将一个复杂的通信分解

比如:分成接收与处理两大过程,接收是接收,处理是处理,逻辑上分开,互不干扰,
然后再分别考虑接收与处理的过程,如果分解一去,就OK了

另外任何一个任务必须考虑尽快退出(特别要注意防止死循环情况出现),以便其它任务有时间处理因为CPU只有一个,中断中更是要尽快退出,

使用特权

评论回复
5
cjseng| | 2013-12-12 11:22 | 只看该作者
看楼主的程序,应该是中断方式,可中断里边又用了查询方式,有点混乱啊。
应该改成,每次进中断就接收一个字节,接收完成就退出。

使用特权

评论回复
6
受不了了| | 2013-12-12 11:27 | 只看该作者
不要死等,最常见的9600,你发一个字节出去都要1ms后才能有中断,1ms的时间对于单片机来说太宝贵了

使用特权

评论回复
7
linguide|  楼主 | 2013-12-12 14:09 | 只看该作者
cjseng 发表于 2013-12-12 11:22
看楼主的程序,应该是中断方式,可中断里边又用了查询方式,有点混乱啊。
应该改成,每次进中断就接收一个 ...

每次进中断后接一个字节,还要这个吗?
JNB     RI,$
   CLR     RI
如果要还不是有个等在那边,我的发送是连续发3个字节的,所以进来中断后就接收完才走
  

使用特权

评论回复
8
cjseng| | 2013-12-12 14:21 | 只看该作者
linguide 发表于 2013-12-12 14:09
每次进中断后接一个字节,还要这个吗?
JNB     RI,$
   CLR     RI

所以说你这种方式处理不合理啊。
假如每次是100个字节怎么办呢?
假如另一个单片机发第一个字节数据时,这边的单片机还没准备好怎么办?接下来的数据是不是都要错位了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

45

帖子

1

粉丝