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

📄 shutter_ctrol.asm

📁 Function:1、摄像头快门速度控制。 2、闪光灯控制。 性能参数: 1、摄像头快门速度:1us - 20ms 2、闪光灯位置:可设置在一场的任意时刻。 3、快门可工作在自动方式。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
            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 + -