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

📄 里程计数.asm

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                NOP
                CLR     VSCL
                SETB    VSDA
                RET
MNACK:          SETB    VSDA
                SETB    VSCL
                NOP
                NOP
                NOP
                NOP
                CLR     VSCL
                CLR     VSDA
                RET
CACK:           SETB    VSDA
                SETB    VSCL
                CLR     F0
                MOV     C,VSDA
                JNC     CEND
                SETB    F0
CEND:           CLR     VSCL
                RET
WRBYT:          MOV     R0,#08H
WLP:            RLC     A
                JC      WR1
                AJMP    WR0
WLP1:           DJNZ    R0,WLP
                RET
WR1:            SETB    VSDA
                SETB    VSCL
                NOP
                NOP
                NOP
                NOP
                CLR     VSCL
                CLR     VSDA
                AJMP    WLP1
WR0:            CLR     VSDA
                SETB    VSCL
                NOP
                NOP
                NOP
                NOP
                CLR     VSCL
                AJMP    WLP1
RDBYT:          MOV     R0,#08H
RLP:            SETB    VSDA
                SETB    VSCL
                MOV     C,VSDA
                MOV     A,R2
                RLC     A
                MOV     R2,A
                CLR     VSCL
                DJNZ    R0,RLP
                RET
WRNBYT:         MOV     R3,NUMBYT
                LCALL   STA
                MOV     A,SLA
                LCALL   WRBYT
                LCALL   CACK
                JB      F0,WRNBYT
                MOV     R1,#MTD
WRDA:           MOV     A,@R1
                LCALL   WRBYT
                LCALL   CACK
                JB      F0,WRNBYT
                INC     R1
                DJNZ    R3,WRDA
                LCALL   STOP
                RET
RDNBYT:         MOV     R3,NUMBYT
                LCALL   STA
                MOV     A,SLA
                LCALL   WRBYT
                LCALL   CACK
                JB      F0,RDNBYT
RDN:            MOV     R1,#MRD
RDN1:           LCALL   RDBYT
                MOV     @R1,A
                DJNZ    R3,ACK
                LCALL   MNACK
                LCALL   STOP
                RET
ACK:            LCALL   MACK
                INC     R1
                SJMP    RDN1
;
;;;;;;;;;;;;;;;;;;;;
;;DISPLAY PROGRAM ;;
;;;;;;;;;;;;;;;;;;;;
; 显示程序。显示BCD码在70H-73H单元内,采用共阴LED数码管
DISPLAY:        MOV     R1,#70H   		;显示单元首址
                MOV     R2,#0FEH   		;扫描字
PLAY:           MOV     A,R2   			;扫描字入A
                MOV     P2,A   			;放到端口
                MOV     A,@R1   		;取显示数据
                ANL     A,#0FH   		;去掉高四位(为0)
                MOV     DPTR,#TAB   	;取段码表首址
                MOVC    A,@A+DPTR   	;查显示数据对应段码
                MOV     P0,A   			;段码输出
                LCALL   DL1MS   		;点亮1毫秒
                INC     R1   			;指向下一显示数据地址
                MOV     A,R2   			;取扫描字
                JNB     ACC.3,ENDOUT   	;已扫描到第四位,转ENDOUT退出
                RL      A   			;循环左移
                MOV     R2,A   			;放回R2
                AJMP    PLAY   			;转PLAY循环
ENDOUT:         SETB    P2.0   			;关扫描
                SETB    P2.1   			;关扫描
                SETB    P2.2   			;关扫描
                SETB    P2.3   			;关扫描
                RET   					;扫描结束
;共阴段码表(可显示0-F)
TAB:            DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H
                DB      7FH,6FH,77H,7CH,39H,5EH,79H,71H
                DB      00H
;
;;;;;;;;;;;;;;;;;;;;
;;SSS PROGRAM     ;;
;;;;;;;;;;;;;;;;;;;;
; 里程处理程序,将自行车圈数据换算成公里数
SSS:            MOV     19H,#64H   		;除数最高位赋值
                MOV     18H,#00H   		; 除数赋值
                MOV     17H,#00H   		; 除数赋值
                MOV     16H,#00H   		; 除数赋值
                MOV     11H,#00H   		; 被除数赋值
                MOV     12H,#00H   		; 被除数赋值
                MOV     13H,62H   		; 被除数赋值
                MOV     14H,61H   		; 被除数赋值
                MOV      15H,60H   		; 被除数赋值
                LCALL    DIVST          ; 调除法程序
                LCALL    BCDST          ; 调二进制转BCD码程序
                MOV	 A,25H   		; 结果处理,将25H数移入A
                ANL	 A,#0FH   		; 将高四位置为0
                MOV 	 70H,A   		; 放入70H单元
                MOV	 A,25H   		; 25H数移入A
                SWAP	 A   			; 高低四位交换
                ANL	 A,#0FH   		; 将高四位置为0
                MOV	 71H,A   		; 放入71H单元
                MOV	 A,24H   		; 24H数移入A
                ANL	 A,#0FH   		; 将高四位置为0
                MOV 	72H,A   		; 放入72H单元
                MOV 	A,24H   		; 24H数移入A
                SWAP	 A   			; 高低四位交换
                ANL 	A,#0FH   		; 将高四位置为0
                MOV 	73H,A   		; 放入73H单元
                RET   					;子程序返回
;
;
;;;;;;;;;;;;;;;;;;;;
;;VVV  PROGRAM    ;;
;;;;;;;;;;;;;;;;;;;;
; 时速处理程序,最大显示速度为99公里/小时(用作自行车)
VVV:            MOV     18H,68H   		; 除数赋值
                MOV     17H,69H   		; 除数赋值
                MOV     16H,6AH   		; 除数赋值
                MOV     11H,#00H   		; 被除数赋值
                MOV     12H,#00H   		; 被除数赋值
                MOV     13H,#36H   		; 被除数赋值
                MOV     14H,#0EEH  		; 被除数赋值
                MOV     15H,#80H   		; 被除数赋值
                LCALL  	DIVST           ; 调除法程序
                MOV     14H,#00H   		; 舍去一位
                LCALL   BCDST            ;二进制转BCD码程序
                MOV	A,25H   		;以下将速度值放入显示单元
                ANL 	A,#0FH   		;高四位为0
                MOV 	70H,A   		;放入70H内
                MOV	 A,25H   		;再取数
                SWAP	 A   			;高低四交换
                ANL 	 A,#0FH   		;高四位为0
                MOV	 71H,A   		;放入71H内
                MOV 	 72H,#00H  		;72H为0(高二位LED显示0)
                MOV	 73H,#00H  		;73H为0
                RET   					;子程序返回
;
;
;;;;;;;;;;;;;;;;;
;     DL1MS    ;;
;;;;;;;;;;;;;;;;;
;1毫秒延时程序,LED点亮用
DL1MS:          MOV     R6,#14H
DL1:            MOV     R7,#19H
DL2:            DJNZ    R7,DL2
                DJNZ    R6,DL1
                RET
;
;;;;;;;;;;;;;;;;;
;     DL0.5S    ;;
;;;;;;;;;;;;;;;;;
;出错闪烁用延时(255毫秒)
DL5S:           MOV     R5,#0FFH
DL3:            LCALL   DL1MS
                DJNZ    R5,DL3
                RET
;;;;;;;;;;;;;;;;;
;  除法子程序  ;;
;;;;;;;;;;;;;;;;;
;除法子程序,用作四位除法,除数在16H-19H,被除数在11H-15H。
DIVST:           CLR 	 C   ;运算开始
                 MOV	 A,13H
                 SUBB	 A,18H
                 MOV 	 A,12H
                 SUBB	 A,17H
                 MOV 	 A,11H
                 SUBB	 A,16H
                 JNC	 LOOP4
                 MOV 	B,#10H
        NDIV1:   CLR 	C
                 MOV 	A,15H
                 RLC 	A
                 MOV 	15H,A
                 MOV 	A,14H
                 RLC 	A
                 MOV 	14H,A
                 MOV 	A,13H
                 RLC 	A
                 MOV 	13H,A
                 MOV 	A,12H
                 RLC		A
                 MOV 	12H,A
                 MOV 	A,11H
                 RLC 	A
                 MOV 	11H,A
                 MOV 	F0,C
                 CLR 	C
                 MOV 	A,13H
                 SUBB 	A,18H
                 MOV 	1AH,A
                 MOV 	A,12H
                 SUBB 	A,17H
                 MOV 	19H,A
                 MOV	A,11H
                 SUBB 	A,16H
                 JB 	F0,NDIV2
                 JC 	NDIV3
      NDIV2:     MOV 	11H,A
                 MOV 	A,19H
                 MOV 	12H,A
                 MOV 	A,1AH
                 MOV 	13H,A
                 INC 	15H
       NDIV3:    DJNZ 	B,NDIV1
                 CLR 	F0
       DIVEND:   RET
        LOOP4:   SETB 	F0
                SJMP 	DIVEND
;
;;;;;;;;;;;;;;;;; ;;
;  BCD码转换程序   ;
;;;;;;;;;;;;;;;;; ;;
;将14H、15H单元内数据转换成十进制BCD码放在24H、25H单元内。
     	 BCDST: MOV 	R7,#10H
              	CLR 	C
             	MOV 	25H,#00H
              	MOV 	24H,#00H
      	 KKK:   MOV 	A,15H
              	RLC 	A
              	MOV 	15H,A
             	MOV 	A,14H
              	RLC	A
              	MOV 	14H,A
              	MOV 	A,25H
              	ADDC 	A,25H
              	DA	 	A
              	MOV 	25H,A
              	MOV 	A,24H
              	ADDC 	A,24H
              	DA 	A
              	MOV 	24H,A
              	DJNZ 	R7,KKK
              	RET
;
              	END    			;程序结束

⌨️ 快捷键说明

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