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

📄 8.lst

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                    页     1
                                                                    01-29-03
                                                                    01:45:43
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;*************************************
            ;*                                   *
            ;*      自 动 往 返 小 汽 车         *
            ;*          2001年9月              *
            ;*************************************
            ;
            ;
            ;
            ;*************************************
            ;*                                   *
            ;*      主程序和中断程序入口         *
            ;*                                   *
            ;*************************************
            ;
            		ORG     0000H			;程序执行起始地址
0000 020060                 LJMP    START	;跳至START
            		ORG     0003H			;外中断0入口
0003 020078                 LJMP    INTEX0	;跳至INTEX0中断服务程序
            		ORG     000BH			;定时器T0中断入口
000B 32                     RETI				;中断返回
                            ORG     0013H			;外中断1入口
0013 020102                 LJMP    INTEX1	;跳至INTEX1中断服务程序
                            ORG     001BH			;定时器T1中断入口
001B 020140                 LJMP    INTT1	;跳至INTT1中断服务程序
            		ORG     0023H			;串口中断入口
0023 32     		RETI				;中断返回
            		ORG     002BH			;定时器T2中断入口
002B 32     		RETI				;中断返回
            ;
            ;***************************
            ;*                         *
            ;*       初始化程序        *
            ;*                         *
            ;****************************
002C 7870   CLEARMEMIO:        MOV   R0,  #70H      ;清70H-76H显示单元
002E 7F07                      MOV   R7,  #07H      ;循环次数
0030 7600    ML0:              MOV   @R0, #00H      ;清0
0032 08                        INC   R0      	   ;下一地址
0033 DFFB                      DJNZ  R7,  ML0       ;未完再循环
0035 758910                    MOV   TMOD,#10H      	 ;T1为16位定时器
0038 7C14                      MOV   R4,#14H     	 ;1秒定时用(50毫秒20次)
003A 758BB0                    MOV   TL1,#0B0H   	 ;50毫秒定时用初值
003D 758D3C                    MOV   TH1,#3CH     	 ;
0040 752000                    MOV     20H,#00H      	 ;清0操作
0043 752100                    MOV     21H,#00H       ;
0046 752200                    MOV     22H,#00H       ;
0049 752300                    MOV     23H,#00H       ;
004C 752400 		   MOV	   24H,#00H      ;


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例8\8.ASM      
 
                                                                    页     2
                                                                    01-29-03
                                                                    01:45:43
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

004F C230                      CLR     30H            ;清停车标志
0051 D2AB                      SETB    ET1            ;开T1中断
0053 D2AA                      SETB    EX1            ;开外中断1
0055 D28A                      SETB    IT1            ;外中断1采用边沿触发
0057 D288                      SETB    IT0            ;外中断0优先级为1(最高)
0059 D2A8                      SETB    EX0            ;开外中断0
005B D2AF                      SETB   EA       	     ;开总中断允许
005D D28E                      SETB   TR1        	 ;开启定时器T1
005F 22                        RET            	    	;子程序返回
            ;
            ;*************************************
            ;*                                   *
            ;*	      主  程    序               *
            ;*                                   *
            ;*************************************
            ;
0060 12002C START:          LCALL   CLEARMEMIO      ;上电初始化
0063 D296                   SETB    P1.6    		   ;选择7.5V输出
0065 C297                   CLR     P1.7    		   ;选择7.5V输出
0067 D2B7                   SETB    P3.7    		   ;前进状态
0069 C2B6                   CLR     P3.6    		   ;前进状态
006B C290                   CLR     P1.0    		   ;电机供电开始
006D 120186 MAIN:           LCALL   DISP    		   ;LED显示一次
0070 02006D                 LJMP	MAIN    		   ;转MAIN循环
0073 00                     NOP             		   ;PC值出错处理
0074 00           	        NOP
0075 020060 	       	LJMP   	START    	   ;重新初始化
            ;
            ;*************************************
            ;*                                   *
            ;*外中断0服务程序,用作跑道位置处理 *
            ;*   23H作跑道计数器                 *
            ;*************************************
0078 C0E0   INTEX0:       PUSH    ACC    		   ;堆栈保护
007A C0D0                 PUSH    PSW    		   ;
007C C2A8                 CLR     EX0    		   ;关中断
007E 120186               LCALL   DISP    		   ;LED显示一次(延时抗干扰)
0081 20B225               JB     P3.2,IN0RET    	   ;P3.2为1退出(干扰)
0084 0523                 INC     23H    		   ;跑道计数器加1
0086 E523                 MOV     A,23H    		   ;数据入A
0088 B40606               CJNE    A,#06H,JUDGE1     ;不是第6道转JUDGE1
008B 1200D0               LCALL   STOP    		   ;是第6道,停车
008E 0200A9               LJMP    IN0RET    		   ;转中断退出
0091 B40306 JUDGE1:       CJNE    A,#03H,JUDGE2     ;不是第3道转JUDGE2
0094 1200B5               LCALL   STOPSLOW    	   ;是第3道,变慢车
0097 0200A9               LJMP    IN0RET    		   ;转中断退出
009A B40406 JUDGE2:       CJNE    A,#04H,JUDGE3     ;不是第4道转JUDGE3
009D 1200CB               LCALL   FAST    		   ;是第4道,变快车


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例8\8.ASM      
 
                                                                    页     3
                                                                    01-29-03
                                                                    01:45:43
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

00A0 0200A9               LJMP    IN0RET    		   ;转中断退出
00A3 B40503 JUDGE3:       CJNE    A,#05H,IN0RET     ;不是第5道转INORET退出
00A6 1200B5               LCALL   STOPSLOW    	   ;是第5道,变慢车
00A9 C289   IN0RET:       CLR     IE0    		   ;清外中断0中断标志
00AB D0D0                 POP     PSW    		   ;恢复现场
00AD D0E0                 POP     ACC    		   ;
00AF 1201D6               LCALL   DL7MS    		   ;延时7毫秒(抗干扰)
00B2 D2A8                 SETB    EX0    		   ;开外中断0
00B4 32                   RETI    		   		   ;中断返回
            ;
            ;************************************
            ;*          慢车控制子程序          *
            ;************************************
00B5 C296   STOPSLOW:      CLR     P1.6    		   ;关7.5V电源
00B7 B2B6                  CPL     P3.6    		   ;反向驱动(刹车)
00B9 B2B7                  CPL     P3.7    		   ;反向驱动
00BB 1201B7                LCALL   DS50MS    	   ;刹车时间(可根据试车情况调整)
00BE 1201B7                LCALL   DS50MS    	   ;
00C1 1201B7                LCALL   DS50MS    	   ;
00C4 B2B6                  CPL     P3.6    		   ;正向驱动
00C6 B2B7                  CPL     P3.7    		   ;正向驱动
00C8 D297                  SETB    P1.7    		   ;开4.3V电源
00CA 22                    RET    		   			;返回
            ;
            ;************************************
            ;*         快车控制子程序           *
            ;************************************
00CB C297   FAST:          CLR     P1.7    		   ; 关4.3V电源
00CD D296                  SETB    P1.6    		   ; 开7.5V电源
00CF 22                    RET    		  		   ;返回
            ;
            ;************************************
            ;*         停车控制程序             *
            ;************************************
00D0 752300 STOP:         MOV    23H,#00H    	   ;跑道计数单元清0
00D3 B2B6                 CPL     P3.6    		   ;反向驱动(刹车)
00D5 B2B7                 CPL     P3.7    		   ;反向驱动(刹车)
00D7 1201B7               LCALL   DS50MS    		   ;刹车时间
00DA 1201B7               LCALL   DS50MS    		   ;刹车时间(可调整)
00DD D290                 SETB   P1.0    		   ;关电机电源
00DF D2BB                 SETB   PT1    		       ;定时器T1为高优先级
00E1 1201CA               LCALL   DS10S    		   ;停车10秒
00E4 C2BB                 CLR     PT1    		   ;恢复T1为低优先级
00E6 D296                 SETB    P1.6    		   ;开7.5V电源(高速)
00E8 C297                 CLR     P1.7    		   ;关4.3V
00EA C290                 CLR     P1.0    		   ;电机电源开
00EC B230                 CPL     30H    		   ;停车点位置判断标志取反
00EE 203003               JB      30H,STREN    	   ;为1(中途停车)转STREN


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例8\8.ASM      
 
                                                                    页     4
                                                                    01-29-03
                                                                    01:45:43
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

00F1 1200F5               LCALL   CLR00    		   ;是终点,调复0程序
00F4 22      STREN:       RET    		   			;返回
            ;
            ;*********************************
            ;*        计时清0程序           *
            ;*********************************
00F5 757000 CLR00:           MOV   70H,#00H    		   ;计时单元清0
00F8 757100                  MOV   71H,#00H    		   ;计时单元清0
00FB 757200                  MOV   72H,#00H    		   ;计时单元清0
00FE 757300                  MOV   73H,#00H    		   ;计时单元清0
0101 22                      RET    		   			   ;返回
            ;
            ;*************************************
            ;*                                   *
            ;*   外中断1程序,里程计数用        *
            ;*   20H、21H、22H、24H作计数器     *
            ;*************************************
0102 C0E0   INTEX1:          PUSH   ACC    		   	   ;堆栈保护
0104 C0D0                    PUSH   PSW    		   	   ;
0106 C2AA                    CLR    EX1    		   	   ;关外中断1
0108 0520                    INC    20H    		   	   ;圈加1
010A E520     LLLL:          MOV    A,20H    		   ;判断是否满6圈
010C B40621                  CJNE   A,#06H,LLL    	   ;不满6圈转LLL退出
010F 752000                  MOV    20H,#00H    		   ;满6圈清0进位(6圈为1米)
0112 0521                    INC    21H    		   	   ;上位加1
0114 E521                    MOV    A,21H    		   ;判断是否满10
0116 B40A17                  CJNE   A,#0AH,LLL    	   ;不满10转LLL
0119 752100                  MOV    21H,#00H    		   ; 满10清0进1位
011C 0522                    INC    22H    		   	   ; 高位加1
011E E522                    MOV    A,22H    		   ; 判断是否满10
0120 B40A0D                  CJNE   A,#0AH,LLL    	   ; 不满10转LLL
0123 752200                  MOV    22H,#00H    		   ; 满10清0进1位
0126 0524                    INC    24H    		  	   ; 高位加1
0128 E524                    MOV    A,24H    		   ; 判断是否满10
012A B40A03                  CJNE   A,#0AH,LLL    	   ; 不满10转LLL
012D 752400                  MOV    24H,#00H    		   ; 满10清0
0130 852174 LLL:             MOV    74H,21H    		   ; 将里程数移入显示单元(个位)
0133 852275                  MOV    75H,22H    		   ; 将里程数移入显示单元(十位)
0136 852476                  MOV    76H,24H    		   ; 将里程数移入显示单元(百位)
0139 D0D0   IN1RET:          POP    PSW    		   		;恢复堆栈
013B D0E0                    POP    ACC    		  		;
013D D2AA                    SETB   EX1    		   		;开外中断1
013F 32                      RETI    		   			;中断返回
            ;
            ;*************************************
            ;*           时间计时器程序           *
            ;*	     (T1定时中断服务程序)      *
            ;*                                    *


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例8\8.ASM      
 
                                                                    页     5
                                                                    01-29-03
                                                                    01:45:43
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;*************************************
0140 C0E0   INTT1:             PUSH  	ACC    		   ;堆栈保护
0142 C0D0                      PUSH  	PSW    		   ;
0144 758BB0                    MOV 	TL1,#0B0H      ;赋50毫秒定时初值
0147 758D3C                    MOV 	TH1,#3CH    	   ;
014A 1C                        DEC 	R4    		   ;减1
014B EC                        MOV 	A,R4    		   ;
014C 701C                      JNZ 	RETT0    	   ;不为0转RETT0
014E 7C14                      MOV 	R4,#14H    	   ;为0(1秒到)重赋初值
0150 7871                      MOV 	R0,#71H    	   ;地址指向71H
0152 316F                      ACALL 	ADD1    		   ;加1秒操作
0154 EB                        MOV 	A,R3    		   ;
0155 C3                        CLR 	C    		   ;
0156 B46000                    CJNE	A,#60H,CC  	   ;是否为60秒?
0159 400F   CC: 		   JC	 RETT0    	   ;小于60转RETT0
015B 3181                      ACALL CLR0    	   ;大于或等于60清0
015D 7873                      MOV 	R0,#73H    	   ;指向分计时地址单元
015F 316F                      ACALL ADD1    		   ;分加1
0161 EB                        MOV 	A,R3    		   ;
0162 C3                        CLR 	C    		   ;
0163 B46000                    CJNE A,#60H,CCC      ;是否为60分?
0166 4002   CCC: 		   JC	    RETT0    	    ;小于60转RETT0
0168 3181                      ACALL		CLR0    		    ;大于或等于60分计时单元清0
016A D0D0     RETT0: 	   POP 		PSW    		    ;恢复堆栈
016C D0E0                      POP 		ACC    		    ;
016E 32                        RETI    		   			;中断返回
            ;
                          ;;;;;;;;;;;;;; ;;;;
                          ; 加1操作程序    ;
                          ;;;;;;;;;;;;;; ;;;;
016F E6     ADD1: 		   MOV	 A,@R0    		    ;取计数值
0170 18                        DEC	 R0    		    		;指向低一个地址
0171 C4                        SWAP	 A    		    		;计数值高低四位交换
0172 46                        ORL 	 A,@R0    		    ;相或组合成一个数据
0173 2401                      ADD 	 A,#01H    		    ;加1
0175 D4                        DA 	 A    		    		;十进制调整
0176 FB                        MOV 	 R3,A    		    ;暂存R3内
0177 540F                      ANL 	 A,#0FH    		    ;高四位变0
0179 F6                        MOV	 @R0,A    		    ;放回低地址
017A EB                        MOV	 A,R3    		    ;取回R3内数据
017B 08                        INC	 R0    		    		;地址加1
017C C4                        SWAP	 A    		    		;高低四位交换
017D 540F                      ANL 	 A,#0FH    		    ;高四位为0
017F F6                        MOV	 @R0,A    		    ;放回原地址
0180 22                        RET    		    			;返回
            ;
                           ;;;;;;;;;;;;;
                           ; 清0程序  ;


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例8\8.ASM      
 
                                                                    页     6

⌨️ 快捷键说明

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