我正在使用 UART 和中断研究 8051 中的串行通信。今天我遇到了这段代码,作者说他一直在传输来自端口 0 的数据。传输发生的方式,我认为违反了 8051 中的串行通信规则。
org 00h
ljmp main
org 23h
ljmp serial_ISR
org 30h
main:
mov TMOD,#20h
mov TH1,#-03h
mov SCON,#50h
setb IE.7
setb IE.4
setb TR1
back:
mov A,P0
mov SBUF,A
sjmp back
serial_ISR:
jb TI,trans
mov R0,SBUF
clr RI
RETI
trans:
clr TI
RETI
让我感到困惑的是,在back
标签中我们不断地在 SBUF 寄存器上写入,这违反了我们不应该在之前的数据发送之前写入 SBUF 的规则(由 TI 标志通知)。
上述代码中不断向 SBUF 寄存器写入数据是否有效?UART会发送正确的数据吗?
问候