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

📄 系统.lst

📁 本科优秀毕业设计,倒车雷达,用单片机和c51实现的!
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 系统.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\KeiL\C51\BIN\A51.EXE 系统.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;****************************************************
                       2     ;*超声波倒车雷达
                       3     ;*12MHz晶振
                       4     ;*共阳LED显示器,空位显示0,2*4位一体数码管(8位)
                       5     ;****************************************************
                       6     ;堆栈在4F以上,20H用于接收成功标志,21H用于当前距离与设定值判定标志(1表示相等->报警)
                       7     ;显示缓冲单元40H-43H为设定安全距离显示;44H-47H为实际距离显示
                       8     ;内存4AH,4BH,4CH用于计算距离
                       9     ;
                      10     ;
                      11     ;
                      12     
  00B0                13             VOUT   EQU   P3.0
                      14     ;
                      15     ;
                      16     ;
                      17     ;***************************************************
                      18     ;*           中断入口
                      19     ;***************************************************
                      20     ;
                      21     
0000                  22                     ORG  0000H
0000 02002C           23                  LJMP  START
0003                  24                     ORG  0003H
0003 0200BA           25                  LJMP  PINT0
000B                  26                     ORG  000BH
000B 020096           27                  LJMP  INTT0
0013                  28                     ORG  0013H
0013 32               29                  RETI
001B                  30                     ORG  001BH
001B 0200A9           31                  LJMP  INTT1
0023                  32                     ORG  0023H
0023 32               33                          RETI
002B                  34                     ORG  002BH
002B 32               35                  RETI
                      36     
                      37     ;**************************************************
                      38     ;                  主程序
                      39     ;**************************************************
002C 75814F           40     START: MOV  SP, #4FH
002F 7840             41                MOV  R0, #40H          ;40~47H为显示数据存放单元(40为最高位)
0031 7F0F             42                MOV  R7,#0FH
0033 7600             43     CLEARDISP:  MOV  @R0, #00H
0035 08               44                 INC   R0
0036 DFFB             45                 DJNZ  R7, CLEARDISP
                      46                 
0038 31B1             47                             CALL KEY_PLAER
003A 11CF             48                         CALL  KEY_SCAN1       ;调用设定距离程序
                      49     
003C 752000           50     START0:         MOV  20H, #00H
                      51                         
003F 758921           52                             MOV  TMOD, #21H   ;T1为8位自动重装模式,T0为16位定时器
0042 758C8A           53                             MOV  TH0, #8AH    ;65ms初值
0045 758ACF           54                             MOV  TL0, #0CFH    
0048 758DF4           55                             MOV  TH1, #0F4H   ;40KHz初值
004B 758BF4           56                 MOV  TL1, #0F4H
                      57                             
004E 7580FF           58                             MOV  P0, #0FFH
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     2

0051 7590FF           59                             MOV  P1, #0FFH
0054 75A0FF           60                 MOV  P2, #0FFH
0057 75B0FF           61                 MOV  P3, #0FFH
005A 7C08             62                             MOV  R4, #08H     ;超声波脉冲个数控制(为赋值的一半)
005C D2B8             63                             SETB  PX0
005E D2A9             64                             SETB  ET0
0060 D2AF             65                             SETB  EA
0062 D28C             66                             SETB  TR0         ;开启测距定时器
0064 1201C9           67     START1:  LCALL  DISPLAY     
0067 3000FA           68              JNB   00H, START1        ;收到反射信号时标志位为1
006A C2AF             69                      CLR  EA
006C 120220           70              LCALL  WORK              ;计算距离子程序
                      71                      
006F 12030A           72                      LCALL CMP
0072 203011           73                      JB  30H,WARN
                      74                      
0075 D2AF             75                      SETB EA
                      76                      
                      77     
0077 C230             78                      CLR     30H
0079 C200             79              CLR     00H
007B D28C             80              SETB   TR0               ;重新开启测距定时器            
007D 7A64             81                      MOV    R2, #064H      ;测量间隔控制(约4*100=400ms)64H
007F 1201C9           82     LOOP:    LCALL  DISPLAY
0082 DAFB             83              DJNZ   R2, LOOP 
0084 80B6             84              SJMP   START0
                      85     
0086                  86     WARN:    
0086 C28C             87                      CLR   TR0         ;关计数器
0088 C28E             88                      CLR   TR1
008A C2A8             89                      CLR   EX0
008C C2AF             90                      CLR   EA
008E C2A9             91                      CLR   ET0
0090 C2AB             92                      CLR   ET1                                 
                      93                
0092 319E             94                      CALL ALARM
0094 80F0             95                      SJMP WARN
                      96     ;
                      97     ;****************************************
                      98     ;中断程序
                      99     ;****************************************
                     100     ;T0中断,65ms中断一次
                     101     ;
0096 C2AF            102     INTT0:      CLR    EA
0098 C28C            103                 CLR    TR0
009A 758C8A          104                 MOV   TH0, #8AH
009D 758ACF          105                 MOV   TL0, #0CFH
00A0 D2AB            106                 SETB   ET1
00A2 D2AF            107                 SETB   EA
00A4 D28C            108                 SETB   TR0         ;启动计时器T0,用以计算超声波来回时间
00A6 D28E            109                             SETB   TR1         ;开启发超声波用定时器T1
00A8 32              110     OUT:        RETI
                     111     
                     112     ;
                     113     ;T1中断,发超声波用
                     114     ;
00A9 B2B0            115     INTT1:      CPL    VOUT
00AB DC0C            116                 DJNZ   R4,RETIOUT
00AD C28E            117                 CLR    TR1         ;超声波发送完毕,关T1
00AF C2AB            118                             CLR    ET1
00B1 7C08            119                 MOV   R4,#08H
00B3 C289            120                             CLR    IE0
                     121                
00B5 D2AF            122                             SETB   EA
                     123     
                     124     
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     3

00B7 D2A8            125                             SETB   EX0         ;开启接收回波中断
00B9 32              126     RETIOUT:   RETI
                     127     
                     128     ;
                     129     ;外中断0,收到回波时进入
                     130     ;
00BA                 131     PINT0:      
00BA C28C            132                             CLR   TR0         ;关计数器
00BC C28E            133                         CLR   TR1
00BE C2AF            134                             CLR   EA
00C0 C2A9            135                             CLR   ET0
00C2 C2AB            136                             CLR   ET1                                  
00C4 C2A8            137                 CLR   EX0
00C6 858A4A          138                 MOV  4AH, TL0         ;将计数值移入处理单元
00C9 858C4B          139                             MOV  4BH, TH0
00CC D200            140                 SETB  00H             ;接收成功标志
00CE 32              141                 RETI
                     142     
                     143     ;********************************
                     144     ;键盘设定安全距离
                     145     ;********************************
00CF                 146     KEY_SCAN1:                          ;识别键盘有无键按下子程序
                     147               
00CF 75A0F0          148                        MOV  P2,#0F0H           ;置列线为0,行线为1
                     149                
00D2 E5A0            150                        MOV  A,P2               ;读P2口
00D4 54F0            151                ANL  A,#0F0H            ;取出高四位
00D6 F5F0            152                MOV  B,A                ;暂存到B
00D8 75A00F          153                MOV  P2,#0FH            ;置列线为1,行线为0
                     154                
00DB E5A0            155                        MOV  A,P2               ;读P2口
00DD 540F            156                ANL  A,#0FH             ;取出低四位
00DF 45F0            157                ORL  A,B                ;高四位与低四位逻辑或运算重新组合
00E1 B4FF02          158                CJNE A,#0FFH,KEY_IN1_1    ;0FFH为无按键按下
00E4 80E9            159                JMP KEY_SCAN1
                     160     
00E6                 161     KEY_IN1_1:                           ;识别具体按键值子程序
00E6 F5F0            162                MOV  B,A                ;将按键的特征编码暂存于B
00E8 900192          163                MOV  DPTR,#KEY_TABLE
00EB 7BFF            164                MOV  R3,#0FFH           
00ED                 165     KEY_IN1_2:  
00ED 0B              166                INC  R3                 ;顺序码加1
00EE EB              167                MOV  A,R3
00EF 93              168                MOVC  A,@A+DPTR         ;查表
00F0 B5F010          169                CJNE  A,B,KEY_IN1_3       ;比较,若相同则找到按键的特征编码。
00F3 EB              170                MOV  A,R3               ;找到特征编码后,取顺序码
                     171                
00F4 F543            172                    MOV  43H,A              ;存入43H单元
00F6 31B1            173                CALL KEY_PLAER
00F8 854342          174                        MOV  42H,43H
00FB 754300          175                        MOV  43H,#00H
                     176                        
00FE BB0A07          177                        CJNE R3,#10,KEY_SCAN2           ;输入是否结束
0101 218D            178                        JMP EXIT
0103                 179     KEY_IN1_3: 
0103 B400E7          180                CJNE  A,#00H,KEY_IN1_2     ;末完,继续查           
0106 80C7            181                        JMP KEY_SCAN1                 ;00H为结束码
                     182     
0108                 183     KEY_SCAN2:                          ;识别键盘有无键按下子程序
                     184                
                     185                       
0108 75A0F0          186                        MOV  P2,#0F0H           ;置列线为0,行线为1
                     187                
010B E5A0            188                        MOV  A,P2               ;读P2口
010D 54F0            189                ANL  A,#0F0H            ;取出高四位
010F F5F0            190                MOV  B,A                ;暂存到B
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     4

0111 75A00F          191                MOV  P2,#0FH            ;置列线为1,行线为0
                     192               
0114 E5A0            193                        MOV  A,P2               ;读P2口
0116 540F            194                ANL  A,#0FH             ;取出低四位
0118 45F0            195                ORL  A,B                ;高四位与低四位逻辑或运算重新组合
011A B4FF02          196                CJNE A,#0FFH,KEY_IN2_1    ;0FFH为无按键按下
011D 80E9            197                JMP KEY_SCAN2
                     198     
011F                 199     KEY_IN2_1:                           ;识别具体按键值子程序
011F F5F0            200                MOV  B,A                ;将按键的特征编码暂存于B
0121 900192          201                MOV  DPTR,#KEY_TABLE
0124 7BFF            202                MOV  R3,#0FFH           
0126                 203     KEY_IN2_2:  
0126 0B              204                INC  R3                 ;顺序码加1
0127 EB              205                MOV  A,R3
0128 93              206                MOVC  A,@A+DPTR         ;查表
0129 B5F01E          207                CJNE  A,B,KEY_IN2_3       ;比较,若相同则找到按键的特征编码。
012C EB              208                MOV  A,R3               ;找到特征编码后,取顺序码
                     209                
012D F543            210                    MOV  43H,A              ;存入43H单元
                     211               
                     212                        
012F BB0A0B          213                        CJNE R3,#10,OUT2        ;输入是否结束
0132 854243          214                        MOV  43H,42H
0135 754200          215                        MOV  42H,#00H
0138 754100          216                        MOV  41H,#00H
013B 8050            217                        JMP EXIT
                     218                        
013D                 219     OUT2:      
013D 31B1            220                        CALL KEY_PLAER
013F 854241          221                        MOV  41H,42H
0142 854342          222                        MOV  42H,43H
0145 75430A          223                        MOV  43H,#0AH
                     224                
0148 8005            225                        JMP  KEY_SCAN3
                     226                        
                     227                       
                     228                        
014A                 229     KEY_IN2_3: 
014A B400D9          230                CJNE  A,#00H,KEY_IN2_2     ;末完,继续查           
014D 80B9            231                        JMP KEY_SCAN2                      ;00H为结束码

⌨️ 快捷键说明

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