1
我使用EdSim51仿真器(用於8051 MCU),跟在this notes之後。我寫了一個發送數據的程序,但有時(並非總是)它發送垃圾。UART代碼發送垃圾
JMP main
ORG 23h ; serial interrupt vector
JBC TI,sendString
RETI
ORG 30h
str: DB 'H','e','l','l','o',0Dh,0
sendString:
CLR A
MOVC A,@A+DPTR ; read next char from str
INC DPTR
JZ sendStringEnd ; if the char is not 0
MOV SBUF,A ; write next char
sendStringEnd:
RETI
main:
CLR SM0
SETB SM1 ; serial mode 1
MOV TMOD,#20h
MOV TH1,#243
MOV TL1,#243
SETB TR1 ; 2400 baud rate
SETB EA
SETB ES ; enable serial interrupt
MOV DPTR,#str ; DPTR points to Hello string
SETB TI ; force interrupt
JMP $
MOV SBUF,A
正確的數據寫入到SBUF,但串行監視器顯示垃圾,看到圖像。
看起來像波特率不同步。或者我忘記了什麼?什麼是混亂輸出的來源?
@HansPassant他做。他把這個東西連接到串行中斷**並且**甚至檢查'TI'位。 – Jester