我正在制作简单的短信程序,这样我就有两台8051机器,其中一台是发射机,另一台是接收机。发送器发送8个字符,编码为:
...
mov r7, #8
mov r0, #30h
TRS: clr TI
mov sbuf, @r0
inc r0
jnb TI, $
djnz r7, TRS
我从键盘上得到了8个字符,他们肯定会在30h到37h之间。获得这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的下一个上升沿,这应该是来自trasmitter的下一个char。可能是什么原因?
此致