Последовательный порт микроконтроллера 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, тем самым завершив цикл.