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

📄 电动卷尺贴片段码控制程序.asm

📁 一款电动卷尺51源程序,带计算器功能,89C52设计的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
     CALL   WRA
     MOV    A,#0FH
     CALL   WRA
     MOV    A,#01H
     CALL   WRA
     MOV    A,#06H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT20:
     CJNE   A,#04H,FT21
     MOV    A,#20H
     CALL   WRA
     MOV    A,#0BH
     CALL   WRA
     MOV    A,#04H
     CALL   WRA
     MOV    A,#20H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT21:
     CJNE   A,#03H,FT22
     MOV    A,#20H
     CALL   WRA
     MOV    A,#0DH
     CALL   WRA
     MOV    A,#01H
     CALL   WRA
     MOV    A,#06H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT22:
     CJNE   A,#02H,FT23
     MOV    A,#20H
     CALL   WRA
     MOV    A,#0BH
     CALL   WRA
     MOV    A,#08H
     CALL   WRA
     MOV    A,#20H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT23:
     CJNE   A,#01H,FT24
     MOV    A,#20H
     CALL   WRA
     MOV    A,#0BH
     CALL   WRA
     MOV    A,#01H
     CALL   WRA
     MOV    A,#06H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT24:
     MOV    A,#20H
     CALL   WRA
     MOV    A,#20H
     CALL   WRA
     MOV    A,#20H
     CALL   WRA
     MOV    A,#20H
     CALL   WRA
     MOV    A,#14H
     CALL   WRA
     LJMP   FT100
FT100:
     RET
;*********************************************************************
;(20)标号:BCDH 功能:单字节BCD码整数转换成单字节十六进制整数

;入口条件:待转换的单字节BCD码整数在累加器A中。
;出口信息:转换后的单字节十六进制整数仍在累加器A中。
;影响资源:PSW、A、B、R4 堆栈需求: 2字节
BCDH:
     MOV B,#10H                 ;分离十位和个位
     DIV AB
     MOV R4,B                   ;暂存个位
     MOV B,#10                  ;将十位转换成十六进制
     MUL AB
     ADD A,R4                   ;按十六进制加上个位
     RET
;*********************************************************************
;(21)标号: BH2 功能:双字节BCD码整数转换成双字节十六进制整数

;入口条件:待转换的双字节BCD码整数在R2、R3中。
;出口信息:转换后的双字节十六进制整数仍在R2、R3中。
;影响资源:PSW、A、B、R2、R3、R4 堆栈需求: 4字节
BCDH2:
     MOV A,R3                   ;将低字节转换成十六进制
     LCALL BCDH
     MOV R3,A
     MOV A,R2                   ;将高字节转换成十六进制
     LCALL BCDH
     MOV B,#100                 ;扩大一百倍
     MUL AB
     ADD A,R3                   ;和低字节按十六进制相加
     MOV R3,A
     CLR A
     ADDC A,B
     MOV R2,A
     RET
;*************************************************************************
;(23)标号: BHD2 功能:双字节BCD码小数转换成双字节十六进制小数

;入口条件:待转换的双字节BCD码小数在R4、R5中。
;出口信息:转换后的双字节十六进制小数在R2、R3中。*
;影响资源:PSW、A、R2~R6 堆栈需求: 2字节
BHD2:
     MOV R6,#10H                ;准备计算两个字节小数
BHD3:
     MOV A,R5                   ;按十进制倍增
     ADD A,R5
     DA A
     MOV R5,A
     MOV A,R4
     ADDC A,R4
     DA A
     MOV R4,A
     MOV A,R3                   ;将进位标志移入结果中
     RLC A
     MOV R3,A
     MOV A,R2
     RLC A
     MOV R2,A
     DJNZ R6,BHD3               ;共计算16bit小数
     MOV A,R4
     ADD A,#0B0H                ;剩余部分达到0.50否?
     JNC BHD4                   ;四舍
     INC R3                     ;五入
     MOV A,R3
     JNZ BHD4
     INC R2
BHD4:
     RET
;*********************************************************************
DATAJISUAN:
        PUSH    02H
        CLR     A               ;BCD码初始化
        MOV     DATA6,A
        MOV     DATA5,A
        MOV     DATA4,A
        MOV     R2,#10H         ;转换双字节十六进制整数
DJISUAN:
        MOV     A,67H       ;从高端移出待转换数的一位到CY中
        RLC     A
        MOV     67H,A
        MOV     A,66H
        RLC     A
        MOV     66H,A
        MOV     A,DATA4         ;BCD码带进位自身相加,相当于乘2
        ADDC    A,DATA4
        DA      A               ;十进制调整
        MOV     DATA4,A
        MOV     A,DATA5
        ADDC    A,DATA5
        DA      A
        MOV     DATA5,A
        MOV     A,DATA6
        ADDC    A,DATA6
        MOV     DATA6,A
        DJNZ    R2,DJISUAN
        MOV     DATA0,#06H
        POP     02H
        RET
;******************************************************

;*************************************
DELAY1MS:
        PUSH   04H
        MOV    R4, #64H           ;0FEH
DEL1:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DJNZ   R4, DEL1
        NOP
        POP    04H
        RET
        NOP
        NOP
        LJMP    MAIN
;*************************************
DELAY1S:
        PUSH    06H
        MOV     R6,#04H
DEL2:
        NOP
        LCALL   DELAY100MS
        NOP
        DJNZ    R6,DEL2
        NOP
        POP     06H
        NOP
        RET
        NOP
        NOP
        LJMP    MAIN
;*************************************
DELAY100MS:
        PUSH    05H
        MOV     R5,#64H
DEL3:
        NOP
        LCALL   DELAY1MS
        NOP
        DJNZ    R5,DEL3
        NOP
        POP     05H
        NOP
        RET
        NOP
        NOP
        LJMP    MAIN
;*************************************
ANNIUJC:
        MOV     28H,#00H
        MOV     29H,#00H
        MOV     2AH,#00H
        CLR     P2.5
        JB      P1.0,ANNIU1
        LCALL   DELAY100MS
        SETB    YUNSUAN
        SETB    CHU
        JNB     P1.0,$
        SETB    P2.5
        LJMP    ANNIU26
ANNIU1:
        JB      P1.1,ANNIU2
        LCALL   DELAY100MS
        SETB    NUM9
        SETB    SHUZI
        JNB     P1.1,$
        SETB    P2.5
        LJMP    ANNIU26
ANNIU2:
        JB      P1.2,ANNIU3
        LCALL   DELAY100MS
        SETB    NUM8
        SETB    SHUZI
        JNB     P1.2,$
        SETB    P2.5
        LJMP    ANNIU26
ANNIU3:
        JB      P1.3,ANNIU4
        LCALL   DELAY100MS
        SETB    NUM7
        SETB    SHUZI
        JNB     P1.3,$
        SETB    P2.5
        LJMP    ANNIU26
ANNIU4:
        JB      P1.5,ANNIU5
        LCALL   DELAY100MS
        SETB    NUM4
        SETB    SHUZI
        JNB     P1.5,$
        SETB    P2.5
        LJMP    ANNIU26
ANNIU5:
        JB      P1.4,ANNIU6
        LCALL   DELAY100MS
        SETB    NUM5
        SETB    SHUZI
        JNB     P1.4,$
        SETB    P2.5
        LJMP    ANNIU26
;*********************************
ANNIU6:
        SETB    P2.5
        CLR     P2.4
        JB      P1.4,ANNIU7
        LCALL   DELAY100MS
        SETB    NUM6
        SETB    SHUZI
        JNB     P1.4,$
        SETB    P2.4
        LJMP    ANNIU26
ANNIU7:
        JB      P1.5,ANNIU8
        LCALL   DELAY100MS
        SETB    YUNSUAN
        SETB    CHENG
        JNB     P1.5,$
        SETB    P2.4
        LJMP    ANNIU26
ANNIU8:
        JB      P1.0,ANNIU9
        LCALL   DELAY100MS
        SETB    JIAN
        SETB    YUNSUAN
        JNB     P1.0,$
        SETB    P2.4
        LJMP    ANNIU26
ANNIU9:
        JB      P1.1,ANNIU10
        LCALL   DELAY100MS
        SETB    NUM3
        SETB    SHUZI
        JNB     P1.1,$
        SETB    P2.4
        LJMP    ANNIU26
ANNIU10:
        JB      P1.2,ANNIU11
        LCALL   DELAY100MS
        SETB    NUM2
        SETB    SHUZI
        JNB     P1.2,$
        SETB    P2.4
        LJMP    ANNIU26
ANNIU11:
        JB      P1.3,ANNIU12
        LCALL   DELAY100MS
        SETB    NUM1
        SETB    SHUZI
        JNB     P1.3,$
        SETB    P2.4
        LJMP    ANNIU26
;*********************************
ANNIU12:
        SETB    P2.4
        CLR     P2.7
        JB      P1.0,ANNIU13
        LCALL   DELAY100MS
        SETB    YUNSUAN
        SETB    JIA
        JNB     P1.0,$
        SETB    P2.7
        LJMP    ANNIU26
ANNIU13:
        JB      P1.1,ANNIU14
        LCALL   DELAY100MS
        SETB    DENGYU
        JNB     P1.1,$
        SETB    P2.7
        LJMP    ANNIU26
ANNIU14:
        JB      P1.2,ANNIU15
        LCALL   DELAY100MS
        SETB    POINT
        JNB     P1.2,$
        SETB    P2.7
        LJMP    ANNIU26
ANNIU15:
        JB      P1.3,ANNIU16
        LCALL   DELAY100MS
        SETB    NUM0
        SETB    SHUZI
        JNB     P1.3,$
        SETB    P2.7
        LJMP    ANNIU26
ANNIU16:
        JB      P1.4,ANNIU17
        LCALL   DELAY100MS
        SETB    FOUR
        SETB    FENSHU
        JNB     P1.4,$
        SETB    P2.7
        LJMP    ANNIU26
ANNIU17:
        JB      P1.5,ANNIU18
        LCALL   DELAY100MS
        SETB    TWO
        SETB    FENSHU
        JNB     P1.5,$
        SETB    P2.7
        LJMP    ANNIU26
;**********************************
ANNIU18:
        SETB    P2.7
        CLR     P2.6
        JB      P1.0,ANNIU19
        LCALL   DELAY100MS
        SETB    STOP
        CLR     FRONT
        CLR     BACK
        JNB     P1.0,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU19:
        JB      P1.1,ANNIU20
        LCALL   DELAY1S
        CPL     ONOFF
        JNB     P1.1,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU20:
        JB      P1.2,ANNIU21
        LCALL   DELAY100MS
        CPL     INCM
        JNB     P1.2,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU21:
        JB      P1.3,ANNIU22
        LCALL   DELAY100MS
        CPL     CALC
        JNB     P1.3,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU22:
        JB      P1.4,ANNIU23
        LCALL   DELAY100MS
        SETB    EIGHT
        SETB    FENSHU
        JNB     P1.4,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU23:
        JB      P1.5,ANNIU24
        LCALL   DELAY100MS
        SETB    SIXTY
        SETB    FENSHU
        JNB     P1.5,$
        SETB    P2.6
        LJMP    ANNIU26
ANNIU24:
        SETB    P2.6
        JB      P3.3,ANNIU25
        LCALL   DELAY1S
        JB      P3.3,ANNIU241
        LJMP    ANNIU26
ANNIU241:
        CLR     BACK
        SETB    FRONT
        LJMP    ANNIU26
ANNIU25:
        JB      P3.1,ANNIU26
        LCALL   DELAY1S
        JB      P3.1,ANNIU251
        LJMP    ANNIU26
ANNIU251:
        CLR     FRONT
        SETB    BACK
ANNIU26:
        RET
        NOP
        NOP
        LJMP    MAIN

;**********************************************
WRITE:
        CLR     LCDWR
        NOP
        NOP
        SETB    LCDWR
        NOP
        NOP
        RET
;*************************************
WR:
        CLR     LCDCS
        SETB    LCDDATA
        CALL    WRITE
        CLR     LCDDATA
        CALL    WRITE
        SETB    LCDDATA
        CALL    WRITE
        RET
;*************************************
ML:
        CLR    LCDCS
        NOP
        SETB   LCDDATA
        CALL   WRITE
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        RET
;*************************************
LCDON:
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDCS
        RET
;*************************************
LCDOFF:
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        SETB   LCDCS
        RET
;*************************************
TABLE:
        DB 82H,9FH,0C1H,85H,9CH,0A4H,0A0H,8FH,80H,84H
        DB 02H,1FH,041H,05H,1CH,024H,020H,0FH,00H,04H
        DB 0FCH,0F7H,0FBH,0E0H,0E8H,0FDH
WRA:
        CJNE   A,#1AH,WRA1
WRA1:
        JC    WRA2
        MOV    A,#0FFH
        AJMP   WRA3
WRA2:
        MOV    DPTR, #TABLE
        MOVC   A, @A+DPTR
WRA3:
        JB      ACC.0,WRA4
        SETB    LCDDATA
        JMP     WRA5
WRA4:
        CLR     LCDDATA
WRA5:
        CALL    WRITE
        JB      ACC.1,WRA6
        SETB    LCDDATA
        JMP     WRA7
WRA6:

        CLR     LCDDATA
WRA7:
        CALL    WRITE
        JB      ACC.2,WRA8
        SETB    LCDDATA
        JMP     WRA9
WRA8:
        CLR     LCDDATA
WRA9:
        CALL    WRITE
        JB      ACC.3,WRA10
        SETB    LCDDATA
        JMP     WRA11
WRA10:
        CLR     LCDDATA
WRA11:
        CALL    WRITE
        JB      ACC.4,WRA12
        SETB    LCDDATA
        JMP     WRA13
WRA12:
        CLR     LCDDATA
WRA13:
        CALL    WRITE
        JB      ACC.5,WRA14
        SETB    LCDDATA
        JMP     WRA15
WRA14:
        CLR     LCDDATA
WRA15:
        CALL    WRITE
        JB      ACC.6,WRA16
        SETB    LCDDATA
        JMP     WRA17
WRA16:
        CLR     LCDDATA
WRA17:
        CALL    WRITE
        JB      ACC.7,WRA18
        SETB    LCDDATA
        JMP     WRA19
WRA18:
        CLR     LCDDATA
WRA19:
        CALL    WRITE
        RET
;*************************************
;三字节浮点数运算
;**********************************************************
;(1) 标号: BTOF 功能:浮点BCD码转换成格式化浮点数
;入口条件:浮点BCD码操作数在[R0]中。
;出口信息:转换成的格式化浮点数仍在[R0]中。
BTOF:
     INC R0
     INC R0
     INC R0                     ;READ L
     MOV 07H,@R0
     DEC R0
     MOV 06H,@R0
     DEC R0
     MOV 05H,@R0                ;R5R6R7=0.HML(DEC)
     DEC R0                     ;R0 TO JIE_MA

⌨️ 快捷键说明

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