我正在制作简单的消息传递程序,例如我有两台 8051 机器,其中一台是发送器,另一台是接收器。发送器发送 8 个字符,编码为:
...
mov r7, #8
mov r0, #30h
TRS: clr TI
mov sbuf, @r0
inc r0
jnb TI, $
djnz r7, TRS
我从键盘上得到这 8 个字符,它们肯定在 30 小时到 37 小时之间。得到这 8 个字符后,我发送数据。然而,我在接收器 LCD 中看到的是 8 字节的第一个字符。即如果我输入 1 2 3 4 5 6 7 8,接收者只能得到 1 并显示它。这是接收器的代码:
...
mov r7, #8
REC: jnb RI, $
mov a, sbuf
acall SEND_DATA
clr RI
djnz r7, REC
接收者等待另外 7 个字符。当我从发送器接收器输入 64 个字符时,只需要其中的 8 个,它们是 mod8=1。我正在清除 RI 标志并等待 RI 的下一个上升沿,这应该是来自发送器的下一个字符。可能是什么原因?
问候