合泰單片機(jī)中斷嵌套
;*************************************************
;外部中斷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跳過(guò)一條指令否則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跳過(guò)一條指令否則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跳過(guò)一條指令否則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跳過(guò)一條指令否則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ù)碼管對(duì)應(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://2s4d.com/article/201612/324335.htm
評(píng)論