|
#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 ;發(fā)送高電平脈沖寬度
MOV SBUF,#0AAH
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
RETI
RISING: ;CPL P1.1 ;測試端口 上升沿
MOV R1,TH0
MOV R2,TL0
MOV TL0,#0
MOV TH0,#0
SETB TR0
;CALL DOWN_SEND ;發(fā)送低電平脈沖寬度
MOV SBUF,#0BBH
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發(fā)送完成標(biāo)志
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位數(shù)據(jù),可變波特率
ORL AUXR,#01H ;串口1選擇定時器2為波特率發(fā)生器
ORL AUXR,#04H ;定時器時鐘1T模式
MOV T2L,#0F4H ;設(shè)置定時初始值
MOV T2H,#0FFH ;設(shè)置定時初始值
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,$ ;發(fā)送完成標(biāo)志
// CLR TI
JMP TEST
UP_SEND:
MOV SBUF,#0AAH
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發(fā)送完成標(biāo)志
CLR TI
RET
END
|
|