Код:
PCON EQU 87H
T2CON EQU 0C8H
RCLK EQU 0CDH ;T2CON.5
AV1 EQU P2.0
AV2 EQU P2.1
ORG 0000H
JMP BEGIN
ORG 001BH
JMP TM1INT
ORG 0023H
JMP SRLINT
ORG 0100H
BEGIN:
MOV A,#0
MOV R0,#0FFH
CLR_RAM:
MOV @R0,A ;все SFR в 0
DJNZ R0,CLR_RAM
CLR AV1
CLR AV2
MOV SCON,#50H
MOV PCON,#80H ;SMOD1=1
MOV TMOD,#10H ;T1- синхронизатор приемника UART
MOV TH1,#0CFH ;baud rate is equal to 5 baud
MOV TL1,#2CH
SETB ES ;Enable serial interrupt
SETB ET1 ;Enable Timer1 interrupt
SETB EA ;Enable global interrupt
SETB TR1 ;Timer 1 run
MOV SBUF,#55H
JMP $
; обработчик Timer 1
TM1INT:
CPL AV1 ;для проверки входа в прерывание
CLR TR1
MOV TH1,#0CFH
MOV TL1,#2CH
SETB TR1
TM1INT_1:
RETI
;обработчик UART
SRLINT:
CLR TI
CPL AV2 ;для проверки входа в прерывание
MOV SBUF,#55H
RETI
end
Результаты:
В прерывание по Timer1 входит - на AV1(P2.0) меандр с периодом 25 мс.
В прерывание по UART не входит - AV2(P2.1) в нуле.
TxD - в единице.
include файла от AT89S8253 не нашел, но все используемые регистры есть в AT89S8252 и имеют теже адреса.
Использую Phyton PICE-51 v.3.02.56.
Программа проверена на двух микроконтроллерах (больше нет).