ORG 0000H START: MOV SP,#40H MOV R3,#0 ;设置显示的第一个数字 SETB P2.6 ;开启74HC573的LE端 U1 数码管LED的段选端 SETB P2.7 ;让第2个74hc573处于直通状态 MOV P0,#0 ;开启所有数码管的位选 CLR P2.7 ;锁存,保持第2个74hc573的输出数据保持不变 MOV DPTR,#TAB ;将字型码表格首地址送数据指针 NEXT: MOV A,R3 ;设定要显示的第一个数字 ANL A,#0FH ;屏蔽高半字节 MOVC A,@A+DPTR MOV P0,A ;送显示器 LCALL DEL_05S ;停留0.5秒 INC R3 ;修改要显示的数字 CJNE R3,#0FH,NEXT ;若0-F还未显示一遍,则继续显示下一个数字 SJMP START ;-------------------------------------------------------------------------- ORG 1000H ;0.5秒延时程序 DEL_05S: MOV TMOD,#10H ;定时器1、方式1、定时状态 MOV TL1,#0B0H MOV TH1,#3CH ;送50ms定时初值 MOV R2,#0AH ;设置软计数器,使10*5ms=0.5s SETB TR1 ;启动定时器1 LOOP: JNB TF1,$ ;判断基时是否到 MOV TL1,#0B0H MOV TH1,#3CH ;再赋初值 CLR TF1 ;清溢出标志 DJNZ R2,LOOP ;判断0.5s是否到 CLR TR1 ;关闭定时器1 RET ;定时结束 ;-------------------------------------------------------------------------- TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH DB 77H,7CH,39H,5EH,79H,71H
|