📄 shutter_ctrol.asm
字号:
JMP @A+DPTR
EX0_TBL0: AJMP EX0_Cmd_0
AJMP EX0_Cmd_1
AJMP EX0_Cmd_2
AJMP EX0_Cmd_3
EX0_Cmd_0: AJMP EX0_L07
EX0_Cmd_1: MOV wFsSpd+0, aUartRcvBuf+1
MOV wFsSpd+1, aUartRcvBuf+2
MOV uchFsSpdExt, aUartRcvBuf+3
MOV uchFlashBPos, aUartRcvBuf+4
ANL uchFlashBPos, #7FH
INC uchFlashBPos
MOV uchPreFlashB, aUartRcvBuf+5
AJMP EX0_L07
EX0_Cmd_2: MOV wNsSpd+0, aUartRcvBuf+1
MOV wNsSpd+1, aUartRcvBuf+2
MOV uchNsSpdExt, aUartRcvBuf+3
MOV uchFlashAPos, aUartRcvBuf+4
ANL uchFlashAPos, #7FH
INC uchFlashAPos
MOV uchPreFlashA, aUartRcvBuf+5
AJMP EX0_L07
EX0_Cmd_3: MOV uchFieldCnt, aUartRcvBuf+1
AJMP EX0_L07
EX0_L07: CLR bUARTRcvValid
EX0_L10: MOV DPTR, #EX0_TBL1
MOV A, uchFieldCnt
JZ EX0_L11
MOV SBUF,A
EX0_L11: ANL A, #03H
RL A
JMP @A+DPTR
EX0_TBL1: AJMP EX0_Field_0
AJMP EX0_Field_1
AJMP EX0_Field_2
AJMP EX0_Field_3
EX0_Field_0:
MOV wRowCnt+0, wNsSpd+0
MOV wRowCnt+1, wNsSpd+1
MOV uchRowCntExt, uchNsSpdExt
MOV uchFlashCnt, #00H
MOV uchPreFlash, #01H
SETB bFlashAEnable
SETB bFlashBEnable
CLR bIsCapture
AJMP EX0_L15
EX0_Field_1:
MOV wRowCnt+0, wFsSpd+0
MOV wRowCnt+1, wFsSpd+1
MOV uchRowCntExt, uchFsSpdExt
MOV uchFlashCnt, #00H
MOV uchPreFlash, #00H
SETB bFlashAEnable
SETB bFlashBEnable
DEC uchFieldCnt
AJMP EX0_L15
EX0_Field_2:
MOV wRowCnt+0, wFsSpd+0
MOV wRowCnt+1, wFsSpd+1
MOV uchRowCntExt, uchFsSpdExt
MOV uchFlashCnt, uchFlashBPos
MOV uchPreFlash, uchPreFlashB
SETB bFlashAEnable
CLR bFlashBEnable
DEC uchFieldCnt
AJMP EX0_L15
EX0_Field_3:
MOV wRowCnt+0, wNsSpd+0
MOV wRowCnt+1, wNsSpd+1
MOV uchFlashCnt, uchFlashAPos
MOV uchPreFlash, uchPreFlashA
CLR bFlashAEnable
SETB bFlashBEnable
DEC uchFieldCnt
AJMP EX0_L15
EX0_L15: POP PSW
POP ACC
SETB EX1
RETI
Isr_Ex1: JNB bAutoCtlEnable, EX1_L02
PUSH ACC
PUSH PSW
JNB _bXSubIn, EX1_L01
JNB _bXSubIn, EX1_L01
EX1_L01: MOV C, _bXSubIn
NOP
NOP
NOP
NOP
SETB _bXSubOut
POP PSW
POP ACC
RETI
EX1_L02: PUSH ACC
PUSH PSW
CLR _bXSubOut
CLR _bXSubOut
NOP
NOP
NOP
MOV A, wRowCnt+1
SETB _bXSubOut
CJNE A, #00H, EX1_L05
MOV A, wRowCnt+0
CJNE A, #00H, EX1_L10
MOV A, uchRowCntExt
CJNE A, #00H, EX1_L15
CLR EX1
SETB bFlashA
SETB bFlashB
AJMP EX1_L30
EX1_L05: MOV A, wRowCnt+0
ADD A, #0FFH
MOV wRowCnt+0, A
MOV A, wRowCnt+1
ADDC A, #0FFH
MOV wRowCnt+1, A
AJMP EX1_L30
EX1_L10: CJNE A, uchPreFlash, EX1_L05
INC uchFlashCnt
DJNZ uchFlashCnt, $
MOV C, bFlashAEnable
MOV bFlashA, C
MOV C, bFlashBEnable
MOV bFlashB, C
AJMP EX1_L05
EX1_L15: DJNZ ACC, $
CLR _bXSubOut
CLR EX1
POP PSW
POP ACC
SETB _bXSubOut
SETB bFlashA
SETB bFlashB
RETI
EX1_L30: POP PSW
POP ACC
EX1_L40: RETI
;-----------------------------------------
Init_UART: MOV PCON, #000H
MOV SCON, #040H
MOV SSTAT, #000H
;MOV AUXR1, #080H ;2004.7.19 can not write to flash
MOV AUXR1, #0C0H ;2004.7.19 can write to flash anytime
MOV BRGCON, #000H
MOV BRGR0, #0D3H
MOV BRGR1, #0002H
MOV BRGCON, #003H
SETB REN
RET
Init_Port: MOV P0, #0FEH
MOV P1, #0FFH
MOV P2, #0FFH
MOV P3, #0FFH
SETB bFlashA
SETB bFlashB
MOV P0M1, #0BEH
MOV P0M2, #041H
MOV P1M1, #0FFH
MOV P1M2, #001H
MOV P2M1, #0FFH
MOV P2M2, #003H
MOV P3M1, #003H
MOV P3M2, #000H
RET
Init_WD: PUSH IEN0
CLR EA
MOV WDL, #0C0H
MOV WDCON, #045H
MOV WFEED1, #0A5H
MOV WFEED2, #05AH
POP IEN0
RET
NOP
NOP
NOP
LJMP RESET
Feed_WD: PUSH IEN0
CLR EA
MOV WFEED1, #0A5H
MOV WFEED2, #05AH
POP IEN0
RET
NOP
NOP
NOP
LJMP RESET
Enable_WD: PUSH IEN0
CLR EA
MOV A, #02H
MOV R5, #0B7H
MOV R7, #00H
LCALL Pgm_Mtp
LCALL Delay1792
MOV WDL, #0C0H
MOV WDCON, #045H ; 60ms
MOV WFEED1, #0A5H
MOV WFEED2, #05AH
POP IEN0
RET
NOP
NOP
NOP
LJMP RESET
Disable_WD: PUSH IEN0
CLR EA
MOV WDCON, #021H
MOV WFEED1, #0A5H
MOV WFEED2, #05AH
MOV A, #02H
MOV R5, #027H
MOV R7, #00H
LCALL Pgm_Mtp
POP IEN0
RET
NOP
NOP
NOP
LJMP RESET
Init_DSEG: MOV uchSysCtl, #00H
MOV wNsSpd+0, #015H
MOV wNsSpd+1, #01H
MOV uchNsSpdExt, #000H
MOV wFsSpd+0, #035H
MOV wFsSpd+1, #001H
MOV uchFsSpdExt, #035H
MOV uchFlashAPos, #00H
MOV uchFlashBPos, #00H
MOV uchFieldCnt, #000H
MOV wRowCnt, #00H
MOV wRowCnt+1, #00H
MOV uchRowCntExt, #000H
MOV uchFlashCnt, #00H
MOV aUartRcvBuf, #00H
MOV uchPreFlashA, #01H
MOV uchPreFlashB, #01H
MOV uchPreFlash, #01H
CLR bUARTRcvValid
SETB bFlashAEnable
SETB bFlashBEnable
SETB bFlashA
SETB bFlashB
CLR bIsCapture
SETB bClrDogEnable
CLR bAutoCtlEnable
RET
Init_Interrupt:
CLR EA
MOV IP0, #01H
MOV IP0H, #00H
MOV IP1, #00H
MOV IP1H, #00H
MOV IEN0, #00H
MOV IEN1, #00H
MOV ACC, TCON
ORL ACC, #005H
MOV TCON, ACC
RET
;处理触发信号
WaitForCapture:
WFC_L01: JB bUARTRcvValid, $
WFC_L05: JNB _bRxd, WFC_L10
SETB bClrDogEnable
LJMP WFC_L05
WFC_L10: MOV aUartRcvBuf, #03H
MOV aUartRcvBuf+1, #03H
SETB bUARTRcvValid
SETB bIsCapture
; LCALL ReceiveOneByte
; CJNE A,#0FAH, WFC_L20
;WFC_L15: JNB bIsCapture, WFC_L01
; SETB bClrDogEnable
; LJMP WFC_L15
WFC_L20: JNB bIsCapture, WFC_L25
SETB bClrDogEnable
LJMP WFC_L20
WFC_L25: RET
ReceiveOneByte:
ROB_L01: JB RI, ROB_L05
SETB bClrDogEnable
JMP ROB_L01
ROB_L05: CLR RI
MOV A, SBUF
MOV SBUF,A
RET
Delay1792: PUSH 03H
PUSH 02H
MOV 03H, #020H
DL_L01: MOV 02H,#064H
DJNZ 02H,$
DJNZ 03H,DL_L01
POP 02H
POP 03H
RET
DelayBit: PUSH 03H
PUSH 02H
MOV 03H, #02H
DLB_L01: MOV 02H, #057H
DJNZ 02H, $
DJNZ 03H, DLB_L01
POP 02H
POP 03H
RET
Soft_Reset: CLR EA
MOV A, AUXR1
ORL A, #008H
MOV AUXR1, A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -