#include "stc8g.h"
INT0 BIT P3.2
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0ISR
ORG 0100H
INT0ISR:
CLR TR0
JB INT0,RISING ;判断上升沿和下降沿
;CPL P1.0 ;测试端口 下降沿
MOV R1,TH0
MOV R2 ,TL0
MOV TL0,#0
MOV TH0,#0
SETB TR0
;CALL UP_SEND ;发送高电平脉冲宽度
MOV SBUF,#0AAH
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R1
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R2
JNB TI,$ ;发送完成标志
CLR TI
RETI
RISING: ;CPL P1.1 ;测试端口 上升沿
MOV R1,TH0
MOV R2,TL0
MOV TL0,#0
MOV TH0,#0
SETB TR0
;CALL DOWN_SEND ;发送低电平脉冲宽度
MOV SBUF,#0BBH
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R1
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R2
JNB TI,$ ;发送完成标志
CLR TI
RETI
;=============================
MAIN:
MOV SP, #5FH
MOV P1M0, #00H
MOV P1M1, #00H
MOV P3M0, #00H
MOV P3M1, #00H
MOV P5M0, #00H
MOV P5M1, #00H
UARTINIT: ;230400bps@11.0592MHz
MOV SCON,#50H ;8位数据,可变波特率
ORL AUXR,#01H ;串口1选择定时器2为波特率发生器
ORL AUXR,#04H ;定时器时钟1T模式
MOV T2L,#0F4H ;设置定时初始值
MOV T2H,#0FFH ;设置定时初始值
ORL AUXR,#10H ;定时器2开始计时
ANL AUXR, #00111111B
MOV TMOD,#00010001B
MOV TCON,#00000000B
MOV TL0,#0
MOV TH0,#0
CLR IT0 ;使能 INT0 上升沿和下降沿中断
SETB EX0 ;使能 INT0 中断
SETB EA
TEST:
DELAY1MS: ;@22.1184MHz
// NOP
// NOP
// PUSH 30H
// PUSH 31H
// MOV 30H,#29
// MOV 31H,#181
//NEXT:
// DJNZ 31H,NEXT
// DJNZ 30H,NEXT
// POP 31H
// POP 30H
//MOV SBUF,#0AAH
// JNB TI,$ ;发送完成标志
// CLR TI
JMP TEST
UP_SEND:
MOV SBUF,#0AAH
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R1
JNB TI,$ ;发送完成标志
CLR TI
MOV SBUF,R2
JNB TI,$ ;发送完成标志
CLR TI
RET
END
|