📄 display.lst
字号:
A51 MACRO ASSEMBLER DISPLAY 30/07/03 15:40:24 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN DISPLAY.OBJ
ASSEMBLER INVOKED BY: C:\C51EVAL\BIN\A51.EXE DISPLAY.A51 DB EP
LOC OBJ LINE SOURCE
1 ;程序名: MCS51实验板配套程序-显示部分
2 ;电路介绍:显示由一片74164驱动4位共阴数码管
3 ; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
4 ;www.01mcu.net www.01mcu.com 2003/4/18编写
5 ;********************************************************************
0094 6 xsdat bit p1.4 ;定义驱动74164的数据脚为p1.4
0095 7 xsclk bit p1.5 ;74164的时钟
0090 8 gw bit p1.0 ;个位显示控制脚
0091 9 sw bit p1.1 ;十位
0092 10 bw bit p1.2 ;百位
0093 11 qw bit p1.3 ;千位
0030 12 sjgw equ 30h ;显示数据存储器
0031 13 sjsw equ 31h
0032 14 sjbw equ 32h
0033 15 sjqw equ 33h
16 ;--------------------------------
0000 758140 17 mov sp,#40h
0003 75900F 18 mov p1,#0fh
0006 758055 19 mov p0,#55h
0009 20 main : ;显示1234这个数
0009 753004 21 mov sjgw,#4 ;个位显示4
000C 753103 22 mov sjsw,#3 ;十位显示3
000F 753202 23 mov sjbw,#2 ;百位显示2
0012 753301 24 mov sjqw,#1 ;千位显示1
25
0015 12001B 26 abc: lcall display ;调用显示子程序
0018 020015 27 ljmp abc ;循环显示
28
29 ;************************************************************************
30 ;74164显示程序,使用RS1=1,RS0=0的1区
31 ;---------------------------------------------------------
001B C0E0 32 display: PUSH ACC ;保存ACC
001D C0D0 33 push psw
001F C2D4 34 clr rs1
0021 D2D3 35 setb rs0 ;使用第一区工作寄存器
0023 90006C 36 mov dptr,#xstab
0026 E530 37 mov a,sjgw ;取得数据
0028 93 38 movc a,@a+dptr ;提取字模
0029 1157 39 acall dsout ;调用送出子程序
002B C290 40 clr gw
002D 1163 41 acall ds1ms ;调用显示1ms延时程序
002F D290 42 setb gw
0031 E531 43 mov a,sjsw
0033 93 44 movc a,@a+dptr ;提取字模
0034 1157 45 acall dsout ;送出
0036 C291 46 clr sw
0038 1163 47 acall ds1ms ;显示1ms
003A D291 48 setb sw
003C E532 49 mov a,sjbw
003E 93 50 movc a,@a+dptr ;提取字模
003F 1157 51 acall dsout ;送出
0041 C292 52 clr bw
0043 1163 53 acall ds1ms ;显示1ms
0045 D292 54 setb bw
0047 E533 55 mov a,sjqw
0049 93 56 movc a,@a+dptr ;提取字模
004A 1157 57 acall dsout ;送出
004C C293 58 clr qw
A51 MACRO ASSEMBLER DISPLAY 30/07/03 15:40:24 PAGE 2
004E 1163 59 acall ds1ms ;显示1ms
0050 D293 60 setb qw
0052 D0D0 61 pop psw
0054 D0E0 62 POP ACC ;出栈
0056 22 63 ret ;返回调用
64 ;---送出循环----------
0057 65 dsout:
0057 7808 66 MOV R0,#8 ;传送一个字节8位
0059 33 67 dSLOOP: RLC A ;右移
005A 9294 68 MOV xsdat,C ;送数据到数据口
005C D295 69 SETB xsclk ;送一时钟
005E C295 70 CLR xsclk
0060 D8F7 71 DJNZ R0,dSLOOP
0062 22 72 RET
73 ;---显示延时----------
0063 790A 74 ds1ms: mov r1,#10
0065 7A64 75 ds1lo: mov r2,#100
0067 DAFE 76 djnz r2,$
0069 D9FA 77 djnz r1,ds1lo
006B 22 78 ret ;延时返回
79 ;************************************************************************
80 ;显示字表(共阴)
006C 81 xstab: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
0070 82 DB 66H,6DH,7DH,07H ;"4","5","6","7"
0074 83 DB 7FH,6FH,77H,7cH ;"8","9","A","B"
0078 84 DB 39H,5eh,79h,71h ;"C","D","E","F"
85
86 end
A51 MACRO ASSEMBLER DISPLAY 30/07/03 15:40:24 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ABC. . . . . . . . C ADDR 0015H A
ACC. . . . . . . . D ADDR 00E0H A
BW . . . . . . . . B ADDR 0090H.2 A
DISPLAY. . . . . . C ADDR 001BH A
DS1LO. . . . . . . C ADDR 0065H A
DS1MS. . . . . . . C ADDR 0063H A
DSLOOP . . . . . . C ADDR 0059H A
DSOUT. . . . . . . C ADDR 0057H A
GW . . . . . . . . B ADDR 0090H.0 A
MAIN . . . . . . . C ADDR 0009H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
PSW. . . . . . . . D ADDR 00D0H A
QW . . . . . . . . B ADDR 0090H.3 A
RS0. . . . . . . . B ADDR 00D0H.3 A
RS1. . . . . . . . B ADDR 00D0H.4 A
SJBW . . . . . . . N NUMB 0032H A
SJGW . . . . . . . N NUMB 0030H A
SJQW . . . . . . . N NUMB 0033H A
SJSW . . . . . . . N NUMB 0031H A
SP . . . . . . . . D ADDR 0081H A
SW . . . . . . . . B ADDR 0090H.1 A
XSCLK. . . . . . . B ADDR 0090H.5 A
XSDAT. . . . . . . B ADDR 0090H.4 A
XSTAB. . . . . . . C ADDR 006CH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -