⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.lst

📁 一些简单适用于初学者的51程序。使你的学习更加方便。省去很多麻烦。
💻 LST
字号:
A51 MACRO ASSEMBLER      1                                                                   DATE  09/03/08   PAGE     1


MS-DOS MACRO ASSEMBLER A51 V4.4 
OBJECT MODULE PLACED IN 1.OBJ
ASSEMBLER INVOKED BY:  A51 1.ASM DB SB

LOC  OBJ            LINE     SOURCE

                       1     ;************;
                       2     ;小灯控制程序;
                       3     ;************;
                       4     ;
                       5     ;************;
                       6     ;中断入口程序;
                       7     ;************;
                       8     ;
0000                   9     ORG     0000H    ;程序执行开始地址
0000 02002A           10     LJMP    START    ;跳至START执行
0003                  11     ORG     0003H    ;外中断0中断入口地址
0003 32               12     RETI             ;中断返回(不开中断)
000B                  13     ORG     000BH    ;定时器T0中断入口地址
000B 32               14     RETI             ;中断返回(不开中断)
0013                  15     ORG     0013H    ;外中断1中断入口地址
0013 32               16     RETI             ;中断返回(不开中断)
001B                  17     ORG     001BH    ;定时器T1中断入口地址
001B 32               18     RETI             ;中断返回(不开中断)
0023                  19     ORG     0023H    ;串行口中断入口地址
0023 32               20     RETI             ;中断返回(不开中断)
                      21     ;
                      22     ;************;
                      23     ; 初始化程序 ;
                      24     ;************;
                      25     ;
0024 752000           26     CLEAR:  MOV     20H,#00H    ;20H单元内存清0(闪烁标志清0)
0027 D200             27             SETB    00H         ;20H.0位置1(上电时自动执行闪烁功能1)
0029 22               28             RET                 ;子程序返回
                      29     ;
                      30     ;************;
                      31     ;  主 程 序  ;
                      32     ;************;
                      33     ;
002A 1124             34     START:ACALL     CLEAR       ;调用初始化子程序
002C 120067           35     MAIN: LCALL     KEYWORK     ;调用键扫描子程序
002F 20000B           36           JB        00H,FUN0    ;20H.0位为1时执行FUN0
0032 200115           37           JB        01H,FUN1    ;20H.1位为1时执行FUN1
0035 200220           38           JB        02H,FUN2    ;20H.2位为1时执行FUN2
0038 2003F1           39           JB        03H,MAIN    ;备用
003B 012C             40           AJMP      MAIN        ;返回主程序MAIN
                      41     ;
                      42     ;************;
                      43     ;  功能程序  ;
                      44     ;************;
                      45     ;第1种闪烁功能程序
003D 74FE             46     FUN0: MOV       A,#0FEH       ;累加器赋初值
003F F590             47     FUN00:MOV       P1,A              ;累加器值送至P1口
0041 1200C0           48           LCALL     DL05S         ;延时
0044 30E7E5           49           JNB       ACC.7,MAIN    ;累加器最高位为0时转MAIN
0047 23               50           RL        A             ;累加器A中数据循环左移1位
0048 013F             51           AJMP      FUN00         ;转FUN00循环
                      52     ;
                      53     ;第2种闪烁功能程序
004A 74FE             54     FUN1:MOV        A,#0FEH    ;累加器赋初值
A51 MACRO ASSEMBLER      1                                                                   DATE  09/03/08   PAGE     2


LOC  OBJ            LINE     SOURCE

004C F590             55     FUN11:MOV       P1,A       ;累加器值送至P1口
004E 1200C0           56           LCALL     DL05S      ;延时
0051 60D9             57           JZ        MAIN       ;A为0转MAIN
0053 23               58           RL        A          ;累加器A中数据循环左移1位
0054 5590             59           ANL       A,P1       ;A同P1口值相与
0056 014C             60           AJMP      FUN11      ;转FUN11循环
                      61     ;
                      62     ; 第3种闪烁功能程序
0058 74AA             63     FUN2:MOV        A,#0AAH     ;累加器赋初值
005A F590             64           MOV       P1,A        ;累加器值送至P1口
005C 1200C0           65           LCALL     DL05S       ;延时
005F F4               66           CPL       A           ;A中各位取反
0060 F590             67           MOV       P1,A        ;累加器值送至P1口
0062 1200C0           68           LCALL     DL05S       ;延时
0065 012C             69           AJMP      MAIN        ;转MAIN
                      70     ;************;
                      71     ;  扫键程序  ;
                      72     ;************;
                      73     ;
0067 75B0FF           74     KEYWORK:MOV     P3,#0FFH    ;置P3口为输入状态
006A 30B00A           75           JNB       P3.0,KEY0   ;读P3.0口,若为0转KEY0
006D 30B116           76           JNB       P3.1,KEY1   ;读P3.1口,若为0转KEY1
0070 30B222           77           JNB       P3.2,KEY2   ;读P3.2口,若为0转KEY2
0073 30B32E           78           JNB       P3.3,KEY3   ;读P3.3口,若为0转KEY3
0076 22               79           RET                   ;子程序返回
                      80     ;
                      81     ;闪烁功能0键处理程序
0077 1200B8           82     KEY0:LCALL      DL10MS      ;延时10毫秒消抖
007A 20B008           83          JB         P3.0,OUT0   ;P3.0为1,子程序返回(干扰)
007D D200             84          SETB       00H         ;20H.0位置1(执行闪烁功能1标志)
007F C201             85          CLR        01H         ;20H.1位清0
0081 C202             86          CLR        02H         ;20H.2位清0
0083 C203             87          CLR        03H         ;20H.3位清0
0085 22               88     OUT0:RET                    ;子程序返回
                      89     ;
                      90     ; 闪烁功能1键处理程序
0086 1200B8           91     KEY1:LCALL      DL10MS
0089 20B108           92          JB         P3.1,OUT1
008C D201             93          SETB       01H         ;20H.1位置1(执行闪烁功能2标志)
008E C200             94          CLR        00H
0090 C202             95          CLR        02H
0092 C203             96          CLR        03H
0094 22               97     OUT1:RET
                      98     ;
                      99     ;闪烁功能2键处理程序
0095 1200B8          100     KEY2:LCALL      DL10MS
0098 20B208          101          JB         P3.2,OUT2
009B D202            102          SETB       02H         ;20H.2位置1(执行闪烁功能3标志)
009D C201            103          CLR        01H
009F C200            104          CLR        00H
00A1 C203            105          CLR        03H
00A3 22              106     OUT2:RET
                     107     ;
                     108     ;闪烁功能(备用)键处理程序
00A4 1200B8          109     KEY3:LCALL      DL10MS
00A7 20B308          110          JB         P3.3,OUT3
00AA D203            111          SETB       03H         ;20H.3位置1(执行备用闪烁功能标志)
00AC C201            112          CLR        01H
00AE C202            113          CLR        02H
A51 MACRO ASSEMBLER      1                                                                   DATE  09/03/08   PAGE     3


LOC  OBJ            LINE     SOURCE

00B0 C200            114          CLR        00H
00B2 22              115     OUT3:RET
                     116     ;
                     117     ;************;
                     118     ;  延时程序  ;
                     119     ;************;
                     120     ;0.5毫秒延时子程序,执行一次时间为513微秒
00B3 7AFF            121     DL512:MOV       R2,#0FFH
00B5 DAFE            122     LOOP1: DJNZ     R2,LOOP1
00B7 22              123            RET
                     124     ;
                     125     ;10毫秒延时子程序(调用20次0.5毫秒延时子程序)
00B8 7B14            126     DL10MS:MOV      R3,#14H
00BA 1200B3          127     LOOP2: LCALL    DL512
00BD DBFB            128            DJNZ     R3,LOOP2
00BF 22              129            RET
                     130     ;
                     131     ;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为15×25毫秒)
00C0 7C0F            132     DL05S:MOV       R4,#0FH
00C2 1200C8          133     LOOP3: LCALL    DL25MS
00C5 DCFB            134            DJNZ     R4,LOOP3
00C7 22              135            RET
                     136     ;
                     137     ;25毫秒延时子程序,用调用扫键子程序延时,可快速读出功能按键值
00C8 7DFF            138     DL25MS:MOV      R5,#0FFH
00CA 120067          139     LOOP4:LCALL     KEYWORK
00CD DDFB            140           DJNZ      R5,LOOP4
00CF 22              141           RET
                     142     END                       ;程序结束
                             
                             
A51 MACRO ASSEMBLER      1                                                                   DATE  09/03/08   PAGE     4


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


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

ACC. . . .  D ADDR   00E0H   A
CLEAR. . .  C ADDR   0024H   A
DL05S. . .  C ADDR   00C0H   A
DL10MS . .  C ADDR   00B8H   A
DL25MS . .  C ADDR   00C8H   A
DL512. . .  C ADDR   00B3H   A
FUN0 . . .  C ADDR   003DH   A
FUN00. . .  C ADDR   003FH   A
FUN1 . . .  C ADDR   004AH   A
FUN11. . .  C ADDR   004CH   A
FUN2 . . .  C ADDR   0058H   A
KEY0 . . .  C ADDR   0077H   A
KEY1 . . .  C ADDR   0086H   A
KEY2 . . .  C ADDR   0095H   A
KEY3 . . .  C ADDR   00A4H   A
KEYWORK. .  C ADDR   0067H   A
LOOP1. . .  C ADDR   00B5H   A
LOOP2. . .  C ADDR   00BAH   A
LOOP3. . .  C ADDR   00C2H   A
LOOP4. . .  C ADDR   00CAH   A
MAIN . . .  C ADDR   002CH   A
OUT0 . . .  C ADDR   0085H   A
OUT1 . . .  C ADDR   0094H   A
OUT2 . . .  C ADDR   00A3H   A
OUT3 . . .  C ADDR   00B2H   A
P1 . . . .  D ADDR   0090H   A
P3 . . . .  D ADDR   00B0H   A
START. . .  C ADDR   002AH   A


REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE, NO ERRORS FOUND

⌨️ 快捷键说明

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