Я использую эмулятор EdSim51 (для MCU 8051), следуя этим примечаниям. Я написал программу, которая отправляет данные, но иногда (не всегда) отправляет мусор.
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, но последовательный монитор показывает мусор, см. изображение. а>
Похоже, скорость передачи данных не синхронизирована. Или я что-то забыл? Каков источник испорченного вывода?
TI
. - person Jester   schedule 03.11.2015