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

📄 7.lst

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

地址  机器码 源程序

            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              ;;        SPEED/MILE FOR BIKE   PROGRAM       ;;
             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;
            ;
            ;       60H,61H,62H作里程计数单元,6CH,6DH作T1计数扩充单元,
            ;       68H,69H,6AH,6BH存放自行车每圈时间数,70H,71H,72H,73H
            ;       作显示BCD码存放数用,11H--15H存放被除数,16H-19H存放除数
            ;
            ;
            ; 定义
                    VSDA    EQU     P1.5    ; EEPROM数据传送口
                    VSCL    EQU     P1.4    ; EEPROM时钟传送口
                    SLA     EQU     50H     ; EEPROM器件寻址字节存放单元
                    NUMBYT  EQU     51H     ; EEPROM传送字节数存放单元
                    MTD     EQU     30H     ; EEPROM发送数据缓冲单元
                    MRD     EQU     40H     ; EEPROM读出数据存放单元
                    SLAW    EQU     0A0H    ; EEPROM寻址字节写
                    SLAR    EQU     0A1H    ; EEPROM寻址字节读
                    DPHH    EQU     62H     ; DPTR计数扩展高8位
                    TH1H    EQU     6CH     ; 定时器T1扩展高8位
                    TH1HH   EQU     6DH     ; 定时器T1扩展高8-16位
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;; PROGRAM INPUT  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;
                    ORG     0000H			;程序执行开始地址
0000 020091         LJMP    START			;跳至START
                    ORG     0003H			;外中断0中断程序入口
0003 02009C         LJMP    INTEX0			;跳至INTEX0中断服务程序
                    ORG     000BH			;定时器T0中断程序入口
000B 32             RETI					;中断返回
                    ORG     0013H			;外中断1中断入口
0013 0200B7         LJMP    INTEX1			; 跳至INTEX1中断服务程序
                    ORG     001BH			; 定时器T1中断程序入口
001B 0200E8         LJMP    INTT1			; 跳至INTT1中断服务程序
                    ORG     0023H			;串口中断入口地址
0023 32             RETI					;中断返回
                    ORG     002BH			;定时器T2中断入口地址
002B 32             RETI					;中断返回
            ;
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;; PROGRAM CLEAR  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;上电初始化程序
002C 758990 CLEARMEN:       MOV     TMOD,#90H       ;T1为16位外部控制定时器


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

地址  机器码 源程序

002F 758175                 MOV     SP,#75H         ;堆栈在75H开始
0032 D2B8                   SETB    PX0             ;外中断0优先级为1
0034 D288                   SETB    IT0             ;外中断0用边沿触发
0036 D28A                   SETB    IT1             ;外中断1用边沿触发
0038 E4                     CLR     A               ;清A
0039 F520                   MOV     20H,A           ;清内存中特定单元
003B F56C                   MOV     6CH,A           ;
003D F56D                   MOV     6DH,A           ;
003F F570                   MOV     70H,A           ;
0041 F571                   MOV     71H,A           ;
0043 F572                   MOV     72H,A           ;
0045 F573                   MOV     73H,A           ;
0047 F560                   MOV     60H,A           ;
0049 F561                   MOV     61H,A           ;
004B F562                   MOV     62H,A           ;
004D F563                   MOV     63H,A           ; 清内存中特定单元
004F 14                     DEC     A           	;A为#0FFH
0050 F568                   MOV     68H,A           ;内存置数据#0FFH
0052 F569                   MOV     69H,A           ; 内存置数据#0FFH
0054 F56A                   MOV     6AH,A           ; 内存置数据#0FFH
0056 F56B                   MOV     6BH,A           ; 内存置数据#0FFH
0058 F590                   MOV     P1, A     	    ;P1口置1
005A 209206 CLEAR1:         JB      P1.2,KEY1       ;根据P1.2,P1.3,P1.6,P1.7设置状态,
            										;在21H地址单元赋自行车周长值
005D 75210F                 MOV     21H,#0FH        ;22寸自行车周长值
0060 02007B                 LJMP    CLEAR2          ;转CLEAR2
0063 209306 KEY1:           JB      P1.3,KEY2       ;
0066 752112                 MOV     21H,#12H        ; 24寸自行车周长值
0069 02007B                 LJMP    CLEAR2          ; 转CLEAR2
006C 209606 KEY2:           JB      P1.6,KEY3       ;
006F 752114                 MOV     21H,#14H        ; 26寸自行车周长值
0072 02007B                 LJMP    CLEAR2          ; 转CLEAR2
0075 209711 KEY3:           JB      P1.7,ERR        ;四个开关都没合上,转出错处理
0078 752119                 MOV     21H,#19H        ; 28寸自行车周长值
007B D28E   CLEAR2:         SETB    TR1             ;开定时器T1
007D D2AF                   SETB    EA              ;开中断允许
007F D2A8                   SETB    EX0             ;开外中断0
0081 D2AB                   SETB    ET1             ;开定时中断T1
0083 D2B1                   SETB    P3.1            ;关报警器
0085 120143                 LCALL   VIICREAD        ;将EEPROM中原里程数据调入内存
0088 22                     RET          			;子程序返回
0089 B2B1   ERR:            CPL     P3.1            ;轮周长设置出错,LED灯闪烁堤醒
008B 1202E4                 LCALL   DL5S            ;延时
008E 02005A                 LJMP    CLEAR1          ;重新初始化,等待轮周长设置开关合上
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;; PROGRAM START  ;;
            ;;;;;;;;;;;;;;;;;;;;


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

地址  机器码 源程序

            ;
0091 12002C START:          LCALL   CLEARMEN        ;上电初始化
0094 20B068 START1:         JB      P3.0,DISPLAYS   ;P3.0=1,显示里程
0097 12010E                 LCALL   DISPLAYV        ;显示速度
009A 80F8   START2:         SJMP    START1          ;转START1循环
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;INTEX0 PROGRAM  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ; 里程计数程序,用外中断0实现,计数用60H-62H内存单元。
009C C0E0   INTEX0:         PUSH    ACC              ; 累加器堆栈保护
009E C0D0                   PUSH    PSW          	 ;状态字堆栈保护
00A0 0560                  INC      60H          	 ;圈加1
00A2 E4                    CLR      A           	 ;清A
00A3 B56007                CJNE     A,60H,INTEX0OUT  ;计数没溢出转INTEX0OUT
00A6 0561                  INC      61H              ;溢出进位(61H加1)
00A8 B56102                CJNE     A,61H,INTEX0OUT  ; 计数没溢出转INTEX0OUT
00AB 0562                  INC      62H           	 ; 溢出进位(62H加1)
00AD 120127 INTEX0OUT:     LCALL   VIICWRITE         ;里程数据存入EEPROM
00B0 D2AA                  SETB     EX1        	     ;开外中断1
00B2 D0D0                  POP      PSW        	     ;状态字恢复
00B4 D0E0                  POP      ACC              ;累加器恢复
00B6 32                    RETI           			 ;中断返回
            ;;;;;;;;;;;;;;;;;;;;
            ;;INTEX1 PROGRAM  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ; 每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。
00B7 C0E0   INTEX1:         PUSH    ACC             ; 堆栈保护
00B9 C0D0                   PUSH    PSW             ;
00BB C2AA                   CLR     EX1             ;关外中断1
00BD 30000C                 JNB     00H,INTEX11     ;溢出标志为0转INTEX11
00C0 758BFF                 MOV     TL1,#0FFH       ;溢出时计时单元赋#0FFH(显示速度为零)
00C3 758DFF                 MOV     TH1,#0FFH       ;
00C6 756CFF                 MOV     6CH,#0FFH       ;
00C9 756DFF                 MOV     6DH,#0FFH       ;
00CC 858B68 INTEX11:        MOV     68H,TL1       ;将时间计数值移入暂存单元68H-6BH
00CF 858D69                 MOV     69H,TH1       ;
00D2 856C6A                 MOV     6AH,6CH       ;
00D5 856D6B                 MOV     6BH,6DH       ;
00D8 E4                     CLR     A             ;清A
00D9 F58B                   MOV     TL1,A         ;计时单元置0
00DB F58D                   MOV     TH1,A         ;
00DD F56C                   MOV     6CH,A         ;
00DF F56D                   MOV     6DH,A         ;
00E1 C200                   CLR     00H           ;清溢出标志
00E3 D0D0                   POP     PSW       	  ;堆栈恢复
00E5 D0E0                   POP     ACC           ;
00E7 32                     RETI                  ;中断返回


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

地址  机器码 源程序

            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;INTT1  PROGRAM  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;
            ; T1计数器中断服务程序。(计数器T1由外中断1输入控制,当为高电平时计时开始)
00E8 C0E0   INTT1:          PUSH    ACC            	;堆栈保护
00EA C0D0                   PUSH    PSW            	;
00EC 056C                   INC     6CH          	;6CH计时 单元加1
00EE E56C                   MOV     A,6CH          	;移入A
00F0 7008                   JNZ     INTT11          ;不等于0转INTT11
00F2 056D                   INC     6DH          	;进位,6DH单元加1
00F4 E56D                   MOV     A,6DH          	;移入A
00F6 7002                   JNZ     INTT11          ; 不等于0转INTT11
00F8 D200                   SETB    00H          	;计时器溢出,置溢出标志
00FA D0D0   INTT11:         POP     PSW          	;恢复堆栈
00FC D0E0                   POP     ACC          	;
00FE 32                     RETI          			;中断返回
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;DISPLAY S       ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;
            ;里程显示控制程序
00FF D290   DISPLAYS:       SETB    P1.0            ;点亮LED1(显示里程状态)
0101 C291                   CLR     P1.1          	;关闭速度指示灯
0103 D2B7                   SETB    P3.7            ;显示小数点(最小显示为0.1公里)
0105 12026A                 LCALL   SSS             ;将圈数转为公里数
0108 120234                 LCALL   DISPLAY         ;显示公里数据
010B 020094                 LJMP    START1          ;跳回START1
            ;
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;DISPLAY V       ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;速度显示控制程序
010E C290   DISPLAYV:       CLR     P1.0            ;关闭LED1(里程)灯
0110 D291                   SETB    P1.1            ;点亮LED2(显示时速状态)
0112 C2B7                   CLR     P3.7            ;关小数点显示
0114 1202A6                 LCALL   VVV             ;每圈时间换算为公里/小时程序
0117 E571                   MOV     A,71H            ;将十位数(BCD码)值移入A
0119 9404                   SUBB    A,#04H          ; 与预定报警值比较
011B 5006                   JNC     WARING          ; 时速超过40时报警
011D D2B1                   SETB    P3.1            ;关报警灯
011F 120234 V1:             LCALL   DISPLAY         ;显亮一次(为了改善闪烁)
0122 22                     RET            			;子程序返回
0123 C2B1   WARING:         CLR     P3.1            ; 报警灯LED3点亮(并呜叫)
0125 211F                   AJMP    V1            	;转V1退出


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

地址  机器码 源程序

            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;VIICWRITE       ;;
            ;;;;;;;;;;;;;;;;;;;;
            ;归一化EEPROM存入程序(12M时钟),存入数在50H起单元
0127 3133   VIICWRITE:      ACALL   WMOV9
0129 7550A0                 MOV     SLA,#SLAW
012C 755109                 MOV     NUMBYT,#09H
012F 1201EC                 LCALL   WRNBYT
0132 22                     RET
0133 755F50 WMOV9:          MOV     5FH,#50H
0136 7830                   MOV     R0,#MTD
0138 795F                   MOV     R1,#5FH
013A 7A09                   MOV     R2,#09H
013C E7     WMOV:           MOV     A,@R1
013D F6                     MOV     @R0,A
013E 08                     INC     R0
013F 09                     INC     R1
0140 DAFA                   DJNZ    R2,WMOV
0142 22                     RET
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;VIICREAD        ;;
            ;;;;;;;;;;;;;;;;;;;;
            ; 归一化EEPROM读出程序(12M时钟),读出数放入60H-67H单元
0143 753050 VIICREAD:       MOV     MTD,#50H      ;
0146 7550A0                 MOV     SLA,#SLAW
0149 755101                 MOV     NUMBYT,#01H
014C 1201EC                 LCALL   WRNBYT
014F 7550A1                 MOV     SLA,#SLAR
0152 755108                 MOV     NUMBYT,#08H
0155 12020F                 LCALL   RDNBYT
0158 315B                   ACALL   RMOV8
015A 22                     RET
015B 7840   RMOV8:          MOV     R0,#MRD
015D 7960                   MOV     R1,#60H
015F 7A08                   MOV     R2,#08H
0161 E6     RMOV:           MOV     A,@R0
0162 F7                     MOV     @R1,A
0163 08                     INC     R0
0164 09                     INC     R1
0165 DAFA                   DJNZ    R2,RMOV
0167 22                     RET
            ;
            ;;;;;;;;;;;;;;;;;;;;
            ;;VIIC   PROGRAM  ;;
            ;;;;;;;;;;;;;;;;;;;;
            ; I2C串行归一化存储子程序


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

地址  机器码 源程序

0168 D295   STA:            SETB    VSDA
016A D294                   SETB    VSCL
016C 00                     NOP
016D 00                     NOP
016E 00                     NOP
016F 00                     NOP
0170 C295                   CLR     VSDA
0172 00                     NOP
0173 C295                   CLR     VSDA
0175 00                     NOP
0176 00                     NOP
0177 00                     NOP
0178 00                     NOP

⌨️ 快捷键说明

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