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

📄 hdasghd.asm

📁 That step-by-step electric motor the step-by-step electric motor assembler program , comparison have
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        CALL DEL20US
        RET
;==========================================

;=========================================
;显示状态3的P及T中内容
DISPTT: MOV A , #31H ;显示P
        MOV SBUF , A
        CALL DEL20US
        MOV A , #0FFH ;全灭
        MOV SBUF , A
        CALL DEL20US
        MOV A , #0FFH ;全灭
        MOV SBUF , A
        CALL DEL20US
        MOV R0 , #TTH;显示TH值
        MOV A , @R0
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        MOV R0 , #TTL;显示TTL值;有小数点
        MOV A , @R0
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTABDOT
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        MOV A , @R0;显示TL值
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
;===================================================
;===================================================
;--------显示PASS0或PASS1,由PASS位来决定-----------
DPASS:  MOV A , #31H;P
        MOV SBUF , A
        CALL DEL20US
        MOV A , #11H;A
        MOV SBUF , A
        CALL DEL20US
        MOV A , #49H;S
        MOV SBUF , A
        CALL DEL20US
        MOV A , #49H;S
        MOV SBUF , A
        CALL DEL20US
        MOV A , #0FFH;全灭
        MOV SBUF , A
        CALL DEL20US
        ;据PASS显示0或1
        JB PASS , DP1
        MOV A , #03H    ;0
        MOV SBUF , A
        CALL DEL20US
        RET
DP1:  MOV A , #09FH    ;1
        MOV SBUF , A
        CALL DEL20US
        RET
;===============================================
;*****************************************************************************************

;*****************************保存数据************************************************************
;###############保存状态1循环数##############
SAVEFLOOP:   NOP
             MOV R0 , FLOOPNUMH
             MOV ADDR , #10H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , FLOOPNUMM
             MOV ADDR , #11H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , FLOOPNUML
             MOV ADDR , #12H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             RET
;#######################################

;###############保存状态1运行数#########
SAVEFRUN:    NOP
             MOV R0 , FRUNNUMH
             MOV ADDR , #13H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , FRUNNUMM
             MOV ADDR , #14H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , FRUNNUML
             MOV ADDR , #15H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             RET
;#######################################

;###############保存状态2循环数##############
SAVESLOOP:   NOP
             MOV R0 , SLOOPNUMH
             MOV ADDR , #40H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , SLOOPNUMM
             MOV ADDR , #41H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , SLOOPNUML
             MOV ADDR , #42H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             RET
;#######################################

;###############保存状态2运行数#########
SAVESRUN:    NOP
             MOV R0 , SRUNNUMH
             MOV ADDR , #43H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , SRUNNUMM
             MOV ADDR , #44H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             MOV R0 , SRUNNUML
             MOV ADDR , #45H
             CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
             RET
;#######################################

;##############保存FTI数据######################
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
SAVEFT: MOV R1 , #FT1L
        MOV R2 , #01H
        MOV R3 , #00H
SAVEFTT:MOV A , @R1
        MOV R0 , A
        MOV ADDR , R3
        CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
        MOV A , R2
        CJNE A , #10H , SFTJS
        RET
SFTJS:  INC R1
        INC R2
        INC R3
        JMP SAVEFTT

;#######################################

;##############保存状态2TI数据############
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
SAVEST: MOV R1 , #ST1L
        MOV R2 , #01H
        MOV R3 , #20H
SAVESTT:MOV A , @R1
        MOV R0 , A
        MOV ADDR , R3
        CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
        MOV A , R2
        CJNE A , #14H , SSTJS
        RET
SSTJS:  INC R1
        INC R2
        INC R3
        JMP SAVESTT
;#######################################

;###########保存状态2占三字节数据#############
;-------首地址放R0中,循环次数放在R2中,外存地址放R3中-------------
SAVESQ3: MOV R0 , #LITH1L ;SAVE SECOND QI TA 3 字节
         MOV R2 , #01H
         MOV R3 , #60H
         MOV A , @R0
         MOV R0 , A
         MOV ADDR , R3
         CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
         MOV A , R2
         CJNE A , #0FH , SSQ3OUT
         INC R0
         INC R2
         INC R3
         JMP SAVESQ3
SSQ3OUT: NOP
         RET
;#######################################

;###########保存状态2占2字节数据#############
;-------首地址放R0中,循环次数放在R2中,外存地址放R3中-------------
SAVESQ1: MOV R0 , #LITHHL ;SAVE SECOND QI TA 1 字节数
         MOV R2 , #01H
         MOV R3 , #70H
         MOV A , @R0
         MOV R0 , A
         MOV ADDR , R3
         CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
         MOV A , R2
         CJNE A , #0FH , SSQ1OUT
         INC R0
         INC R2
         INC R3
         JMP SAVESQ1
SSQ1OUT: NOP
         RET
;#####################################################

;##############保存状态3T,PT数据######################
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
SAVETT:   MOV R1 , #TT1L
          MOV R2 , #01H
          MOV R3 , #50H
SAVETT1:  MOV A , @R1
          MOV R0 , A
          MOV ADDR , R3
          CALL SENDDATA ;要发的数放于R0中,一次发一个,地址为:ADDR
          MOV A , R2
          CJNE A , #10H , STTJS
          RET
STTJS:    INC R1
          INC R2
          INC R3
          JMP SAVETT1
;##################################################
;******************************************************************************************

;***********************************读出数据****************************************************

;###############读出状态1循环数####################
READFLOOP:   NOP
             MOV ADDR , #10H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUMH , R0
             MOV ADDR , #11H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUMM , R0
             MOV ADDR , #12H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUML , R0
             RET
;#######################################

;###############读出状态2循环数##############
READSLOOP:   NOP
             MOV ADDR , #40H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV SLOOPNUMH , R0
             MOV ADDR , #41H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV SLOOPNUMM , R0
             MOV ADDR , #42H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV SLOOPNUML , R0
             RET
;#######################################

;###############读出状态1运行数#########
READFRUN:    NOP
             MOV ADDR , #13H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FRUNNUMH , R0
             MOV ADDR , #14H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FRUNNUMM , R0
             MOV ADDR , #15H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FRUNNUML , R0
             RET
;#######################################

;###############读出状态2运行数#########
READSRUN:   NOP
             MOV ADDR , #43H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUMH , R0
             MOV ADDR , #44H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUMM , R0
             MOV ADDR , #45H
             CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
             MOV FLOOPNUML , R0
             RET
;#######################################

;############读出状态1TI的参数值######################
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
READFT: MOV R1 , #FT1L
        MOV R2 , #01H
        MOV R3 , #00H
READFTT:MOV ADDR , R3
        CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
        MOV A , R0
        MOV @R1 , A
        MOV A , R2
        CJNE A , #10H , RFTJS
        RET
RFTJS:  NOP
        INC R1
        INC R2
        INC R3
        JMP READFTT
;########################################

;############读出状态2TI的参数值######################
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
READST: MOV R1 , #ST1L
        MOV R2 , #01H
        MOV R3 , #20H
READSTT:MOV ADDR , R3
        CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
        MOV A , R0
        MOV @R1 , A
        MOV A , R2
        CJNE A , #14H , RSTJS  ;读的数量
        RET
RSTJS:  NOP
        INC R1
        INC R2
        INC R3
        JMP READSTT
;########################################

;############读出状态3T,PT的参数值######################
;-------首地址放R1中,循环次数放在R2中,外存地址放R3中-------------
READTT: MOV R1 , #TT1L
        MOV R2 , #01H
        MOV R3 , #50H
READTTT:MOV ADDR , R3
        CALL  RCVDATA      ;收到的数放于R0中,一次收一个,地址为:ADDR
        MOV A , R0
        MOV @R1 , A
        MOV A , R2
        CJNE A , #10H , RTTJS
        RET
RTTJS:  NOP
        INC R1
        INC R2
        INC R3
        JMP READTTT
;########################################
;*****************************************************************************

;*****************************************************************************
;===========低位BCD码加一;位地址放R0中===============
BOTTOMADD: MOV A , @R0
           ANL A ,#00001111B
           CJNE A ,#00001001B ,BOTADD ;循环数个位加1,如果为10复位
           MOV A , @R0                ;复位
           ANL A ,#11110000B
           MOV @R0 , A
           RET
BOTADD:    INC @R0
           RET
;=======================================
;========高位BCD码加一;位地址放R0中========
HIGHADD:   MOV A , @R0
           ANL A ,#11110000B
           CJNE A ,#10010000B ,HIGADD ;循环数个位加1,如果为10复位
           MOV A , @R0                ;复位
           ANL A ,#00001111B
           MOV @R0 , A
           RET
HIGADD:    MOV A , @R0
           SWAP A;
           INC A
           SWAP A
           MOV @R0 , A
           RET
;======================================
;*****************************************************************************

;***********************************************************************
;*******************************主程序的子程序***************************
;************************************************************************

;%%%%%%%%%%%%%%%%%%%%%%%状态1%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FSTATE:    NOP
;3字节BCD数直接以BCD码的方式存放在内存单元中
;入口条件:高字节在R3,中字节在R4,低字节在R5
           CLR LEDT1  ;高电平不亮
           SETB LEDT2 ;高电平不亮
           SETB LEDT3 ;高电平不亮
           CALL  READFLOOP
           CALL  READFT ;读设置时间值
           CALL DEL5
FRETURN:   CALL  READFRUN
           MOV R3 , FRUNNUMH;
           MOV R4 , FRUNNUMM;
           MOV R5 , FRUNNUML;
           CALL DP3N ;调显示三字节十六进制数 ,显示状态1运行计数
           CALL DEL5
WAITFLOOKK: JB LOOKK , WAITFSETK ;
            CALL DEL100
            JB LOOKK , WAITFSETK  ;
            ;CALL DEL100
            CALL FSTATELOOK

WAITFSETK: JB SETK , WAITFRUNK ;
           CALL DEL100
           JB SETK , WAITFRUNK  ;
           CALL DEL50
           CALL FSTATESET

WAITFRUNK: JB RUNK , WAITFCLRK ;
           CALL DEL100
           JB RUNK , WAITFCLRK  ;
           CALL FSTATERUN

WAITFCLRK: JB CLRK , WAITFSELK ;
           CALL DEL100
           JB CLRK , WAITFSELK  ;
           CALL FSTATECLR

WAITFSELK: JB SELK , FRETURN  ;
           CALL DEL100
           JB SELK , FRETURN  ;
           RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%状态2%%%%%%%%%%%%%%%%%%%%%%%%%%
SSTATE:    NOP
           SETB LEDT1  ;高电平不亮
           CLR  LEDT2 ;高电平不亮
           SETB LEDT3 ;高电平不亮
           CALL  READSRUN
           MOV R3 , SRUNNUMH;
           MOV R4 , SRUNNUMM;
           MOV R5 , SRUNNUML;
           CALL DP3N ;调显示三字节十六进制数 ,显示状态2运行计数

WAITSLOOKK: JB LOOKK , WAITSSETK ;
           CALL DEL100
           JB LOOKK , WAITSSETK  ;
           CALL SSTATELOOK

WAITSSETK: JB SETK , WAITSRUNK ;
           CALL DEL100
           JB SETK , WAITSRUNK  ;

⌨️ 快捷键说明

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