www.pudn.com > 单片机实验板程序.rar > 205.asm, change:2004-03-21,size:1197b


;两位数码管显示00--99依次循环 
 
org 0000h 
 
a_bit equ 20h ;数码管个位数存放内存位置 
b_bit equ 21h ;数码管十位数存放内存位置 
temp equ 22h ;计数器数值存放内存位置 
 
star: mov temp,#0 ;初始化计数器,从0开始 
stlop: acall display;调用显示子程序 
inc temp;对计数器加1 
mov a,temp 
cjne a,#100,next ;判断计数器是否满100? 
mov temp,#0;满100就清零重新开始 
next: ljmp stlop;不满就循环执行 
 
;显示子程序 
display: mov a,temp ;将temp中的十六进制数转换成10进制  
mov b,#10 ;10进制/10=10进制 
div ab 
mov b_bit,a ;十位在a 
mov a_bit,b ;个位在b 
 
MOV DPTR,#NUMTAB;指定查表启始地址 
mov r0,#4  
dpl1: mov r1,#250 ; 
dplop: mov a,a_bit ;取个位数 
MOVC A,@A+DPTR ;查个位数的7段代码 
mov p0,a ;送出个位的7段代码 
clr p2.7 ;开个位显示 
acall d1ms ;显示162微秒 
setb p2.7;关闭个位显示,防止鬼影 
mov a,b_bit ;取十位数 
MOVC A,@A+DPTR ;查十位数的7段代码 
mov p0,a ;送出十位的7段代码 
clr p2.6 ;开十位显示 
acall d1ms ;显示162微秒 
setb p2.6;关闭十位显示,防止鬼影 
djnz r1,dplop ;循环执行250次 
djnz r0,dpl1 ;循环执行250X4=1000次 
ret 
;2+2X80=162微秒,延时按12MHZ计算 
D1MS: MOV R7,#80  
DJNZ R7,$ 
RET 
 
;实验板上的7段数码管0~9数字的共阴显示代码 
NUMTAB:DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH 
 
end