|
org 00h a_bit equ 30h ;個位數(shù)存放處 b_bit equ 31h ;十位數(shù)存放處 c_bit equ 32h ;百位數(shù)存放處 d_bit equ 33h ;千位數(shù)存放處 e_bit equ 34h ;萬位數(shù)存放處 f_bit equ 35h ;十萬位數(shù)存放處 org 0000h ajmp star org 0030h star: MOV a,#00h ;;清0 MOV a_bit,a MOV b_bit,a MOV c_bit,a MOV d_bit,a MOV e_bit,a MOV f_bit,a stlop: acall display ;顯示 inc a_bit MOV a,a_bit cjne a,#10,stlop; MOV a_bit,#00h inc b_bit MOV a,b_bit cjne a,#10,stlop MOV b_bit,#00h inc c_bit MOV a,c_bit cjne a,#10,stlop MOV c_bit,#00h inc d_bit MOV a,d_bit cjne a,#10,stlop MOV d_bit,#00h inc e_bit MOV a,e_bit cjne a,#10,stlop MOV e_bit,#00h inc f_bit MOV a,f_bit cjne a,#10,stlop MOV f_bit,#00h ajmp stlop ;顯示子程序 display: MOV dptr,#numtab ;指定查表啟始地址 MOV r0,#4 dpl1: MOV r1,#250 ;顯示1000次 dplop: MOV a,a_bit ;取個位數(shù) MOVC A,@A+DPTR ;查個位數(shù)的7段代碼 MOV p0,a ;送出個位的7段代碼 clr p2.7 ;開個位顯示 acall d1ms ;顯示1ms setb p2.7 MOV a,b_bit ;取十位數(shù) MOVC A,@A+DPTR ;查十位數(shù)的7段代碼 MOV p0,a ;送出十位的7段代碼 clr p2.6 ;開十位顯示 acall d1ms ;顯示1ms setb p2.6 MOV a,c_bit ;取百位數(shù) MOVC A,@A+DPTR ;查百位數(shù)的7段代碼 MOV p0,a ;送出百位的7段代碼 clr p2.5 ;開百位顯示 acall d1ms ;顯示1ms setb p2.5 MOV a,d_bit ;取千位數(shù) MOVC A,@A+DPTR ;查千位數(shù)的7段代碼 MOV p0,a ;送出千位的7段代碼 clr p2.4 ;開千位顯示 acall d1ms ;顯示1ms setb p2.4 MOV a,e_bit ;取萬位數(shù) MOVC A,@A+DPTR ;查萬位數(shù)的7段代碼 MOV p0,a ;送出萬位的7段代碼 clr p2.3 ;開萬位顯示 acall d1ms ;顯示1ms setb p2.3 MOV a,f_bit ;取十萬位數(shù) MOVC A,@A+DPTR ;查十萬位數(shù)的7段代碼 MOV p0,a ;送出十萬位的7段代碼 clr p2.2 ;開十萬位顯示 acall d1ms ;顯示1ms setb p2.2 djnz r1,dplop ;100次沒完循環(huán) djnz r0,dpl1 ;4個100次沒完循環(huán) ret ;1MS延時(按12MHZ算) ;==================================================== D1MS: MOV R7,#2 DJNZ R7,$ RET ;7段數(shù)碼管各劃的數(shù)字排列表 numtab: db 0fch,30h,0e5h,75h,39h,5dh,0ddh,34h,0fdh,7dh ;0 1 2 3 4 5 6 7 8 9 end |