📄 adddec.asm
字号:
;程序名: MCS51实验板配套程序-按键控制+1-1程序,最大255
;电路介绍:显示由一片74164驱动4位共阴数码管
; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
;www.01mcu.net www.01mcu.com 2003/5/11编写
;********************************************************************
xsdat bit p1.4 ;定义驱动74164的数据脚为p1.4
xsclk bit p1.5 ;74164的时钟
gw bit p1.0 ;个位显示控制脚
sw bit p1.1 ;十位
bw bit p1.2 ;百位
qw bit p1.3 ;千位
Sadd bit p3.2 ;+key
sdec bit p3.3 ;-key
sjgw equ 30h ;显示数据存储器
sjsw equ 31h
sjbw equ 32h
sjqw equ 33h
temp equ 35h ;当前数据
;--------------------------------
mov sp,#40h
mov temp,#0
main : setb sadd
jb sadd,n1
lcall addkey ;+键按下
n1: lcall display ;调用显示子程序
jb sdec,n2
lcall deckey ;-键按下
n2: lcall display
ljmp main ;循环显示
;--------------------------------
addkey: mov r0,#5 ;消键抖
addloop: setb sadd
lcall display
jnb sadd,addloop ;键一直=0,循环等待抬起
djnz r0,addloop
inc temp ;当前数据+1
acall t2_10 ;十进制转换
ret
;---------------------------------
deckey: mov r0,#5 ;消键抖
decloop: setb sdec
lcall display
jnb sdec,decloop ;键一直=0,循环等待抬起
djnz r0,decloop
dec temp ;当前数据-1
acall t2_10 ;十进制转换
ret
;转换成两位十进制
t2_10: mov b,#100
mov a,temp
div ab
mov sjbw,a ;提取百位
mov a,b
mov b,#10
div ab
mov sjsw,a ;提取十位
mov sjgw,b ;个位
ret
;************************************************************************
;74164显示程序,使用RS1=1,RS0=0的1区
;---------------------------------------------------------
display: PUSH ACC ;保存ACC
push psw
clr rs1
setb rs0 ;使用第一区工作寄存器
mov dptr,#xstab
mov a,sjgw ;取得数据
movc a,@a+dptr ;提取字模
acall dsout ;调用送出子程序
clr gw
acall ds1ms ;调用显示1ms延时程序
setb gw
mov a,sjsw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr sw
acall ds1ms ;显示1ms
setb sw
mov a,sjbw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr bw
acall ds1ms ;显示1ms
setb bw
mov a,sjqw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr qw
acall ds1ms ;显示1ms
setb qw
pop psw
POP ACC ;出栈
ret ;返回调用
;---送出循环----------
dsout:
MOV R0,#8 ;传送一个字节8位
dSLOOP: RLC A ;左移
MOV xsdat,C ;送数据到数据口
SETB xsclk ;送一时钟
CLR xsclk
DJNZ R0,dSLOOP
RET
;---显示延时----------
ds1ms: mov r1,#10
ds1lo: mov r2,#100
djnz r2,$
djnz r1,ds1lo
ret ;延时返回
;************************************************************************
;显示字表(共阴)
xstab: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
DB 66H,6DH,7DH,07H ;"4","5","6","7"
DB 7FH,6FH,77H,7cH ;"8","9","A","B"
DB 39H,5eh,79h,71h ;"C","D","E","F"
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -