專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

松翰單片機(jī)外部中斷

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年03月08日   【字體:


 chip sn8f27e65
//{{SONIX_CODE_OPTION
//完整源碼下載: http://www.torrancerestoration.com/f/shwbzd.rar
 .Code_Option WDT_CLK  Flosc/4
 .Code_Option Reset_Pin P04
 .Code_Option LVD  LVD_Max  ; 3.3V Reset
 .Code_Option Watch_Dog Disable  ;關(guān)閉看門狗
 .Code_Option Low_Fcpu Flosc/1
 .Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator
 .Code_Option High_Fcpu Fhosc/1
 .Code_Option Security Enable
 .Code_Option Noise_Filter Enable
//}}SONIX_CODE_OPTION
.DATA;數(shù)據(jù)
 ORG  0
 TEMP  DS  1
 ACCBUF  DS  1
 PflagBUF DS  1
 K  DS 1
.CONST
 K1 EQU K.0;標(biāo)志位
.CODE;程序代碼
 
 ORG 0000H
 JMP A1
 ORG 09H;外部中斷入口
 JMP INT00
A1: MOV A,#02H;設(shè)置中斷觸發(fā)方式為低電平觸發(fā)
 B0MOV PEDGE,A
 B0BCLR FP00IRQ;清中斷標(biāo)志
 B0BSET FP00IEN;開(kāi)中斷
 B0BSET FGIE;開(kāi)總中斷
 B0BSET K1 ;設(shè)置標(biāo)志
 JMP $
;*************************************************
;中斷服務(wù)程序
;*************************************************
INT00:
 B0BCLR FP00IEN;關(guān)中斷
 B0BCLR FGIE;禁止中斷
 B0XCH A,ACCBUF;壓棧
 B0MOV A,PFLAG;
 B0MOV PFLAGBUF,A;
 B0BTS1 FP00IRQ;判斷是否真的發(fā)生中斷
 JMP INT01
 
 B0BTS1 K1;判斷標(biāo)志來(lái)控制LED狀態(tài)標(biāo)志為1LED亮
 JMP K01
 B0BCLR K1;標(biāo)志清0
 B0BSET P0M.3;設(shè)置P0.3為輸出模式
 B0BCLR P0.3;點(diǎn)亮LED
;*******************************************
;按鍵去抖
;*******************************************
K00: CALL M001;延時(shí)
 B0BCLR P0M.0;設(shè)置P0.0為輸入模式
 B0BSET P0UR.0;設(shè)置P0.0上拉
 B0BTS1 P0.0;判斷P0.0是否為0是繼續(xù)否跳過(guò)下一條指令  
 JMP K00
 
 CALL M001
 B0BCLR P0M.0
 B0BSET P0UR.0
 B0BTS1 P0.0;判斷P0.0是否為0是繼續(xù)否跳過(guò)下一條指令  
 JMP K00
 JMP INT01
K01:
 B0BTS0 K1
 JMP INT01
 B0BSET K1
 B0BSET P0M.3
 B0BSET P0.3
K02:
 CALL M001
 B0BCLR P0M.0
 B0BSET P0UR.0
 B0BTS1 P0.0;判斷P4.0是否為1是繼續(xù)否跳過(guò)下一條指令  
 JMP K02
 CALL M001
 B0BCLR P0M.0
 B0BSET P0UR.0
 B0BTS1 P0.0;判斷P4.0是否為1是繼續(xù)否跳過(guò)下一條指令  
 JMP K02
INT01:
 B0MOV A,PFLAGBUF;彈棧
 B0MOV PFLAG,A
 B0XCH A,ACCBUF
 B0BCLR FP00IRQ
 B0BSET FP00IEN
 B0BSET FGIE
 RETI
;*********************************************
;延時(shí)子程序
;*********************************************
M001: MOV A,#200
 MOV 50H,A
M002: MOV A,#250
 MOV 51H,A
M003: DECMS 51H
 JMP M003
 DECMS 50H
 JMP M002
 RET
 ENDP
 

關(guān)閉窗口

相關(guān)文章