新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 合泰單片機(jī)中斷嵌套

        合泰單片機(jī)中斷嵌套

        作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

        ;*************************************************
        ;外部中斷0服務(wù)子程序
        ;*************************************************
        ZD01:;進(jìn)入中斷自動(dòng)關(guān)閉總中斷
        SETEMI;打開總中斷允許嵌套
        CLRINT0E;關(guān)閉外部中斷0避免為完成操作2次中斷
        MOV[0F2H],A;壓棧ACC到0F2H
        MOVA,STATUS;
        MOV[0F3H],A;壓棧status標(biāo)志寄存器到0F3H
        INC[8DH];個(gè)位數(shù)碼管加1
        MOVA,10;
        SUBA,[8DH];用10減個(gè)位數(shù)碼管的數(shù)判斷是否相等
        SNZZ;結(jié)果為0相等Z為1跳過一條指令否則z為1繼續(xù)執(zhí)行
        JMPA2;Z=1結(jié)果不等返回繼續(xù)加1
        MOVA,0;Z=0結(jié)果相等
        MOV[8DH],A;存0繼續(xù)顯示
        INC[8CH];十位數(shù)碼管加1
        MOVA,10;用10減十位數(shù)碼管的數(shù)判斷是否相等
        SUBA,[8CH];
        SNZZ;結(jié)果為0相等Z為1跳過一條指令否則z為1繼續(xù)執(zhí)行
        JMPA2;Z=1結(jié)果不等返回繼續(xù)加1
        MOVA,0;Z=0結(jié)果相等
        MOV[8CH],A;存0繼續(xù)顯示
        INC[8BH];百位數(shù)碼管加1
        MOVA,10;
        SUBA,[8BH];用10減百位數(shù)碼管的數(shù)判斷是否相等
        SNZZ;結(jié)果為0相等Z為1跳過一條指令否則z為1繼續(xù)執(zhí)行
        JMPA2;Z=1結(jié)果不等返回繼續(xù)加1
        MOVA,0;Z=0結(jié)果相等
        MOV[8BH],A;存0繼續(xù)顯示
        INC[8AH];千位數(shù)碼管加1
        MOVA,10;用10減千位數(shù)碼管的數(shù)判斷是否相等
        SUBA,[8AH];
        SNZZ;結(jié)果為0相等Z為1跳過一條指令否則z為1繼續(xù)執(zhí)行
        JMPA2;Z=1結(jié)果不等返回繼續(xù)加1
        MOVA,0;Z=0結(jié)果相等
        MOV[8AH],A;存0繼續(xù)顯示
        JMPA2;已經(jīng)到9999清為0000返回反復(fù)執(zhí)行
        A2:
        CALLM001
        SNZPA.3;判斷PA3是否為高電平(去抖)
        JMPA2;是低電平則返回判斷
        CALLM001;延時(shí)防止抖動(dòng)
        SNZPA.3;
        JMPA2;
        MOVA,[0F3H];彈棧后進(jìn)先出先進(jìn)后出
        MOVSTATUS,A;彈棧0F1H的數(shù)到標(biāo)志寄存器
        MOVA,[0F2H];彈棧0F0H的數(shù)到acc
        CLRINT0F;清中斷標(biāo)志
        SETINT0E;使能外部中斷
        RETI;中斷返回
        ;*******************************************************
        ;中斷服務(wù)子程序
        ;*******************************************************
        ZD1:
        MOV[0F0H],A;壓棧ACC到0F0H
        MOVA,STATUS;
        MOV[0F1H],A;壓棧status標(biāo)志寄存器到0F1H
        CLRPC;清PC(清屏幕)
        MOVA,Q1;數(shù)據(jù)表地址
        CLRTBHP;清數(shù)據(jù)表地址高位否則出錯(cuò)
        ADDA,IAR0;利用間接寄存器找到要顯示段碼所在數(shù)據(jù)表的地址
        MOVTBLP,A;表格指針寄存器TBLP
        TABRDPD;查表并將數(shù)據(jù)存到PD口寄存器
        MOVA,[80H];位碼寄存器
        MOVPC,A;將位碼寄存器的數(shù)存到PC口寄存器
        ;段碼和位碼的數(shù)都有了所以數(shù)碼管被點(diǎn)亮
        INCMP0;間接寄存器指針加1指向下一個(gè)段碼寄存器
        RL[80H];左移位碼寄存器控制下一個(gè)數(shù)碼管
        SNZ[80H].5;判斷是否控制完4個(gè)數(shù)碼管
        JMPZD2;退出中斷繼續(xù)
        MOVA,1;是則從新初始化寄存器數(shù)據(jù)
        MOV[80H],A;
        MOVA,8AH;千位數(shù)碼管對應(yīng)寄存器
        MOVMP0,A;存到間接寄存器0
        ZD2:
        MOVA,[0F1H];彈棧后進(jìn)先出先進(jìn)后出
        MOVSTATUS,A;彈棧0F1H的數(shù)到標(biāo)志寄存器
        MOVA,[0F0H];彈棧0F0H的數(shù)到acc
        CLRMF0F;清多功能標(biāo)志
        CLRT2AF;清定時(shí)器2比較器A標(biāo)志
        RETI;中斷返回
        ;**************************************
        ;延時(shí)子程序
        ;**************************************
        M001:
        MOVA,1
        MOV[85H],A
        M002:
        MOVA,10
        MOV[86H],A
        M003:
        MOVA,250
        MOV[87H],A
        M004:
        SDZ[87H]
        JMPM004
        SDZ[86H]
        JMPM003
        SDZ[85H]
        JMPM002
        RET
        END

        本文引用地址:http://www.104case.com/article/201612/324335.htm

        上一頁 1 2 下一頁

        關(guān)鍵詞: 合泰單片機(jī)中斷嵌

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 全椒县| 溧水县| 武威市| 平和县| 丰都县| 郎溪县| 历史| 育儿| 绥芬河市| 琼中| 普洱| 新河县| 左权县| 虎林市| 鹰潭市| 江西省| 衡东县| 博爱县| 丘北县| 通山县| 蓬莱市| 九江市| 滦平县| 柯坪县| 沙洋县| 新巴尔虎左旗| 通州市| 静宁县| 上虞市| 双桥区| 广德县| 墨竹工卡县| 桂林市| 铁岭县| 舞阳县| 蕲春县| 陇川县| 沙雅县| 夏河县| 扶沟县| 鹿邑县|