📄 display.asm
字号:
;程序名: MCS51实验板配套程序-显示部分
;电路介绍:显示由一片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/4/18编写
;********************************************************************
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 ;千位
sjgw equ 30h ;显示数据存储器
sjsw equ 31h
sjbw equ 32h
sjqw equ 33h
;--------------------------------
mov sp,#40h
mov p1,#0fh
mov p0,#55h
main : ;显示1234这个数
mov sjgw,#4 ;个位显示4
mov sjsw,#3 ;十位显示3
mov sjbw,#2 ;百位显示2
mov sjqw,#1 ;千位显示1
abc: lcall display ;调用显示子程序
ljmp abc ;循环显示
;************************************************************************
;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 + -