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

📄 cmp.lst

📁 《51单片机应用开发案例精选配套源代码
💻 LST
字号:
A51 MACRO ASSEMBLER  CMP                                                                  06/23/2007 09:45:24 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN CMP.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE CMP.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;-----------------------------------
                       2     ;                   比较输入数大小实例
                       3     ;功能:输入两个数,比较两个输入数大小
                       4     ;-----------------------------------
  0090                 5     LED1_PIN                EQU                     P1.0
  0091                 6     LED2_PIN                EQU                     P1.1
  0092                 7     LED3_PIN                EQU                     P1.2
  00B2                 8     KEY1_PIN                EQU                     P3.2
  00B3                 9     KEY2_PIN                EQU                     P3.3
  0030                10     DATA1                   DATA            30H
  0031                11     DATA2                   DATA            31H
  0032                12     INPUT_FLAG              DATA            32H
                      13     
0000                  14     ORG     0000H                           ;伪指令,指定程序从0000H开始存放
0000 020100           15     LJMP    MAIN                            ;跳转指令,程序跳转到MAIN处
                      16     
0100                  17     ORG     0100H                           ;伪指令,指定以下程序从0100H开始存放
0100                  18     MAIN:
0100 758160           19             MOV     SP,#60H                 ;给堆栈指针赋初值
0103 D2B2             20             SETB    KEY1_PIN                        ;置一P3.2,初始化输入口
0105 D2B3             21             SETB    KEY2_PIN                        ;置一P3.3,初始化输入口
0107 D290             22             SETB    LED1_PIN                        ;置一P1.0,LED1灭
0109 D291             23             SETB    LED2_PIN                        ;置一P1.1,LED2灭
010B D292             24             SETB    LED3_PIN                        ;置一P1.2,LED3灭
010D 753000           25             MOV     DATA1,#00H              ;给DATA1赋初值
0110 753100           26             MOV     DATA2,#00H              ;给DATA2赋初值
0113 753200           27             MOV     INPUT_FLAG,#00H ;给INPUT_FLAG赋初值
0116                  28     KEY1:
0116 A2B2             29             MOV     C,KEY1_PIN              ;检测按键1
0118 400A             30             JC              KEY2
011A 120134           31             LCALL   DELAY10MS               ;延时10MS,按键抖动消除
011D A2B2             32             MOV     C,KEY1_PIN
011F 4003             33             JC              KEY2
0121 12013D           34             LCALL   KEY1_PROC               ;按键1被按下,调用按键1处理子程序
0124                  35     KEY2:
0124 A2B3             36             MOV     C,KEY2_PIN              ;检测按键2
0126 40EE             37             JC              KEY1
0128 120134           38             LCALL   DELAY10MS               ;延时10MS,按键抖动消除
012B A2B3             39             MOV     C,KEY2_PIN
012D 40E7             40             JC              KEY1
012F 12014A           41             LCALL   KEY2_PROC               ;按键2被按下,调用按键2处理子程序
0132 80E2             42             SJMP    KEY1                    ;跳转,程序继续
                      43     
                      44     ;延时10MS子程序
0134                  45     DELAY10MS:
0134 7F14             46             MOV     R7,#20
0136                  47     DELAY0:
0136 7EFA             48             MOV     R6,#250
0138 DEFE             49             DJNZ    R6,$
013A DFFA             50             DJNZ    R7,DELAY0
013C 22               51             RET
                      52     
                      53     ;按键1输入处理程序
013D                  54     KEY1_PROC:
013D E532             55             MOV     A,INPUT_FLAG
013F 7003             56             JNZ             KEY1_PROC_NEXT          ;如果INPUT_FLAG =0,DATA1= DATA1+1
0141 0530             57             INC             DATA1
0143 22               58             RET
A51 MACRO ASSEMBLER  CMP                                                                  06/23/2007 09:45:24 PAGE     2

0144                  59     KEY1_PROC_NEXT:
0144 14               60             DEC             A
0145 7002             61             JNZ             KEY1_PROC_EXIT          ;如果INPUT_FLAG =1,DATA2= DATA2+1
0147 0531             62             INC             DATA2
0149                  63     KEY1_PROC_EXIT:
0149 22               64             RET
                      65     
                      66     ;按键2输入处理程序
014A                  67     KEY2_PROC:
014A 900152           68             MOV     DPTR,#KEY2_PROC_TABLE
014D E532             69             MOV     A,INPUT_FLAG
014F 2532             70             ADD             A,INPUT_FLAG
0151 73               71             JMP             @A+DPTR
0152                  72     KEY2_PROC_TABLE: 
0152 2158             73             AJMP    KEY2_PROC1
0154 215D             74             AJMP    KEY2_PROC2
0156 2177             75             AJMP    KEY2_PROC3
                      76     
                      77     ;按键2第一次被按下,第一个数被输入,LED3亮
0158                  78     KEY2_PROC1:
0158 0532             79             INC             INPUT_FLAG                      ;变量INPUT_FLAG加一
015A C292             80             CLR             LED3_PIN                                ;清零P1.2,LED3亮,指示第一
                             个数已被输入
015C 22               81             RET
                      82     
                      83     ;按键2第二次被按下,第二个数被输入,比较两次输入数字大小,给出比较结果,LED3灭
015D                  84     KEY2_PROC2:
015D 0532             85             INC             INPUT_FLAG                      ;变量INPUT_FLAG加一
015F C3               86             CLR             C                                       ;计算DATA1-DATA2
0160 E530             87             MOV     A,DATA1
0162 9531             88             SUBB    A,DATA2
0164 600A             89             JZ              KEY2_PROC2_ZERO         ;如果DATA1-DATA2=0,跳转到KEY2_PROC2_ZERO
0166 4004             90             JC              KEY2_PROC2_NEXT ;如果DATA1<DATA2,跳转到KEY2_PROC2_NEXT
0168 C291             91             CLR             LED2_PIN                                ;如果DATA1>DATA2,清零P1.1

⌨️ 快捷键说明

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