;************************************************ ; 按鍵中斷報警.dt ;************************************************ PORT6 == 0x06 ;定義端口6,7 PORT7 == 0x07 ;----------------------------------------------------------------------- IOCE == 0x0E ;定義看門狗控制寄存器IOCE IOCF == 0x0F ;定義中斷屏蔽寄存器IOCF ISR == 0X3F ;定義中斷狀態(tài)寄存器ISR ;----------------------------------------------------------------------- DLY1 == 13 ;定義延時暫存單元DLY1,DLY2,DLY3 DLY2 == 14 DLY3 == 15 COUNT == 16 ;定義計數(shù)暫存單元COUNT EXIE == 3 ;定義中斷屏蔽寄存器的第3位EXIE ;允許外部中斷時需將EXIE置1 EXIF == 3 ;定義中斷狀態(tài)寄存器的第3位EXIT ;中斷響應(yīng)以后EXIF自動置1,要用程序清0 ;----------------------------------------------------------------------- ORG 0x00 JMP INIT ORG 0x01 JMP INT_SERVICE INIT: MOV A,@0x00 ;設(shè)定P6口,P7口全部為輸出 IOW PORT6 IOW PORT7 MOV A,@0X11 ;關(guān)閉看門狗功能 IOW IOCE MOV A,@0XFF ;LED數(shù)碼管顯示全暗 MOV PORT6,A MOV A,@0X20 ;設(shè)定延時時間 MOV DLY3,A BC PORT7,1 ;P71低電平,繼電器接通,電動機運行 MOV A,@0x0A ;為計數(shù)器置數(shù)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數(shù)碼管顯示全亮 MOV PORT6,A CALL DELAY ;延時 MOV A,@0XFF ;LED數(shù)碼管顯示全暗 MOV PORT6,A CALL DELAY ;延時 DJZ COUNT ;計數(shù)器減1,閃爍10次到否? JMP INT_S1 ;未到,繼續(xù)閃爍 BC ISR,EXIF ;已到,清除中斷響應(yīng)標(biāo)志,為下次中斷作準(zhǔn)備 MOV A,@0x0A ;重新為計數(shù)器置數(shù)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 |