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

📄 系统.lst

📁 本科优秀毕业设计,倒车雷达,用单片机和c51实现的!
💻 LST
📖 第 1 页 / 共 3 页
字号:
                     232         
014F                 233     KEY_SCAN3:                          ;识别键盘有无键按下子程序
                     234                        
                     235                        
014F 75A0F0          236                        MOV  P2,#0F0H           ;置列线为0,行线为1
                     237                
0152 E5A0            238                        MOV  A,P2               ;读P2口
0154 54F0            239                ANL  A,#0F0H            ;取出高四位
0156 F5F0            240                MOV  B,A                ;暂存到B
0158 75A00F          241                MOV  P2,#0FH            ;置列线为1,行线为0
                     242                
015B E5A0            243                        MOV  A,P2               ;读P2口
015D 540F            244                ANL  A,#0FH             ;取出低四位
015F 45F0            245                ORL  A,B                ;高四位与低四位逻辑或运算重新组合
0161 B4FF02          246                CJNE A,#0FFH,KEY_IN3_1    ;0FFH为无按键按下
0164 80E9            247                JMP KEY_SCAN3
                     248     
0166                 249     KEY_IN3_1:                           ;识别具体按键值子程序
0166 F5F0            250                MOV  B,A                ;将按键的特征编码暂存于B
0168 900192          251                MOV  DPTR,#KEY_TABLE
016B 7BFF            252                MOV  R3,#0FFH           
016D                 253     KEY_IN3_2:  
016D 0B              254                INC  R3                 ;顺序码加1
016E EB              255                MOV  A,R3
016F 93              256                MOVC  A,@A+DPTR         ;查表
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     5

0170 B5F015          257                CJNE  A,B,KEY_IN3_3       ;比较,若相同则找到按键的特征编码。
0173 EB              258                MOV  A,R3               ;找到特征编码后,取顺序码
                     259                
0174 F543            260                    MOV  43H,A              ;存入43H单元
                     261                
                     262     
0176 BB0A0B          263                        CJNE R3,#10,OUT3        ;输入是否结束
                     264                        
0179 854243          265                        MOV 43H,42H
017C 854142          266                        MOV 42H,41H
017F 754100          267                        MOV 41H,#00H
0182 8009            268                        JMP EXIT
                     269                        
0184 31B1            270     OUT3:      CALL KEY_PLAER                 
0186 8005            271                        JMP EXIT     
                     272     
0188                 273     KEY_IN3_3: 
0188 B400E2          274                CJNE  A,#00H,KEY_IN3_2     ;末完,继续查
018B 80C2            275                        JMP KEY_SCAN3                      ;00H为结束码
                     276     
018D                 277     EXIT: 
018D 00              278               NOP
018E 00              279           NOP
018F 31C9            280               CALL DISPLAY
                     281     
                     282     
0191 22              283          RET
                     284     
0192 7D              285     KEY_TABLE:DB  07DH                           ;0          顺序码
0193 EEEDEB          286               DB  0EEH,0EDH,0EBH         ;1,2,3      顺序码
0196 DEDDDB          287               DB  0DEH,0DDH,0DBH         ;4,5,6      顺序码
0199 BEBDBB          288               DB  0BEH,0BDH,0BBH         ;7,8,9      顺序码
019C 77              289               DB  077H                                       ;D          输入结束确认
019D 00              290                       DB  00H                    ;结束码
                     291     
                     292     ;*******************************
                     293     ;           报警程序
                     294     ;*******************************
                     295     
019E                 296     ALARM:      
019E C28C            297                             CLR   TR0         ;关计数器
01A0 C28E            298                         CLR   TR1
01A2 C2AF            299                             CLR   EA
01A4 C2A9            300                             CLR   ET0
01A6 C2AB            301                             CLR   ET1                                  
01A8 C2A8            302                 CLR   EX0
                     303     
01AA B2B1            304                             CPL  P3.1
                     305                             
                     306                     
01AC 31C9            307                             CALL DISPLAY
                     308                             
01AE 80EE            309                             JMP  ALARM
                     310     
01B0 22              311              RET
                     312     
                     313     ;********************************
                     314     ;       显示程序
                     315     ;********************************
                     316     
01B1                 317     KEY_PLAER:  
01B1 797F            318                 MOV R1,#07FH          ;扫描初值送入R1
01B3 7A08            319                 MOV R2,#08H           ;扫描位数送入R2
01B5 7840            320                 MOV R0,#40H           ;开始填充显示单元
                     321     
01B7 E6              322     DISP0:      MOV A,@R0             ;显示内容送入A
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     6

01B8 9001EC          323                 MOV DPTR,#TABLE       ;获得表头
01BB 93              324                 MOVC A,@A+DPTR        ;查表获得显示数据
01BC F580            325                 MOV P0,A              ;显示单元数据
01BE 8990            326                 MOV P1,R1             ;开始显示当前位
01C0 E9              327                 MOV A,R1              ;准备显示下一位
01C1 03              328                 RR A                  
01C2 F9              329                 MOV R1,A              
01C3 08              330                 INC R0                ;取下一个单元地址
01C4 5100            331                 CALL DELAY            ;延时0.25S
01C6 DAEF            332                 DJNZ R2,DISP0         ;重复显示下一个
                     333                                       ;显示完成,返回
                     334                
01C8 22              335                        RET
                     336     ;**********************************
01C9 7940            337     DISPLAY:    MOV R1,#40H 
01CB 7D7F            338                             MOV R5,#07FH
01CD ED              339     PLAY:       MOV A,R5     
01CE 7580FF          340                 MOV P0,#0FFH
01D1 F590            341                             MOV P1,A
01D3 E7              342                             MOV A,@R1
                     343     
01D4 9001EC          344                             MOV DPTR,#TABLE
01D7 93              345                 MOVC A,@A+DPTR 
01D8 F580            346                 MOV P0,A   
01DA 31F7            347                             CALL DL1MS
01DC 09              348                 INC R1            
01DD ED              349                 MOV A,R5 
01DE 30E004          350                             JNB ACC.0,ENDOUT
01E1 03              351                 RR A                  
01E2 FD              352                 MOV R5,A              
01E3 80E8            353                     JMP PLAY
01E5 7590FF          354     ENDOUT:     MOV P1,#0FFH
01E8 7580FF          355                             MOV P0,#0FFH            
                     356                 
01EB 22              357                             RET                      ;显示完成,返回
                     358     ;
01EC 039F250D        359     TABLE:DB 03H,9FH,25H,0DH,99H,49H,41H,01FH,01H,09H,03H
01F0 9949411F                
01F4 010903                  
                     360     
                     361     ;********************************
                     362     ;延时程序
                     363     ;********************************
                     364     
01F7 7E14            365     DL1MS:      MOV R6,#14H
01F9 7F19            366     DL1:            MOV R7,#19H
01FB DFFE            367     DL2:            DJNZ R7,DL2
01FD DEFA            368                             DJNZ R6,DL1
                     369     
01FF 22              370                             RET
                     371     
                     372     ;*******************************
                     373     ;晶振12MHZ,延时0.25秒
                     374     ;*******************************
                     375     
0200 757264          376     DELAY:MOV 72H,#100
0203 757164          377     LOOP3:MOV 71H,#100
0206 75700A          378     LOOP1:MOV 70H,#10
0209 D570FD          379     LOOP0:DJNZ 70H,LOOP0
020C D571F7          380           DJNZ 71H,LOOP1
020F 75702E          381           MOV 70H,#46
0212 D570FD          382     LOOP2:DJNZ 70H,LOOP2
0215 00              383           NOP
0216 D572EA          384           DJNZ 72H,LOOP3
0219 757030          385           MOV 70H,#48
021C D570FD          386     LOOP4:DJNZ 70H,LOOP4                        
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     7

                     387     
021F 22              388         RET
                     389     
                     390     
                     391     ;**************************************************
                     392     ;*     距离计算程序(=计算值×17/1000cm)  近似     *
                     393     ;**************************************************
                     394     
0220 C0E0            395     WORK:PUSH       ACC
0222 C0D0            396              PUSH   PSW
0224 C0F0            397          PUSH       B
0226 75D018          398              MOV    PSW, #18H                       ;RS1=1,RS0=1
0229 AB4B            399              MOV    R3, 4BH
022B AA4A            400              MOV    R2, 4AH
022D 7900            401              MOV    R1, #00D 
022F 7811            402              MOV    R0, #17D                    ;与17相乘
0231 1202A5          403              LCALL  MUL2BY2                         ;R7R6R5R4<=R3R2*R1R0
0234 7B03            404              MOV    R3, #03H
0236 7AE8            405              MOV    R2, #0E8H
0238 1202D4          406              LCALL  DIV4BY2                         ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
023B 1202D4          407              LCALL  DIV4BY2                         ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
023E 8C44            408              MOV    44H, R4 
0240 E544            409              MOV    A, 44H
0242 7003            410              JNZ    JJ0                                     ;A不等于0时,跳转
0244 754400          411              MOV    44H, #00H           ;最高位为0,不点亮
                     412     
0247 E8              413     JJ0: MOV        A,  R0
0248 FC              414              MOV    R4, A
0249 E9              415              MOV    A,  R1
024A FD              416              MOV    R5, A
024B 7B00            417              MOV    R3, #00D
024D 7A64            418              MOV    R2, #100D
024F 1202D4          419              LCALL  DIV4BY2
0252 8C45            420              MOV    45H, R4
0254 E545            421              MOV    A, 45H
0256 7009            422              JNZ    JJ1
0258 E544            423              MOV    A, 44H              ;此高位为0,先看最高位是否为不亮
025A 940A            424              SUBB   A, #0AH
025C 7003            425              JNZ    JJ1
025E 754500          426              MOV    45H, #00H           ;最高位不亮,次高位也不亮
                     427     
0261 E8              428     JJ1: MOV        A, R0
0262 FC              429              MOV    R4, A
0263 E9              430              MOV    A, R1
0264 FD              431              MOV    R5, A
0265 7B00            432              MOV    R3, #00D
0267 7A0A            433              MOV    R2, #10D
0269 1202D4          434              LCALL DIV4BY2
026C 8C46            435              MOV    46H, R4
026E E546            436              MOV    A,  46H 
0270 7009            437              JNZ    JJ2
0272 E545            438              MOV    A, 45H         ;次高位为0,先看次高位是否为不亮
0274 940A            439              SUBB   A, #0AH
0276 7003            440              JNZ    JJ2
0278 754600          441              MOV    46H, #00H      ;次高位不亮,次高位也不亮
                     442     
027B 8847            443     JJ2: MOV        47H, R0
027D 1545            444          DEC    45H
027F 1545            445              DEC    45H
0281 1545            446              DEC    45H
0283 1545            447              DEC    45H
0285 1545            448              DEC    45H
0287 1545            449              DEC    45H
                     450              
0289 E545            451              MOV    A,45H
028B B40002          452              CJNE   A,#00H,JJ4      
A51 MACRO ASSEMBLER  系统                                                                 05/23/2008 19:14:15 PAGE     8

028E 800C            453              JMP    JJ5
0290                 454     JJ4: 
0290 E546            455              MOV    A,46H
0292 B40007          456              CJNE   A,#00H,JJ5
0295 754609          457              MOV    46H,#09H
0298 1545            458              DEC    45H
029A 8002            459              JMP    JJ6
029C 1546            460     JJ5: DEC    46H     
029E D0F0            461     JJ6: POP        B
02A0 D0D0            462              POP    PSW
02A2 D0E0            463              POP    ACC
                     464             
02A4 22              465             RET  
                     466     
                     467     ;************************************

⌨️ 快捷键说明

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