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

📄 hdasghd.asm

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

WAITSRUNK: JB RUNK , WAITSCLRK ;
           CALL DEL100
           JB RUNK , WAITSCLRK  ;
           CALL SSTATERUN

WAITSCLRK: JB CLRK , WAITSRESK ;
           CALL DEL100
           JB CLRK , WAITSRESK  ;
           CALL SSTATECLR

WAITSRESK: JB RESK , WAITSSELK ;
           CALL DEL100
           JB RESK , WAITSSELK  ;
           CALL SSTATERES

WAITSSELK: JB SELK , WAITSLOOKK  ;
           CALL DEL100
           JB SELK , WAITSLOOKK  ;
           RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%状态3%%%%%%%%%%%%%%%%%%%%%%%%%%%
TSTATE:    NOP
           SETB LEDT1  ;高电平不亮
           SETB LEDT2 ;高电平不亮
           CLR  LEDT3 ;高电平不亮
TRETURN:   CALL  READTT;TTI,TT
           CALL  DISPTT ;TT
           ;CALL  DEL10
WAITTLOOKK:JB LOOKK , WAITTSETK ;
           CALL DEL100
           JB LOOKK , WAITTSETK  ;
           CALL TSTATELOOK

WAITTSETK: JB SETK , WAITTRUNK ;
           CALL DEL100
           JB SETK , WAITTRUNK  ;
           CALL DEL50
           CALL TSTATESET

WAITTRUNK: JB RUNK , WAITTSELK ;
           CALL DEL100
           JB RUNK , WAITTSELK  ;
           CALL TSTATERUN

WAITTSELK: JB SELK , TRETURN  ;
           CALL DEL100
           JB SELK , TRETURN  ;
           RET

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&
;*****************************************************************************
;&&&&&&&&&&&&&&&&&&状态1,参数查询&&&&&&&&&&&&&&&&&&
FSTATELOOK:NOP
;---------显示循环数----------------
;入口信息:三字节的循环数BCD码数在R3、R4、R5中。
           MOV R3 , FLOOPNUMH;
           MOV R4 , FLOOPNUMM;
           MOV R5 , FLOOPNUML;
           CALL DP3N ;调显示三字节十六进制数 ,显示状态1循环数
;------------------------------------
;-----------清空单元--------------
           MOV R7 ,#00H ;变量i放R1中
           MOV T1S , #00H;清空T1S计时单元
;----------------------------------------
;-------------------------------------
WAITFLOOK: NOP
           MOV A , T1S
           CLR C
           SUBB A , #10;判断是否到10S
           JC  FJIXU;未到10S跳到,等待LOOK键按下
           RET
;---------------------------------
FJIXU:     JB LOOKK , WAITFLOOK  ;
           CALL DEL100
           JB LOOKK , WAITFLOOK  ;
           MOV T1S , #00H;清空T1S计时单元
           INC R7;
           CJNE  R7 ,#09H,DISPFTI;//跳到t1~t8;R1为9时对PASS操作
;------------------
           CALL DPASS;
WAITADDK:  JB LOOKK , WADDK;
           CALL DEL100
           JB LOOKK , WADDK;
           MOV R3 , FRUNNUMH;
           MOV R4 , FRUNNUMM;
           MOV R5 , FRUNNUML;
           CALL DP3N ;调显示三字节十六进制数 ,显示状态1运行计数
           RET
WADDK:     JB ADDK , WAITADDK;
           CALL DEL100;
           JB ADDK , WAITADDK ;
           CPL PASS
           CALL DPASS
           JMP WAITADDK
DISPFTI:   CALL  DISPFT1
           JMP  WAITFLOOK
;=========================================
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;&&&&&&&&&&&&&&&&&&状态1,参数设置&&&&&&&&&&&&&&&&&&&&&&&&
FSTATESET:NOP

;---------清空计时单元,计超时用-----------
           MOV R6 ,#01H ;R6为位标志
           MOV R7 ,#00H ;R7为Ti循环标志T0为LOOPNUM,T1~T8为TI
           MOV T1S , #00H;清空T1S计时单元
;-------------------------------------
;==========循环程序===================================
;----------判断是否超时---------------
WFSET:     MOV A , T1S
           CLR C
           SUBB A , #30;判断是否到30S
           JC FSETCOUT;未到10S跳到SETOUT,等待SET键按下
           RET ;到10S调出
;----------判断R7是否为到顶----------
FSETCOUT:  MOV A , R7
           CLR C
           SUBB A , #09H
           JC FSET;
           RET;JMP FSTATE ;
;-----------------------------------
FSET:      CALL  WFSETK
           CALL  WFNEXTK
           CALL  WFADDK
           CALL DISPFSET
           CALL   DEL5
           CALL SAVEFLOOP;保存设置循环数
           CALL SAVEFT ;保存设置时间值
           JMP WFSET;
;======================================================
;===========================
WFSETK:    JB SETK , FSETOUT  ;
           CALL DEL100
           JB SETK , FSETOUT  ;
           CALL DEL50
           JB PASS ,WFSETKJS
           MOV R7 , #09H
           RET
WFSETKJS:  MOV T1S , #00H;清空T1S计时单元
           MOV R6 ,#01H ;位标志复位
           INC R7;R7中放LOOP,TI标志
FSETOUT:   RET
;============================
;===========================
WFNEXTK:   JB NEXTK , FNEXTOUT  ;
           CALL DEL100
           JB NEXTK , FNEXTOUT  ;
           MOV T1S , #00H;清空T1S计时单元
           INC R6;
           CJNE  R7 ,#00H,ISTI;//
           CJNE  R6 ,#07H,FNEXTOUT;//NEXT位是否到顶
           MOV R6 , #01H ;位标志复位
           JMP FNEXTOUT
ISTI:      CJNE  R6 ,#04H,FNEXTOUT;//跳到SET键按下的动作
           MOV R6 , #01H ;位标志复位
FNEXTOUT:  RET
;=============================
;=============================
WFADDK:    JB ADDK , FADDOUT;
           CALL DEL100
           JB ADDK , FADDOUT;
           MOV T1S , #00H;清空T1S计时单元
;-----------+++++--------------
           CJNE R7 , #00H ,TIADD;R7等于0
           CALL  FLNB1ADD;
           RET
TIADD:     CALL T1ADD
FADDOUT:   RET
;================================
;=============FLNB1ADD===========
FLNB1ADD:  CJNE R6 , #01H ,FLNB2ADD
           MOV  R0 , #FLOOPNUML
           CALL  BOTTOMADD
           RET
;-----------
FLNB2ADD:  CJNE R6 , #02H ,FLNB3ADD
           MOV  R0 , #FLOOPNUML
           CALL  HIGHADD
           RET
;----------
FLNB3ADD:  CJNE R6 , #03H ,FLNB4ADD
           MOV  R0 , #FLOOPNUMM
           CALL  BOTTOMADD
           RET
;---------
FLNB4ADD:  CJNE R6 , #04H ,FLNB5ADD
           MOV  R0 , #FLOOPNUMM
           CALL  HIGHADD
           RET
;----------
FLNB5ADD:  CJNE R6 , #05H ,FLNB6ADD
           MOV  R0 , #FLOOPNUMH
           CALL  BOTTOMADD
           RET
;-----------
FLNB6ADD:  CJNE R6 , #06H ,FLOUT
           MOV  R0 , #FLOOPNUMH
           CALL  HIGHADD
           RET
FLOUT:     RET
;================================
;==============TIADD==================
T1ADD:     CJNE R7 , #01H ,T2ADD
FT1B1ADD:  CJNE R6 , #01H ,FT1B2ADD
           MOV  R0 , #FT1L
           CALL  BOTTOMADD
           RET
;----------
FT1B2ADD:  CJNE R6 , #02H ,FT1B3ADD
           MOV  R0 , #FT1L
           CALL  HIGHADD
           RET
;----------
FT1B3ADD:  CJNE R6 , #03H ,FT1OUT
           MOV  R0 , #FT1H
           CALL  BOTTOMADD
           RET
FT1OUT:    RET
;----------++++++++------------
T2ADD:     CJNE R7 , #02H ,T3ADD
FT2B1ADD:  CJNE R6 , #01H ,FT2B2ADD
           MOV  R0 , #FT2L
           CALL  BOTTOMADD
           RET
;-------
FT2B2ADD:  CJNE R6 , #02H ,FT2B3ADD
           MOV  R0 , #FT2L
           CALL  HIGHADD
           RET
;-------
FT2B3ADD:  CJNE R6 , #03H ,FT2OUT
           MOV  R0 , #FT2H
           CALL  BOTTOMADD
           RET
FT2OUT:    RET
;-----------++++++++++-----
T3ADD:     CJNE R7 , #03H ,T4ADD
FT3B1ADD:  CJNE R6 , #01H ,FT3B2ADD
           MOV  R0 , #FT3L
           CALL  BOTTOMADD
           RET
;--------
FT3B2ADD:  CJNE R6 , #02H ,FT3B3ADD
           MOV  R0 , #FT3L
           CALL  HIGHADD
           RET
;---------
FT3B3ADD:  CJNE R6 , #03H ,FT3OUT
           MOV  R0 , #FT3H
           CALL  BOTTOMADD
           RET
FT3OUT:    RET
;------++++++++++-------
T4ADD:     CJNE R7 , #04H ,T5ADD
FT4B1ADD:  CJNE R6 , #01H ,FT4B2ADD
           MOV  R0 , #FT4L
           CALL  BOTTOMADD
           RET
;----------
FT4B2ADD:  CJNE R6 , #02H ,FT4B3ADD
           MOV  R0 , #FT4L
           CALL  HIGHADD
           RET
;--------
FT4B3ADD:  CJNE R6 , #03H ,FT4OUT
           MOV  R0 , #FT4H
           CALL  BOTTOMADD
           RET
FT4OUT:    RET
;-----+++++++++++++++--------
T5ADD:     CJNE R7 , #05H ,T6ADD
FT5B1ADD:  CJNE R6 , #01H ,FT5B2ADD
           MOV  R0 , #FT5L
           CALL  BOTTOMADD
           RET
;---------
FT5B2ADD:  CJNE R6 , #02H ,FT5B3ADD
           MOV  R0 , #FT5L
           CALL  HIGHADD
           RET
;----------
FT5B3ADD:  CJNE R6 , #03H ,FT5OUT
           MOV  R0 , #FT5H
           CALL  BOTTOMADD
           RET
FT5OUT:    RET
;-------++++++++++++++------
T6ADD:     CJNE R7 , #06H ,T7ADD
FT6B1ADD:  CJNE R6 , #01H ,FT6B2ADD
           MOV  R0 , #FT6L
           CALL  BOTTOMADD
           RET
;-----------
FT6B2ADD:  CJNE R6 , #02H ,FT6B3ADD
           MOV  R0 , #FT6L
           CALL  HIGHADD
           RET
;----------
FT6B3ADD:  CJNE R6 , #03H ,FT6OUT
           MOV  R0 , #FT6H
           CALL  BOTTOMADD
           RET
FT6OUT:    RET
;---------+++++++++--------------
T7ADD:     CJNE R7 , #07H ,T8ADD
FT7B1ADD:  CJNE R6 , #01H ,FT7B2ADD
           MOV  R0 , #FT7L
           CALL  BOTTOMADD
           RET
;--------
FT7B2ADD:  CJNE R6 , #02H ,FT7B3ADD
           MOV  R0 , #FT7L
           CALL  HIGHADD
           RET
;--------
FT7B3ADD:  CJNE R6 , #03H ,FT7OUT
           MOV  R0 , #FT7H
           CALL  BOTTOMADD
           RET
FT7OUT:    RET
;---------+++++++++++-------------
T8ADD:     CJNE R7 , #08H ,FT8OUT
FT8B1ADD:  CJNE R6 , #01H ,FT8B2ADD
           MOV  R0 , #FT8L
           CALL  BOTTOMADD
           RET
;---------
FT8B2ADD:  CJNE R6 , #02H ,FT8B3ADD
           MOV  R0 , #FT8L
           CALL  HIGHADD
           RET
;---------
FT8B3ADD:  CJNE R6 , #03H ,FT8OUT
           MOV  R0 , #FT8H
           CALL  BOTTOMADD
           RET
FT8OUT:    RET
;==================================
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;&&&&&&&&&&&&&&&&&&&&状态1,运行&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FSTATERUN:   NOP
             MOV R3 , FRUNNUMH;;显示运行数
             MOV R4 , FRUNNUMM;
             MOV R5 , FRUNNUML;
             CALL DP3N ;调显示三字节十六进制数 ,显示状态1运行计数
             ;--------------------
             CALL FRUNDSUB ;FIRST RUN DELAY SUB
             ;---------------
RUNADDC:     MOV R0 , #FRUNNUML;FRUNNUMBCD码加1
             CALL RUNNUMADDC
             ;---------------
             CALL  SAVEFRUN ;保存运行数
             ;---------------
             CALL COMPARE ;比较大小
             ;---------------
FSTOP:       JB  LEDRUN , FSTATERUN
             RET
;===============================================

;================================================
FRUNDSUB:    NOP
             SETB S1
             SETB LED1
             SETB LEDRUN
             CALL DISPLED
             ;延时FT1子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT1H
             MOV R1 , #FT1L
             CALL DELAYTI
             SETB S2
             SETB LED2
             CALL DISPLED
             ;延时FT2子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT2H
             MOV R1 , #FT2L
             CALL DELAYTI
             CLR  S2
             CLR  LED2
             CALL DISPLED
             ;延时FT3子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT3H
             MOV R1 , #FT3L
             CALL DELAYTI
             CLR  S1
             CLR  LED1
             CALL DISPLED
             ;延时FT4子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT4H
             MOV R1 , #FT4L
             CALL DELAYTI
             SETB S2
             SETB LED2
             CALL DISPLED
             ;延时FT5子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT5H;?????????????????
             MOV R1 , #FT5L
             CALL DELAYTI
             CLR  S2
             CLR  LED2
             CALL DISPLED
             ;延时FT6子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT6H
             MOV R1 , #FT6L
             CALL DELAYTI
             SETB S3
             SETB LED3
             CALL DISPLED
             ;延时FT7子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT7H
             MOV R1 , #FT7L
             CALL DELAYTI
             CLR S3
             CLR LED3
             CALL DISPLED
             ;延时FT8子程序 R0,R1单元分别放TIH,TIL单元地址,R6为转换后的秒,R7为转换后的100MS
             MOV R0 , #FT8H
             MOV R1 , #FT8L
             CALL DELAYTI;延时FT8
             RET
;================================================================

;================================================================
;延时TI子程序 R0,R1单元分别放TIH,TIL单

⌨️ 快捷键说明

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