2016-03-25 17 views
1

Haben Teil Code für die serielle Kommunikation zwischen 8051 und externes Gerät aufgeführt, aber ich verstehe nicht das Unterprogramm X00D6. Wie bricht das Programm aus der Schleife ab, da der Code R7 auf FF setzt und dann mit 0 vergleicht? Was macht die Einstellung von P0 auf # 10 und dann die Einstellung auf 0? Wie verhält sich P0 zu R7? Es scheint, dass R7 nur ein Register im Rest des Codes verwendet wird.8051 Mikrocontroller serielle Schnittstelle Schleifen mit P0

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   

Antwort

1

herausgefunden, dass xood6 Subroutine, bis eine Interrupt-Leitung auf der seriellen Übertragungsleitung (A gesendeten Daten auf sbuf) ausgelöst wird, warten. Ein Interrupt setzt den R7 auf 0 zurück und beendet damit die Schleife.