📄 idwracstp.asm
字号:
;************************************************************************
;************************************************************************
;步进电机的动作
;1.上电后,顺时针关闭110度+5度
;2.开机后,逆时针开45度
;3.如果扫风,则在45度到110度之间摆动
;4.如关闭,以当前位置+5度关闭
;************************************************************************
;* Module Name: *
;* Function: *
;* Input: *
;* Output: *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
STEPctrl:
BTJT f_STP14ms,$+4+1
RET
BRES f_STP14ms
STPtime:
; CALL !OUT4094
LD A,D_STPstatus
CMP A,#n_STPclose
JREQ STPclose
CMP A,#n_STPreset
JREQ STPreset
CMP A,#n_STPopen
JREQ STPopen
CMP A,#n_STPset
JREQ STPset
CMP A,#n_STPrun
JRNE STPnowSTOP
JP STPrun
STPnowSTOP:
; CMP A,#n_STPstop
JP STPstop
;...
STPerr:
;========================================================================
STPreset:
LD A,D_STPnow
CMP A,#n_STPd60 ;全开角度
JRNE $+2+3
BR !STP2close
BSET f_STPup
LD A,#n_STPd60
LD D_STPobj,A
CALL !STPout
RET
;========================================================================
STPclose:
BRES f_STPok
CMP D_STPnow,#n_STPd0 ;全关角度
JREQ STP2open
BRES f_STPup
LD A,#n_STPd0
LD D_STPobj,A
CALL !STPout
RET
;------------------------------------------------------------------------
STPstop:
STPoff:
STPoff1:
BRES o_STP1
BRES o_STP2
BRES o_STP3
BRES o_STP4
RET
;========================================================================
STPset:
BTJF f_PWRon,STPoff1
BF f_SWGset,$STPoff1
CMP M_FANsp,#n_FANoff
BEQ STPoff1
BR STP2run
RET
;========================================================================
STPopen:
LD A,D_STPnow
CMP A,#n_STPd30 ;水平角度
JRUGE STP2set
BSET f_STPup
LD A,#n_STPd30
LD D_STPobj,A
CALL !STPout
RET
;------------------------------------------------------------------------
STP2set:
SET1 f_STPok
LD A,#n_STPset
LD D_STPstatus,A
LD A,D_STPnow
LD D_STPobj,A
RET
;------------------------------------------------------------------------
STP2run:
LD A,#n_STPrun
LD D_STPstatus,A
RET
;------------------------------------------------------------------------
STP2close:
BRES f_STPup
LD A,#n_STPclose
LD D_STPstatus,A
RET
;------------------------------------------------------------------------
STP2reset:
BRES f_STPok
LD A,#n_STPreset
LD D_STPstatus,A
RET
;------------------------------------------------------------------------
STP2open:
BRES f_STPok
BSET f_STPup
LD A,#n_STPopen
LD D_STPstatus,A
RET
;========================================================================
STPrun:
BTJF f_PWRon,STP2set
BTJF f_SWGset,STP2set
LD A,M_FANsp
CMP A,#n_FANoff
JREQ STP2set
CALL !STPareaCHK
BR STPout ;JRC STPout
;------------------------------------------------------------------------
STP2stop:
LD A,#n_STPstop
LD D_STPstatus,A
RET
;========================================================================
STPareaCHK:
LD A,D_STPnow
CMP A,#n_STPd55
JRULT STPlowCHK
BRES f_STPup
LD A,#n_STPd5
LD D_STPobj,A
SCF
RET
STPlowCHK:
CMP A,#n_STPd5
JRUGE STPareaIN
BSET f_STPup
LD A,#n_STPd55
LD D_STPobj,A
SCF
RET
STPareaIN:
RCF
RET
;========================================================================
;========================================================================
STPout:
BTJT f_STPup,STPup
TNZ D_STPphase
JRNE STPdec
DEC D_STPnow
LD A,#7+1
LD D_STPphase,A
STPdec:
DEC D_STPphase
JRA STPon
STPup:
LD A,D_STPphase
CMP A,#7
JRULT STPinc
INC D_STPnow
LD A,#0FFH
LD D_STPphase,A
STPinc:
INC D_STPphase
;========================================================================
STPon:
LD A,D_STPphase
LD X,#0
XCH A,X
ADDW AX,#STPtab
getstpTAB:
MOVW HL,AX
LD A,[HL]
CALL !STPoff1
RRC A
JRC $+2+3
BSET o_STP1
RRC A
JRC $+2+3
BSET o_STP2
RRC A
JRC $+2+3
BSET o_STP3
RRC A
JRC $+2+3
BSET o_STP4
RET
;========================================================================
STPtab:
DB 10011001B ;STEP1
DB 00010001B ;STEP2
DB 00110011B ;STEP3
DB 00100010B ;STEP4
DB 01100110B ;STEP5
DB 01000100B ;STEP6
DB 11001100B ;STEP7
DB 10001000B ;STEP8
;------------------------------------------------------------------------
STPtab1:
DB 10001000B ;STEP8
DB 11001100B ;STEP7
DB 01000100B ;STEP6
DB 01100110B ;STEP5
DB 00100010B ;STEP4
DB 00110011B ;STEP3
DB 00010001B ;STEP2
DB 10011001B ;STEP1
; END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -