为8051和外部设备之间的串行通信列出了部分代码,但我不了解子程序X00D6。程序如何突破循环,因为代码将R7设置为FF然后比较为0?将P0设置为#10然后设置为0有什么作用? P0与R7有什么关系?似乎R7只是在其余代码中使用了寄存器。
mov r7,#0ffh ; 00cf 7f ff
mov sbuf,a ; 00d1 f5 99
acall X00d6 ; 00d3 11 d6
ret ; 00d5 22
X00d6:
mov p0,#10h ; 00d6 75 80 10
mov p0,#0 ; 00d9 75 80 00
cjne r7,#0,X00d6 ; 00dc bf 00 f7
ret ; 00df 22
答案 0 :(得分:1)
想出xood6子程序将等到串行传输线上触发中断线(在sbuf上发送的数据)。中断会将R7复位为0,从而结束循环。