51單片機(jī)6位計(jì)數(shù)器匯編程序
1602液晶6位計(jì)數(shù)器
RSEQUP2.0
RWEQUP2.1
EEQUP2.2
org00h
a_bitequ30h;個(gè)位數(shù)存放處
b_bitequ31h;十位數(shù)存放處
c_bitequ32h;百位數(shù)存放處
d_bitequ33h;千位數(shù)存放處
e_bitequ34h;萬(wàn)位數(shù)存放處
f_bitequ35h;十萬(wàn)位數(shù)存放處
MOVa,#30h;30H的ASCIC碼為0
MOVa_bit,a
MOVb_bit,a
MOVc_bit,a
MOVd_bit,a
MOVe_bit,a
MOVf_bit,a
org0030h
MOVP0,#00000001B;清屏
ACALLENABLE
MOVP0,#00111000B;顯示功能
ACALLENABLE
MOVP0,#00001100B;顯示開(kāi)關(guān)控制
ACALLENABLE
MOVP0,#06H;輸入模式
ACALLENABLE
MOVp0,#80H;第一行的開(kāi)始位置
cALLENABLE
MOVP0,#00000001B;清屏
ACALLENABLE
MOVDPTR,#TABLE1;顯示PASSWORD
CALLWRITE1;到TABLE1取碼?
stlop:acalldisplay;顯示
inca_bit;加1
MOVa,a_bit
cjnea,#3AH,stlop;如果A的值到3AH那么繼續(xù)否則重新
MOVa_bit,#30h;顯示數(shù)送30H(就是顯示0)
incb_bit
MOVa,b_bit
cjnea,#3AH,stlop
MOVb_bit,#30h
incc_bit
MOVa,c_bit
cjnea,#3AH,stlop
MOVc_bit,#30h
incd_bit
MOVa,d_bit
cjnea,#3AH,stlop
MOVd_bit,#30h
ince_bit
MOVa,e_bit
cjnea,#3AH,stlop
MOVe_bit,#30h
incf_bit
MOVa,f_bit
cjnea,#3AH,stlop
MOVf_bit,#30h
ajmpstlop
display:;顯示子程序
MOVP0,#0C9H
ACALLENABLE
MOVA,A_BIT
ACALLWRILTE2
MOVP0,#0C8H;顯示的位置
ACALLENABLE
MOVA,B_BIT;顯示10位數(shù)
ACALLWRILTE2;顯示
MOVP0,#0C7H;數(shù)據(jù)存貯器地址
ACALLENABLE
MOVA,C_BIT
ACALLWRILTE2
MOVP0,#0C6H;數(shù)據(jù)存貯器地址
ACALLENABLE
MOVA,D_BIT
ACALLWRILTE2
MOVP0,#0C5H;數(shù)據(jù)存貯器地址
ACALLENABLE
MOVA,E_BIT
ACALLWRILTE2
MOVP0,#0C4H;數(shù)據(jù)存貯器地址
ACALLENABLE
MOVA,F_BIT
ACALLWRILTE2
;1MS延時(shí)(按12MHz算)
;====================================================
D1MS:MOVR7,#2
DJNZR7,$
RET
WRILTE2:MOVp0,A;顯示
SETBRS
CLRRW
CLRE
CALLDELAY
CALLDELAY3
SETBE
RET
WRITE1:MOVR1,#00H;顯示table中的值
A1:MOVA,R1;到table取碼
MOVCA,@A+DPTR
callWRILTE2;顯示到LCD
INCR1
CJNEA,#00H,A1;是否到00h
RET
ENABLE:CLRRS;送命令
CLRRW
CLRE
ACALLDELAY
SETBE
RET
DELAY:MOVP0,#0FFH
CLRRS
SETBRW
CLRE
NOP
SETBE
JBP0.7,DELAY;判斷忙標(biāo)志
RET
DELAY3:;延時(shí)程序
MOVR7,#255
D1:MOVR6,#25
D2:DJNZR6,D2
DJNZR7,D1
RET
table1:db"1602JISHUQI",00H
end