adddec.lst

来自「01单片机网站51单片机开发板全部配套程序」· LST 代码 · 共 178 行

LST
178
字号
A51 MACRO ASSEMBLER  ADDDEC                                                                 11/05/03 22:24:07 PAGE     1


DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN ADDDEC.OBJ
ASSEMBLER INVOKED BY: C:\C51EVAL\BIN\A51.EXE ADDDEC.A51 DB EP

LOC  OBJ            LINE     SOURCE

                       1     ;程序名:  MCS51实验板配套程序-按键控制+1-1程序,最大255
                       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/5/11编写
                       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    ;千位
  00B2                12     Sadd  bit p3.2    ;+key
  00B3                13     sdec  bit p3.3    ;-key
  0030                14     sjgw  equ 30h     ;显示数据存储器
  0031                15     sjsw  equ 31h
  0032                16     sjbw  equ 32h
  0033                17     sjqw  equ 33h
  0035                18     temp  equ 35h     ;当前数据
                      19     ;--------------------------------
0000 758140           20               mov sp,#40h
0003 753500           21               mov temp,#0
0006 D2B2             22     main :    setb sadd
0008 20B203           23               jb sadd,n1
000B 12001D           24               lcall addkey    ;+键按下
000E 120053           25     n1:       lcall display   ;调用显示子程序
0011 20B303           26               jb sdec,n2
0014 12002E           27               lcall deckey    ;-键按下
0017 120053           28     n2:       lcall display
001A 020006           29               ljmp main       ;循环显示
                      30               
                      31     ;--------------------------------
001D 7805             32     addkey:   mov r0,#5        ;消键抖
001F D2B2             33     addloop:  setb sadd
0021 120053           34               lcall display
0024 30B2F8           35               jnb sadd,addloop ;键一直=0,循环等待抬起
0027 D8F6             36               djnz r0,addloop
0029 0535             37               inc temp         ;当前数据+1
002B 113F             38               acall t2_10      ;十进制转换
002D 22               39               ret
                      40     ;---------------------------------
002E 7805             41     deckey:   mov r0,#5        ;消键抖
0030 D2B3             42     decloop:  setb sdec
0032 120053           43               lcall display
0035 30B3F8           44               jnb sdec,decloop ;键一直=0,循环等待抬起
0038 D8F6             45               djnz r0,decloop
003A 1535             46               dec temp         ;当前数据-1
003C 113F             47               acall t2_10      ;十进制转换
003E 22               48               ret         
                      49     ;转换成两位十进制
003F 75F064           50     t2_10:    mov b,#100
0042 E535             51               mov a,temp
0044 84               52               div ab
0045 F532             53               mov sjbw,a       ;提取百位
0047 E5F0             54               mov a,b
0049 75F00A           55               mov b,#10
004C 84               56               div ab
004D F531             57               mov sjsw,a       ;提取十位
004F 85F030           58               mov sjgw,b       ;个位
A51 MACRO ASSEMBLER  ADDDEC                                                                 11/05/03 22:24:07 PAGE     2

0052 22               59               ret
                      60     ;************************************************************************
                      61     ;74164显示程序,使用RS1=1,RS0=0的1区
                      62     ;---------------------------------------------------------
0053 C0E0             63     display:  PUSH ACC             ;保存ACC
0055 C0D0             64               push psw
0057 C2D4             65               clr rs1
0059 D2D3             66               setb rs0             ;使用第一区工作寄存器 
005B 9000A4           67               mov dptr,#xstab    
005E E530             68               mov a,sjgw           ;取得数据
0060 93               69               movc a,@a+dptr       ;提取字模
0061 118F             70               acall dsout          ;调用送出子程序
0063 C290             71              clr gw
0065 119B             72               acall ds1ms          ;调用显示1ms延时程序
0067 D290             73              setb gw
0069 E531             74               mov a,sjsw
006B 93               75               movc a,@a+dptr        ;提取字模
006C 118F             76               acall dsout          ;送出
006E C291             77              clr sw
0070 119B             78               acall ds1ms          ;显示1ms  
0072 D291             79              setb sw        
0074 E532             80               mov a,sjbw
0076 93               81               movc a,@a+dptr        ;提取字模
0077 118F             82               acall dsout          ;送出
0079 C292             83              clr bw
007B 119B             84               acall ds1ms          ;显示1ms 
007D D292             85              setb bw 
007F E533             86               mov a,sjqw
0081 93               87               movc a,@a+dptr        ;提取字模
0082 118F             88               acall dsout          ;送出
0084 C293             89              clr qw
0086 119B             90               acall ds1ms          ;显示1ms
0088 D293             91              setb qw
008A D0D0             92               pop psw
008C D0E0             93               POP ACC              ;出栈
008E 22               94               ret                  ;返回调用
                      95       ;---送出循环----------
008F                  96     dsout:    
008F 7808             97               MOV R0,#8            ;传送一个字节8位
0091 33               98     dSLOOP:   RLC A                ;右移
0092 9294             99               MOV xsdat,C          ;送数据到数据口
0094 D295            100               SETB xsclk           ;送一时钟
0096 C295            101               CLR xsclk
0098 D8F7            102               DJNZ R0,dSLOOP
009A 22              103               RET         
                     104        ;---显示延时---------- 
009B 790A            105     ds1ms:    mov r1,#10
009D 7A64            106     ds1lo:    mov r2,#100
009F DAFE            107               djnz r2,$
00A1 D9FA            108               djnz r1,ds1lo
00A3 22              109               ret                  ;延时返回
                     110     ;************************************************************************
                     111     ;显示字表(共阴)
00A4                 112     xstab:    DB  3FH,06H,5BH,4FH    ;"0","1","2","3"
00A8                 113               DB  66H,6DH,7DH,07H    ;"4","5","6","7"
00AC                 114               DB  7FH,6FH,77H,7cH    ;"8","9","A","B" 
00B0                 115               DB  39H,5eh,79h,71h    ;"C","D","E","F"
                     116     
                     117     end 
A51 MACRO ASSEMBLER  ADDDEC                                                                 11/05/03 22:24:07 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
ADDKEY . . . . . .  C ADDR   001DH   A   
ADDLOOP. . . . . .  C ADDR   001FH   A   
B. . . . . . . . .  D ADDR   00F0H   A   
BW . . . . . . . .  B ADDR   0090H.2 A   
DECKEY . . . . . .  C ADDR   002EH   A   
DECLOOP. . . . . .  C ADDR   0030H   A   
DISPLAY. . . . . .  C ADDR   0053H   A   
DS1LO. . . . . . .  C ADDR   009DH   A   
DS1MS. . . . . . .  C ADDR   009BH   A   
DSLOOP . . . . . .  C ADDR   0091H   A   
DSOUT. . . . . . .  C ADDR   008FH   A   
GW . . . . . . . .  B ADDR   0090H.0 A   
MAIN . . . . . . .  C ADDR   0006H   A   
N1 . . . . . . . .  C ADDR   000EH   A   
N2 . . . . . . . .  C ADDR   0017H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
QW . . . . . . . .  B ADDR   0090H.3 A   
RS0. . . . . . . .  B ADDR   00D0H.3 A   
RS1. . . . . . . .  B ADDR   00D0H.4 A   
SADD . . . . . . .  B ADDR   00B0H.2 A   
SDEC . . . . . . .  B ADDR   00B0H.3 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   
T2_10. . . . . . .  C ADDR   003FH   A   
TEMP . . . . . . .  N NUMB   0035H   A   
XSCLK. . . . . . .  B ADDR   0090H.5 A   
XSDAT. . . . . . .  B ADDR   0090H.4 A   
XSTAB. . . . . . .  C ADDR   00A4H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?