合泰單片機(jī)定時(shí)器數(shù)碼管顯示
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í)行
;*******************************************************
;中斷服務(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,200
MOV[86H],A
M003:
MOVA,250
MOV[87H],A
M004:
SDZ[87H]
JMPM004
SDZ[86H]
JMPM003
SDZ[85H]
JMPM002
RET
END本文引用地址:http://m.butianyuan.cn/article/201612/324334.htm
評(píng)論