新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 松翰單片機外部中斷

        松翰單片機外部中斷

        作者: 時間:2016-11-30 來源:網絡 收藏
        chip sn8f27e65
        //{{SONIX_CODE_OPTION
        //完整源碼下載:http://www.51hei.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 ;關閉看門狗
        .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;數據
        ORG 0
        TEMP DS 1
        ACCBUF DS 1
        PflagBUF DS 1
        K DS 1
        .CONST
        K1 EQU K.0;標志位
        .CODE;程序代碼

        ORG 0000H
        JMP A1
        ORG 09H;外部中斷入口
        JMP INT00
        A1: MOV A,#02H;設置中斷觸發方式為低電平觸發
        B0MOV PEDGE,A
        B0BCLR FP00IRQ;清中斷標志
        B0BSET FP00IEN;開中斷
        B0BSET FGIE;開總中斷
        B0BSET K1 ;設置標志
        JMP $
        ;*************************************************
        ;中斷服務程序
        ;*************************************************
        INT00:
        B0BCLR FP00IEN;關中斷
        B0BCLR FGIE;禁止中斷
        B0XCH A,ACCBUF;壓棧
        B0MOV A,PFLAG;
        B0MOV PFLAGBUF,A;
        B0BTS1 FP00IRQ;判斷是否真的發生中斷
        JMP INT01

        B0BTS1 K1;判斷標志來控制LED狀態標志為1LED亮
        JMP K01
        B0BCLR K1;標志清0
        B0BSET P0M.3;設置P0.3為輸出模式
        B0BCLR P0.3;點亮LED
        ;*******************************************
        ;按鍵去抖
        ;*******************************************
        K00: CALL M001;延時
        B0BCLR P0M.0;設置P0.0為輸入模式
        B0BSET P0UR.0;設置P0.0上拉
        B0BTS1 P0.0;判斷P0.0是否為0是繼續否跳過下一條指令
        JMP K00

        CALL M001
        B0BCLR P0M.0
        B0BSET P0UR.0
        B0BTS1 P0.0;判斷P0.0是否為0是繼續否跳過下一條指令
        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是繼續否跳過下一條指令
        JMP K02
        CALL M001
        B0BCLR P0M.0
        B0BSET P0UR.0
        B0BTS1 P0.0;判斷P4.0是否為1是繼續否跳過下一條指令
        JMP K02
        INT01:
        B0MOV A,PFLAGBUF;彈棧
        B0MOV PFLAG,A
        B0XCH A,ACCBUF
        B0BCLR FP00IRQ
        B0BSET FP00IEN
        B0BSET FGIE
        RETI
        ;*********************************************
        ;延時子程序
        ;*********************************************
        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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 左权县| 翁牛特旗| 洛浦县| 措勤县| 承德市| 宽甸| 南木林县| 长垣县| 财经| 惠东县| 油尖旺区| 兴化市| 汨罗市| 周至县| 南投市| 彰化市| 宁城县| 禹州市| 始兴县| 无棣县| 仙桃市| 安化县| 滨州市| 丰县| 侯马市| 望都县| 福贡县| 大关县| 桃江县| 陈巴尔虎旗| 贵溪市| 池州市| 灵武市| 湖口县| 巴塘县| 霍城县| 商城县| 壤塘县| 达尔| 资讯 | 德江县|