;*******************************************************************
BYT_DLY EQU 30H
BIT_INT0 BIT 01H
BIT_T0 BIT 00H
ORG 0000H
AJMP Main
ORG 0003H
AJMP INT_INT0 ; 外部中断INT0
ORG 000BH ; 定时器T0
AJMP INT_T0
ORG 002BH
RETI
;*******************************************************************
;*******************************************************************
MAIN:
MOV SP,#68H
;-------------------------------------------------
Initial:
CLR P1.0
CLR P1.1
CLR BIT_INT0 ; T0启动标志
Initialized:
MOV R3,#00H ; T0中断次数
;-------------------------------------------------
;设置T0
MOV TMOD,#01H ; T0,方式1
;-------------------------------------------------
;设置INT0
SETB TCON.0 ; IT0=1,边沿触发
SETB IP.0 ; PX0=1,设INT0为高优先级
SETB EX0 ; 允许INT0中断
;-------------------------------------------------
SETB EA ; 开中断
;*******************************************************************
; ※※※※※※※※※※※※※※※※※
; ※※ ※※
; ※※ 主程序流程 ※※
; ※※ ※※
; ※※※※※※※※※※※※※※※※※
;*******************************************************************
; 判断脉冲个数,确定脉冲频率
Wait:
;-------------------------------------------------
JNB BIT_INT0,$ ; 等待T0启动
CLR BIT_INT0
;-------------------------------------------------
; 判断上升沿,已到,不再重载定式常数;否则,等待
JNB P3.2,$
;-------------------------------------------------
; 停止T0
CLR ET0 ; 停止T0中断
CLR TR0 ; 停止T0
;-------------------------------------------------
; 比较R3,确定脉冲宽度
......
AJMP Wait
;-------------------------------------------------
;*******************************************************************
; 外部中断INT0
INT_INT0:
;设置T0
MOV TH0,#0FEH ; 定式脉冲宽度500us
MOV TL0,#18H ; #0BH
; 启动T0
SETB TR0 ; 启动T0
SETB ET0 ; 允许T0中断
;-------------------------------------------------
CLR IE0 ; TCON.1
CLR EX0 ; IE.0,停止INT0
;-------------------------------------------------
RETI
;*******************************************************************
; 定时器中断T0
INT_T0:
SETB BIT_INT0 ; T0启动标志
;-------------------------------------------------
MOV TH0,#0FEH ; 定式脉冲宽度500us
MOV TL0,#0BH
SETB TR0 ; 启动T0
SETB ET0 ; 允许T0中断
INC R3
;-------------------------------------------------
RETI
;*******************************************************************
END