Последовательный порт микроконтроллера 8051 с использованием P0

У меня есть частичный код для последовательной связи между 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         

1 ответ

Выяснилось, что подпрограмма xood6 будет ожидать запуска линии прерывания на линии последовательной передачи (данные отправляются по sbuf). Прерывание сбросит R7 до 0, тем самым завершив цикл.

Другие вопросы по тегам