<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          合泰單片機中斷嵌套

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

          ;*************************************************
          ;外部中斷0服務(wù)子程序
          ;*************************************************
          ZD01:;進入中斷自動關(guān)閉總中斷
          SETEMI;打開總中斷允許嵌套
          CLRINT0E;關(guān)閉外部中斷0避免為完成操作2次中斷
          MOV[0F2H],A;壓棧ACC到0F2H
          MOVA,STATUS;
          MOV[0F3H],A;壓棧status標(biāo)志寄存器到0F3H
          INC[8DH];個位數(shù)碼管加1
          MOVA,10;
          SUBA,[8DH];用10減個位數(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;延時防止抖動
          SNZPA.3;
          JMPA2;
          MOVA,[0F3H];彈棧后進先出先進后出
          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ù)表地址高位否則出錯
          ADDA,IAR0;利用間接寄存器找到要顯示段碼所在數(shù)據(jù)表的地址
          MOVTBLP,A;表格指針寄存器TBLP
          TABRDPD;查表并將數(shù)據(jù)存到PD口寄存器
          MOVA,[80H];位碼寄存器
          MOVPC,A;將位碼寄存器的數(shù)存到PC口寄存器
          ;段碼和位碼的數(shù)都有了所以數(shù)碼管被點亮
          INCMP0;間接寄存器指針加1指向下一個段碼寄存器
          RL[80H];左移位碼寄存器控制下一個數(shù)碼管
          SNZ[80H].5;判斷是否控制完4個數(shù)碼管
          JMPZD2;退出中斷繼續(xù)
          MOVA,1;是則從新初始化寄存器數(shù)據(jù)
          MOV[80H],A;
          MOVA,8AH;千位數(shù)碼管對應(yīng)寄存器
          MOVMP0,A;存到間接寄存器0
          ZD2:
          MOVA,[0F1H];彈棧后進先出先進后出
          MOVSTATUS,A;彈棧0F1H的數(shù)到標(biāo)志寄存器
          MOVA,[0F0H];彈棧0F0H的數(shù)到acc
          CLRMF0F;清多功能標(biāo)志
          CLRT2AF;清定時器2比較器A標(biāo)志
          RETI;中斷返回
          ;**************************************
          ;延時子程序
          ;**************************************
          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.ex-cimer.com/article/201612/324335.htm

          上一頁 1 2 下一頁

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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();