LIST P=PIC12C508A, R=HEX ; ; DSC AUTO SHOOT CONTROLLER FOR R/C MODEL ; SUN, PU-NENG ; AUGUST/14/2004 ; ; ; VERSION 1.0 ; USE A SPARE CHANNEL ON R/C RECEIVER, ; TO CONTROL DSC ; FOR PULSE WIDTH 0.7~2.3mS, FRAME TIME 16~23mS ; ; CONFIG IntRC, OTHERS DON'T CHECK __CONFIG H'0FEA' ; ; DEFINE RAM ;----- SYSTEM --------- STATUS EQU 3 OSCCAL EQU 5 GPIO EQU 6 ; ; ;---- USER DEFINE ------ ; CNA EQU H'7' CNB EQU H'8' CNC EQU H'9' CND EQU H'A' DCNT EQU H'B' HCNT EQU H'C' NCNT EQU H'D' DTIME EQU H'E' ; ; DEFINE BIT ; W EQU 0 ;d VALUE FOR INCF...... F EQU 1 ;d VALUE INPIN EQU 3 ;GPIO 3 IS INPUT ONLY PIN SHOOT EQU 2 ;DSC AUTO SHOOT OUT SEL1 EQU 1 ; SEL0 EQU 0 ; RSH EQU 4 ;REVERSE OF SHOOT ONFLAG EQU 5 ;ON ; ; DEFINE VARIABLES ; NOISE EQU H'15' ;35*20uS= 0.7 mS, PULSE < 0.6 DEFINE AS NOISE ACTION EQU H'30' ;80 *20uS= 1.6 mS, PULSE > 1.6 DEFINE AS VALID PASS_NO EQU H'03' DT2 EQU H'20' ;CALIBRATION OF CNTB ;===================================== ORG 0 MOVWF OSCCAL START MOVLW H'0B' TRIS GPIO ; MOVLW H'80' ;GPPU ENABLE,T0CS=0 ENABLE GP2 OPTION CLRF HCNT ;---------------------- BTFSS GPIO,SEL0 GOTO ST1 BTFSS GPIO,SEL1 GOTO ST2 MOVLW H'FF' ;DEFAULT 5/2 SECOND MOVWF DTIME ;SEL0 = OPEN SEL1 = OPEN GOTO ST4 ST1 BTFSS GPIO,SEL1 GOTO ST3 MOVLW H'CC' ;4/2 SECOND MOVWF DTIME ;SEL0 = CLOSE SEL1 = OPEN GOTO ST4 ST2 MOVLW H'99' ;3/2 SECOND MOVWF DTIME ;SEL0 = OPEN SEL1 = CLOSE GOTO ST4 ST3 MOVLW H'66' ;2/2 SECOND MOVWF DTIME ;SEL0 =CLOSE SEL1 = CLOSE ST4 BCF GPIO,ONFLAG BSF GPIO,SHOOT BCF GPIO,RSH MOVF DTIME,W MOVWF CNB ;--------------------- MAIN CLRF NCNT MAIN1 NOP BTFSC GPIO,INPIN GOTO MAIN2 CALL SUB1 GOTO MAIN1 MAIN2 INCF NCNT,F BTFSS GPIO,INPIN GOTO MAIN3 CALL SUB1 GOTO MAIN2 MAIN3 MOVLW NOISE SUBWF NCNT,W SKPC ;IF f > w, C= 1,SKIP GOTO MAIN ;ELSE IT'S NOISE MAIN4 MOVLW ACTION SUBWF NCNT,W SKPC ;IF f > w, C=1, SKIP TO HIGH GOTO LOW1 ;ELSE IT'S LOW HIGH1 INCF HCNT,F GOTO MAIN LOW1 MOVF HCNT,F SKPNZ GOTO MAIN DECF HCNT,F GOTO MAIN ;========================================== SUB1 DECFSZ CNA,F GOTO RE1 SUB2 DECFSZ CNB,F GOTO RE2 SUB3 MOVF DTIME,W MOVWF CNB MOVLW PASS_NO SUBWF HCNT,W SKPC ;IF f > w, C= 1,SKIP GOTO TDOWN CLRF HCNT RR1 BSF GPIO,ONFLAG BTFSS GPIO,SHOOT GOTO RR3 RR2 BCF GPIO,SHOOT BSF GPIO,RSH GOTO RE5 RR3 BSF GPIO,SHOOT BCF GPIO,RSH GOTO RE5 TDOWN BCF GPIO,ONFLAG BCF GPIO,SHOOT BSF GPIO,RSH GOTO RE6 RE1 NOP RE2 NOP NOP NOP NOP NOP NOP RE3 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP RE5 NOP NOP NOP RE6 NOP NOP NOP NOP NOP NOP NOP RETLW 0 ;--------------------------- END
Free Web Hosting