📄 hdasghd.asm
字号:
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 + -