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

📄 lg_508a.asm

📁 模型飞机起落架控制器
💻 ASM
字号:
        LIST P=12C508A,R=HEX
;
;       Retractable Landing Gear CONTROLLOR FOR R/C airccraft
;       SUN, PU-NENG
;       April/22/2004
;
; 	
;  
;       VERSION 1.0
;       convert a normal ON/OFF action to 4 seconds smooth action
;       for R/C Aircraft Retractable Landing Gear 
;
;	CHIP CONFIG : INTERC, WDT OSET.
;	
;       
;       DEFINE RAM
;-----  SYSTEM  ---------
TMR0	EQU 1		;TIMER 0
PCL     EQU 2           ;PROGRAM COUNTER
STATUS  EQU 3
FSR     EQU 4           ;BUFFER OF INDIRECT ADDR
PB      EQU 6		;GPIO
GPIO	EQU 6
;
;
;----  USER registers DEFINE  ------
;
TMR1    EQU H'10'       ;
TMR2    EQU H'11'       ;
TMR3    EQU H'12'       ; 
HP	EQU H'14'       ;HIGH PASS COUNTER
LP      EQU H'15'       ;LOW PASS COUNTER
FLAGR   EQU H'16'       ;FLAG REGISTER    
;
;
;----  USER FLAGS IN FLAGR DEFINE  ------
;
STA     EQU 0           ;STATUS ,FLAG REGISTER BIT 0

;
;----  VARIABLES DEFINE ----
;
W       EQU 0           ;d VALUE FOR INCF......
F       EQU 1           ;d VALUE
OFF     EQU 0           ;FLAG BIT 0
ON      EQU 1           ;FLAG BIT 1
NOISE   EQU H'50'       ;PULSE LESS THEN THIS DEFINE AS NOISE 0.8mS
LE      EQU H'82'       ;LOW EDGE, PULSE LESS THEN THIS DEFINE AS LOW   1.3mS
HE      EQU H'AA'       ;HIGH EDGE,PULSE MORE THEN THIS DEFINE AS HIGH  1.7mS 
T1	EQU H'C8'	;TMR2 (200) * 5 * 1uS = 1.0mS THE MIN PLUSE WEITH
T2	EQU H'C8'	;TMR1 (200) * 5 * 1uS = 1.0mS PLUS THE MIN, MAKE MAX PULSE WEITH 
T4	EQU H'9'	;CONTINUE (9) VALID PULSES TO CHANGE THE STATUS
;
;
;----  HARDWARE PINS DEFINE ----

INPIN   EQU 3           ;RB0 AS INPUT PORT 
OUTPIN	EQU 2		;RB2 AS OUTPUT PORT 


;==========   MAIN PROGRAM   =========
;
;
        ORG     0
START   MOVLW 8         ;PA3=INPUT, OTHERS =OUTPUT		
	TRIS GPIO 
	MOVLW H'C0'	;T0CS=0, TO ENABLE GP2 
	OPTION 		;
	CLRF TMR1	
	CLRF TMR2
	CLRF HP
	CLRF LP
	BCF FLAGR,STA   
;---------------------------------------------
MAIN    CLRWDT
	BTFSS PB,INPIN  ;IF INPIN = HIGH, INCREASE TMR3
        GOTO MAIN
	CLRF TMR3	;READ INPIN PULSE WEITH
MAIN2   INCF TMR3,F     ;START LOOP
        CLRWDT
        NOP             ;10 uS LOOP
        NOP
        NOP
        NOP
        NOP
	BTFSC PB,INPIN	;UNTIL INPIN GO LOW
        GOTO MAIN2      ;END LOOP
MAIN3   MOVLW NOISE
        SUBWF TMR3,W
        SKPC            ;IF f > w, C= 1,SKIP
        GOTO MAIN       ;ELSE IT'S NOISE, NO OUTPUT
MAIN4   MOVLW LE
        SUBWF TMR3,W
        SKPC            ;IF f > w, C=1, SKIP 
        GOTO LOW1       ;ELSE IT'S LOW 
MAIN5	MOVLW HE
        SUBWF TMR3,W
        SKPC            ;IF f > w, C=1, SKIP TO HIGH
        GOTO OUTPUT      ;ELSE IT'S BETWEEN LOW/HIGH 
;----------------------------------------------------------
HIGH1	BTFSS FLAGR,STA ;IS STATUS HIGH OR LOW ?
        GOTO HIGH3      ; 
HIGH2	MOVF LP,W	; STATUS= HIGH
	BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
	GOTO OUTPUT	;LP=0
	DECF LP,F	;LP> 0
	GOTO OUTPUT
HIGH3	MOVLW T4	;STATUS = LOW
        SUBWF HP,W
        BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
        GOTO HIGH4	;HP=T4
	INCF HP,F	;HP < T4
	GOTO OUTPUT
HIGH4	BSF FLAGR,STA
	GOTO OUTPUT
;---------------------------------
LOW1 	BTFSC FLAGR,STA ;IS STATUS HIGH OR LOW ?
        GOTO LOW3        
LOW2	MOVF HP,W	;STATUS =LOW
	BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
	GOTO OUTPUT	;HP=0
	DECF HP,F	;HP> 0
	GOTO OUTPUT
LOW3	MOVLW T4	;STATUS= HIGH
        SUBWF LP,W
        BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
        GOTO LOW4	;LP=T4
	INCF LP,F	;LP < T4
	GOTO OUTPUT
LOW4	BCF FLAGR,STA
;---------------------------------------
OUTPUT 	BTFSC	FLAGR,STA
	GOTO HSTA	;OUTPUT A PULSE 1~2 mS
LSTA	MOVF	TMR1,W
	BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
	GOTO K1		;TMR1=0
        DECF TMR1,F     ;TMR1> 0
	GOTO K1
HSTA	MOVLW	T2
	SUBWF	TMR1,W	;TMR1 = T2 ?
	BTFSC	3,2	;ZERO FLAG CLEAR, SKIP
	GOTO K1		;TMR1=T2
        INCF TMR1,F     ;TMR1 <T2
	GOTO K1
;----------------------------------
K1 	BSF PB,OUTPIN	;PULL PULSE HIGH
        MOVLW T1        ;THE 1 mS PULSE
	MOVWF TMR2
K3	NOP		;MAKE THIS LOOP 5 uS
	NOP
	DECFSZ TMR2,F
	GOTO K3		;END OF LOOP
	MOVF TMR1,W	;LOAD TMR1 FOR PULSE MORE THEN 1 mS
	MOVWF TMR2
	INCF TMR2,F
K4	NOP	
	NOP		;MAKE THIS LOOP 5 uS
	DECFSZ TMR2,F
	GOTO K4		;END OF LOOP
	BCF PB,OUTPIN	;PULL PULSE LOW
	GOTO MAIN
;---------------------------------------------------
        END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -