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

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

📁 一款电动卷尺51源程序,带计算器功能,89C52设计的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;******************************************************
LCDDATA   EQU    P2.1
LCDCS     EQU    P2.2
LCDWR     EQU    P2.3
;******************************************************
NUM0      EQU    40H
NUM1      EQU    41H
NUM2      EQU    42H
NUM3      EQU    43H
NUM4      EQU    44H
NUM5      EQU    45H
NUM6      EQU    46H
NUM7      EQU    47H
NUM8      EQU    48H
NUM9      EQU    49H
;******************************
JIA       EQU    4AH
JIAN      EQU    4BH
CHENG     EQU    4CH
CHU       EQU    4DH
POINT     EQU    4EH
DENGYU    EQU    4FH
;******************************
LING      EQU    50H
SHUZI     EQU    51H
YUNSUAN   EQU    52H
TWO       EQU    53H
FOUR      EQU    54H
EIGHT     EQU    55H
SIXTY     EQU    56H
STOP      EQU    57H
;******************************
ONOFF     EQU    58H
FRONT     EQU    59H
BACK      EQU    5AH
CALC      EQU    5BH
INCM      EQU    5CH
FRONT1    EQU    5DH
BACK1     EQU    5EH
;******************************
ERRON1    EQU    60H
ERRON2    EQU    61H
;******************************
SHURU     EQU    62H
FENSHU    EQU    63H
;************************************************************
;************************************************************
;************************************************************
;************************************************************
SUDUZHI   EQU    30H
XIUBUZHI  EQU    31H
MCGAOWEI  EQU    38H
MCDIWEI   EQU    39H
JULIDATA1 EQU    36H
JULIDATA2 EQU    37H
FSDATA1   EQU    3AH
FSDATA2   EQU    3BH
;******************************
DATA0     EQU    40H
DATA6     EQU    41H
DATA5     EQU    42H
DATA4     EQU    43H
;******************************
DATAZ5    EQU    44H
DATAZ4    EQU    45H
DATAZ3    EQU    46H
DATAZ2    EQU    47H
DATAZ1    EQU    48H
DATAZ0    EQU    49H
;******************************
SUDU6     EQU    4AH
SUDU4     EQU    4BH
SUDU2     EQU    4CH
SUDUA     EQU    4DH
SUDUB     EQU    4EH
;******************************
FUHAO     EQU    4FH
;******************************
CALCNUM6  EQU    50H
CALCNUM5  EQU    51H
CALCNUM4  EQU    52H
CALCNUM3  EQU    53H
CALCNUM2  EQU    54H
CALCNUM1  EQU    55H
CALCNUMC  EQU    58H
CALCNUMB  EQU    59H
CALCNUMA  EQU    5AH
CALCNUM9  EQU    5BH
CALCNUM8  EQU    5CH
CALCNUM7  EQU    5DH
DATASHURU EQU    4EH
;*********************************************************************
        ORG    0000H
        LJMP   MAIN
        ORG    0003H
        LJMP   JISHU
        ORG    001BH
        LJMP   TIMER1         ;P3.5/T1中断子程序
        ORG    0030H
MAIN:
        CLR    RS0
        NOP
        CLR    RS1            ;设定00H到07H寄存器工作组0
        MOV    A, #00H
        MOV    R0, #08H
        MOV    R1, #0F7H
HCQ110:
        MOV    @R0, A
        INC    R0
        DJNZ   R1, HCQ110       ;21H到6FH数据存储器清零
        CLR    EA
        MOV    TMOD, #15H      ;T1计数器,  T0定时模式1
        MOV    TH1, #3CH
        MOV    TL1, #0B0H
        MOV    TCON,#01H
        MOV    TL0, #00H
        MOV    TH0, #00H
        MOV    IP,#01H
        MOV    SP, #70H
        NOP
        SETB   ET1
        SETB   TR0
        SETB   TR1                ;启动T0定时器
        SETB   EX0
        SETB   EA
YJCSH:
        SETB   LCDCS
        NOP
        CALL   ML            ;OUTPUT100 命令模式
;********************************
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE         ;清零(WDT,时基发生器内容)
;********************************
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CLR    LCDDATA
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CALL   WRITE            ;禁止WDT溢出标志输出
;********************************
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CLR    LCDDATA
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CALL   WRITE            ;LCD 1/3偏置选项: 4背级
;*********************************
        CLR    LCDDATA
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        CALL   WRITE
        SETB   LCDDATA
        CALL   WRITE
        CALL   WRITE            ;打开系统振荡器
;*********************************
WRDIZHI:
        LCALL  LCDON
        CALL    WR
        CLR     LCDDATA
        CALL    WRITE
        CALL    WRITE
        CALL    WRITE
        CALL    WRITE
        CALL    WRITE
        CALL    WRITE
        MOV     A,#20H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#00H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#20H
        CALL    WRA
        MOV     A,#16H
        CALL    WRA
        SJMP    HCQ
FORWORD00:
        LJMP    FORWORD
HCQ:
        LCALL  ANNIUJC
        JNB    P3.3,FORWORD00
        JNB    P3.1,BACKWORD00
        JB     FRONT,FORWORD00
        JB     BACK,BACKWORD00
        CLR    FRONT1
        CLR    BACK1
        JB     SHUZI,JULISHURU0
        JB     CALC,CALCTER0
        LCALL  DELAY100MS
        SETB   P1.7
        NOP
        NOP
        SETB   P1.6
        LCALL  DELAY100MS
        JNB    ERRON2,HCQ000
        MOV    MCGAOWEI,#00H
        MOV    MCDIWEI,#00H
HCQ000:
        MOV    67H,MCDIWEI
        MOV    66H,MCGAOWEI
        LCALL  DATAJISUAN

        JB     INCM,INCH100
        MOV    60H,#7EH
        MOV    61H,#0BBH
        MOV    62H,#0BBH
        MOV    63H,#0A5H
        SJMP   INCH101
INCH100:
        MOV    60H,#76H
        MOV    61H,#9DH
        MOV    62H,#0ADH
        MOV    63H,#1CH
INCH101:
        MOV    R0,#40H
        LCALL  BTOF
        MOV    R1,#60H
        LCALL  FMUL
        NOP
        LCALL  FTOB
        NOP
        JB     INCM,INCM100
        LCALL  DATACHULI
        LCALL  DATAXIANSHI
        AJMP   INCM101
INCM100:
        LCALL  DATACHULI100
        LCALL  DATAXIANSHI100
INCM101:
        LJMP   HCQ
CALCTER0:
        LJMP   CALCTER
JULISHURU0:
        LJMP   JULISHURU
BACKWORD00:
        LJMP   BACKWORD0
HCQ510:
        LJMP   HCQ11
;****************************************
FORWORD:
        CLR    ERRON2
        JNB    P3.3,FORWORD0
        JB     ERRON1,HCQ510
FORWORD0:
        JB     FRONT1,FORWORD1
        SETB   FRONT1
        CLR    BACK1
        SETB   P1.7
        LCALL  DELAY100MS
        CLR    P1.6
        LCALL  DELAY100MS
        LCALL  DELAY100MS
        MOV    67H,MCDIWEI
        MOV    66H,MCGAOWEI
        LCALL  DATAJISUAN
        JB     INCM,INCH102
        MOV    60H,#7EH
        MOV    61H,#0BBH
        MOV    62H,#0BBH
        MOV    63H,#0A5H
        SJMP   INCH103
INCH102:
        MOV    60H,#76H
        MOV    61H,#9DH
        MOV    62H,#0ADH
        MOV    63H,#1CH
INCH103:
        MOV    R0,#40H
        LCALL  BTOF
        MOV    R1,#60H
        LCALL  FMUL
        LCALL  FTOB
        JB     INCM,INCM102
        LCALL  DATACHULI
        LCALL  DATAXIANSHI
        AJMP   INCM103
INCM102:
        LCALL  DATACHULI100
        LCALL  DATAXIANSHI100
INCM103:
        LJMP   HCQ
FORWORD1:
        SETB   P1.7
        CLR    P1.6
        MOV    67H,MCDIWEI
        MOV    66H,MCGAOWEI
        LCALL  DATAJISUAN
        JB     INCM,INCH104
        MOV    60H,#7EH
        MOV    61H,#0BBH
        MOV    62H,#0BBH
        MOV    63H,#0A5H
        SJMP   INCH105
INCH104:
        MOV    60H,#76H
        MOV    61H,#9DH
        MOV    62H,#0ADH
        MOV    63H,#1CH
INCH105:
        MOV    R0,#40H
        LCALL  BTOF
        MOV    R1,#60H
        LCALL  FMUL
        LCALL  FTOB
        JB     INCM,INCM104
        LCALL  DATACHULI
        LCALL  DATAXIANSHI
        AJMP   INCM105
INCM104:
        LCALL  DATACHULI100
        LCALL  DATAXIANSHI100
INCM105:
        MOV    A,30H
        CJNE   A,#60H,HCQ1
HCQ1:
        JNC    HCQ2
HCQ11:
        CLR    FRONT
        CLR    BACK
        SETB   P1.7
        LCALL  DELAY100MS
        SETB   P1.6
        LCALL  DELAY100MS
        JNB    P3.3,HCQ11
HCQ2:
        JNB    P3.3,FORWORD1
        LJMP   HCQ
;****************************************
BACKWORD0:

BACKWORD:

        JB     BACK1,BACKWORD1
        SETB   BACK1
        CLR    FRONT1
        LCALL  DELAY100MS
        SETB   P1.6
        LCALL  DELAY100MS
        CLR    P1.7
        LCALL  DELAY100MS
        LCALL  DELAY100MS
        MOV    67H,MCDIWEI
        MOV    66H,MCGAOWEI
        LCALL  DATAJISUAN
        JB     INCM,INCH106
        MOV    60H,#7EH
        MOV    61H,#0BBH
        MOV    62H,#0BBH
        MOV    63H,#0A5H
        SJMP   INCH107
INCH106:
        MOV    60H,#76H
        MOV    61H,#9DH
        MOV    62H,#0ADH
        MOV    63H,#1CH
INCH107:
        MOV    R0,#40H
        LCALL  BTOF
        MOV    R1,#60H
        LCALL  FMUL
        LCALL  FTOB
        JB     INCM,INCM106
        LCALL  DATACHULI
        LCALL  DATAXIANSHI
        AJMP   INCM107
INCM106:
        LCALL  DATACHULI100
        LCALL  DATAXIANSHI100
INCM107:
        LJMP   HCQ
BACKWORD1:
        SETB   P1.6
        CLR    P1.7
        MOV    67H,MCDIWEI
        MOV    66H,MCGAOWEI
        LCALL  DATAJISUAN
        JB     INCM,INCH108
        MOV    60H,#7EH
        MOV    61H,#0BBH
        MOV    62H,#0BBH
        MOV    63H,#0A5H
        SJMP   INCH109
INCH108:
        MOV    60H,#76H
        MOV    61H,#9DH
        MOV    62H,#0ADH
        MOV    63H,#1CH
INCH109:
        MOV    R0,#40H
        LCALL  BTOF
        MOV    R1,#60H
        LCALL  FMUL
        LCALL  FTOB
        JB     INCM,INCM108
        LCALL  DATACHULI
        LCALL  DATAXIANSHI
        AJMP   INCM109
INCM108:
        LCALL  DATACHULI100
        LCALL  DATAXIANSHI100
INCM109:
        MOV    A,30H
        CJNE   A,#60H,HCQ3
HCQ3:
        JNC    HCQ4
HCQ31:
        CLR    FRONT
        CLR    BACK
        SETB   P1.7
        SETB   P1.6
HCQ4:
        JNB    P3.1,BACKWORD1
        LJMP   HCQ
;*************************************************************************
JULISHURU:
     MOV    A,#00H
     MOV    CALCNUM1,A
     MOV    CALCNUM2,A
     MOV    CALCNUM3,A
     MOV    CALCNUM4,A
     MOV    CALCNUM5,A
     MOV    CALCNUM6,A
     MOV    FSDATA1,A
     MOV    FSDATA2,A
JULISHURU1:
     LCALL  DATAINPUT
     JNB    INCM,INCH10
     LCALL  JULIXIANSHI100
     AJMP   JULISHURU2
INCH10:
     LCALL  JULIXIANSHI
JULISHURU2:
     CLR    SHUZI
     CLR    FRONT
     CLR    BACK
     LCALL  ANNIUJC
     JB     CALC,CALCTER100
     JB     SHUZI,JULISHURU1
     JB     FENSHU,JULISHURU1
     JB     FRONT,JULIHUANSUAN
     JB     BACK,JULIHUANSUAN
     LJMP   JULISHURU2
CALCTER100:
     LJMP   CALCTER
JULIHUANSUAN:
     JNB    INCM,JULI100
     MOV    A,CALCNUM6
     MOV    CALCNUM3,A
     MOV    A,CALCNUM5
     SWAP   A
     ADD    A,CALCNUM4
     MOV    CALCNUM2,A
     MOV    CALCNUM4,#04H
     MOV    CALCNUMC,#03H
     MOV    CALCNUMB,#13H
     MOV    CALCNUMA,#85H
     MOV    CALCNUM9,#45H
     SJMP   JULI101
JULI100:
     MOV    A,CALCNUM2
     SWAP   A
     ADD    A,CALCNUM1
     MOV    CALCNUM1,A
     MOV    A,CALCNUM4
     SWAP   A
     ADD    A,CALCNUM3
     MOV    CALCNUM2,A
     MOV    CALCNUM3,#00H
     MOV    CALCNUM4,#06H
     MOV    CALCNUMC,#01H
     MOV    CALCNUMB,#54H
     MOV    CALCNUMA,#54H
     MOV    CALCNUM9,#54H
JULI101:
     MOV    R0,#CALCNUMC
     LCALL  BTOF
     MOV    R0,#CALCNUM4
     LCALL  BTOF
     MOV    R1,#CALCNUMC
     LCALL  FMUL
     LCALL  FTOD
     JNB    F0,JULI10
     MOV    R4,CALCNUM4
     MOV    R5,CALCNUM3
     LJMP   JULI11
JULI10:
     MOV    R4,#00H
     MOV    R5,CALCNUM4
JULI11:
   ;  LCALL  JULIXIUBU
     MOV    A,R5
     SUBB   A,#2EH              ;惯性修正
     MOV    R5,A
     JC     JULI1
     LJMP   JULI2
JULI1:
     DEC    R4
JULI2:
     JB     BACK,BACKWORD3
     SETB   SHURU
     MOV    MCGAOWEI,#00H
     MOV    MCDIWEI,#00H
     MOV    JULIDATA1,R4
     MOV    JULIDATA2,R5
     LJMP   FORWORD
BACKWORD3:
     MOV    MCGAOWEI,R4
     MOV    MCDIWEI,R5
     LJMP   BACKWORD
ERRON:
     LJMP   JULISHURU
;**********************************************************
JULIXIUBU:
     MOV   A,30H
     CJNE  A,#9AH,XIUBU1
XIUBU1:
     JC    XIUBU2
     MOV   31H,#3CH
XIUBU2:
     CJNE  A,#97H,XIUBU3
XIUBU3:
     JC    XIUBU4
     MOV   31H,#3AH
XIUBU4:
     CJNE  A,#94H,XIUBU5
XIUBU5:
     JC    XIUBU6
     MOV   31H,#38H
XIUBU6:
     CJNE  A,#8EH,XIUBU7
XIUBU7:
     JC    XIUBU8
     MOV   31H,#36H
XIUBU8:
     CJNE  A,#8AH,XIUBU9
XIUBU9:
     JC    XIUBU10
     MOV   31H,#34H
XIUBU10:
     CJNE  A,#82H,XIUBU11
XIUBU11:
     JC    XIUBU12
     MOV   31H,#31H
XIUBU12:
     CJNE  A,#7EH,XIUBU13
XIUBU13:
     JC    XIUBU14
     MOV   31H,#3CH
XIUBU14:
     CJNE  A,#94H,XIUBU15
XIUBU15:
     JC    XIUBU16
     MOV   31H,#38H
XIUBU16:
     RET
;*************************************************************************
HCQ5:
     MOV    A, #20H
     LCALL  WRA
     MOV    A, #20H
     LCALL  WRA
     MOV    A, #20H
     LCALL  WRA
     MOV    A, #20H
     LCALL  WRA
     MOV    A, #20H
     LCALL  WRA

⌨️ 快捷键说明

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