Ниже приведен код, который работает на AT89S8252, но не работает на AT89S8253. Выдержка из даташита: One can achieve very low baud rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring the Timer to run as a 16-bit timer (high nibble of TMOD = 0001B), and using the Timer 1 interrupt to do a 16-bit software reload.
Код: ORG 0000H JMP BEGIN ORG 001BH JMP TM1INT ORG 0023H JMP SRLINT
ORG 0100H
BEGIN: MOV SCON,#50H MOV TMOD,#10H MOV TH1,#0CFH ;baud rate is equal to 5 baud MOV TL1,#2CH ORL PCON,#10000000B ;SMOD1=1
SETB ES ;Enable serial interrupt SETB ET1 SETB EA ;Enable global interrupt SETB TR1 ;Timer 1 run
MOV SBUF,#55H
JMP $
TM1INT: CLR TR1 MOV TH1,#0CFH MOV TL1,#2CH SETB TR1 RETI
SRLINT: ;JNB TI,TI_NINT CLR TI MOV SBUF,#55H TI_NINT: RETI
end
Может кто чего подскажет?
|