按键中断报警EM78P447
扫描二维码
随时随地手机看文章
;************************************************
; 按键中断报警.dt
;************************************************
PORT6 == 0x06 ;定义端口6,7
PORT7 == 0x07
;-----------------------------------------------------------------------
IOCE == 0x0E ;定义看门狗控制寄存器IOCE
IOCF == 0x0F ;定义中断屏蔽寄存器IOCF
ISR == 0X3F ;定义中断状态寄存器ISR
;-----------------------------------------------------------------------
DLY1 == 13 ;定义延时暂存单元DLY1,DLY2,DLY3
DLY2 == 14
DLY3 == 15
COUNT == 16 ;定义计数暂存单元COUNT
EXIE == 3 ;定义中断屏蔽寄存器的第3位EXIE
;允许外部中断时需将EXIE置1
EXIF == 3 ;定义中断状态寄存器的第3位EXIT
;中断响应以后EXIF自动置1,要用程序清0
;-----------------------------------------------------------------------
ORG 0x00
JMP INIT
ORG 0x01
JMP INT_SERVICE
INIT: MOV A,@0x00 ;设定P6口,P7口全部为输出
IOW PORT6
IOW PORT7
MOV A,@0X11 ;关闭看门狗功能
IOW IOCE
MOV A,@0XFF ;LED数码管显示全暗
MOV PORT6,A
MOV A,@0X20 ;设定延时时间
MOV DLY3,A
BC PORT7,1 ;P71低电平,继电器接通,电动机运行
MOV A,@0x0A ;为计数器置数10
MOV COUNT,A
MOV A,@0B00001000 ;将中断屏蔽寄存器第3位置1,允许外部中断
IOW IOCF
;-----------------------------------------------------------------------
MAIN: ENI ;允许中断,将控制寄存器第6位INT置1
MAIN1: JMP MAIN1 ;等中断
;-----------------------------------------------------------------------
INT_SERVICE:BS PORT7,1 ;P71高电平,继电器断开,电动机仃止
INT_S1 MOV A,@0X00 ;LED数码管显示全亮
MOV PORT6,A
CALL DELAY ;延时
MOV A,@0XFF ;LED数码管显示全暗
MOV PORT6,A
CALL DELAY ;延时
DJZ COUNT ;计数器减1,闪烁10次到否?
JMP INT_S1 ;未到,继续闪烁
BC ISR,EXIF ;已到,清除中断响应标志,为下次中断作准备
MOV A,@0x0A ;重新为计数器置数10
MOV COUNT,A
BC PORT7,1 ;P71底电平,继电器接通,电动机运行
RETI ;中断返回,将控制寄存器第6位INT置1
;-----------------------------------------------------------------------
DELAY: MOV A,@20 ;1*(DLY3) 延时子程序
MOV DLY2,A ;1*(DLY3)
INNER2: MOV A,@5 ;1*(DLY3)*(250)
MOV DLY1,A ;1*(DLY3)*(250)
INNER1: DJZ DLY1 ;1*(DLY3)*(250)*(133)
JMP INNER1 ;2*(DLY3)*(250)*(133)
DJZ DLY2 ;1*(DLY3)*(250)
JMP INNER2 ;2*(DLY3)*(250)
DJZ DLY3 ;1*(DLY3)
JMP DELAY ;2*(DLY3)
RET ;延时子程序返回
EOP