【发布时间】:2016-02-03 18:08:30
【问题描述】:
我使用 EdSim51 仿真器(用于 8051 MCU),跟随 this notes。我编写了一个发送数据的程序,但有时(并非总是)它会发送垃圾。
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位。
标签: assembly uart 8051 edsim51