;----------------------------------------------------- ; eliluci2.asm - Luci per elicottero ; By Claudio Fin 18/2/2006 - Versione 1.1 ; Ultimi aggiornamenti: ; 15/04/2006 Aggiunta isteresi sui comandi per ; commutazione piu' precisa. ;----------------------------------------------------- PROCESSOR 12F675 RADIX DEC INCLUDE "P12F675.INC" __CONFIG 00000110000100B ;----------------------------------------------------- ; Definizione variabili del programma ;----------------------------------------------------- ORG 32 CL RES 1 OUVAL RES 1 IMPULSO RES 1 IMPULSO_P RES 1 CNT1 RES 1 STAT1 RES 1 CNT2 RES 1 STAT2 RES 1 LAMP EQU 3 ;----------------------------------------------------- ; Inizio programma all'indirizzo 0 ;----------------------------------------------------- ORG 0 MOVLW 7 MOVWF CMCON ;Porte digitali CLRF GPIO ;Azzera latch uscita BSF STATUS,RP0 ;Attiva banco 1 CLRF TRISIO ;Tutte uscite tranne GP3 BCF STATUS,RP0 ;Ritorna al banco 0 CALL LTEST CLRF STAT1 CLRF STAT2 MOVLW 128 MOVWF IMPULSO_P MAINLOOP CALL RDPULSE CALL ISTERESI CALL ELABORA MOVF OUVAL,W MOVWF GPIO GOTO MAINLOOP ;----------------------------------------------------- ; Test luci iniziale (3 lampeggi) ;----------------------------------------------------- LTEST MOVLW 3 MOVWF CL MOVLW 00110111B MOVWF GPIO CALL RITARDO CLRF GPIO CALL RITARDO DECFSZ CL,F GOTO $-6 RETURN RITARDO CLRF CNT1 CLRF CNT2 DECFSZ CNT2,F GOTO $-1 DECFSZ CNT1,F GOTO $-3 RETURN ;----------------------------------------------------- ; Legge impulso PPM in arrivo dalla radio. ; Risoluzione 4µS, range 0,98..2mS ; Risultato in IMPULSO (1,5mS = 128) ;----------------------------------------------------- RDPULSE MOVLW -247 MOVWF IMPULSO BTFSS GPIO,3 GOTO $-1 INCF IMPULSO,F BTFSC GPIO,3 GOTO $-2 RETURN ;----------------------------------------------------- ; Isteresi sui valori letti per evitare jitter. ; Se valore nuovo differisce di piu'di 3 da quello ; vecchio allora viene considerato valido, altrimenti ; si tiene quello vecchio. ;----------------------------------------------------- ISTERESI MOVF IMPULSO,W SUBWF IMPULSO_P,W BTFSC STATUS,C GOTO $+4 MOVWF CL COMF CL,F INCF CL,W MOVWF CL MOVLW 4 SUBWF CL,W BTFSC STATUS,C GOTO $+4 MOVF IMPULSO_P,W MOVWF IMPULSO RETURN MOVF IMPULSO,W MOVWF IMPULSO_P RETURN ;----------------------------------------------------- ; Se IMPULSO<80 tutto spento. Altrimenti luci ; posizione accese e anticollisione lampeggianti. ; Se impulso>=176 acceso anche faro di atterraggio. ;----------------------------------------------------- ELABORA MOVLW 80 SUBWF IMPULSO,W BTFSC STATUS,C GOTO $+3 CLRF OUVAL RETURN BSF OUVAL,1 BSF OUVAL,2 CALL ANTICOLL1 CALL ANTICOLL2 BCF OUVAL,0 MOVLW 176 SUBWF IMPULSO,W BTFSC STATUS,C BSF OUVAL,0 RETURN ;----------------------------------------------------- ; Processi per lampeggio assimmetrico ; luci anticollisione. ;----------------------------------------------------- ANTICOLL1 MOVF STAT1,W ADDWF PCL,F GOTO ANTICOLL1_0 GOTO ANTICOLL1_1 GOTO ANTICOLL1_2 GOTO ANTICOLL1_3 GOTO ANTICOLL1_4 GOTO ANTICOLL1_5 ANTICOLL1_6 BCF OUVAL,4 DECFSZ CNT1,F RETURN CLRF STAT1 RETURN ANTICOLL1_0 MOVLW LAMP MOVWF CNT1 INCF STAT1,F RETURN ANTICOLL1_1 BSF OUVAL,4 DECFSZ CNT1,F RETURN MOVLW 8 MOVWF CNT1 INCF STAT1,F RETURN ANTICOLL1_2 BCF OUVAL,4 DECFSZ CNT1,F RETURN MOVLW LAMP MOVWF CNT1 INCF STAT1,F RETURN ANTICOLL1_3 BSF OUVAL,4 DECFSZ CNT1,F RETURN MOVLW LAMP MOVWF CNT1 INCF STAT1,F RETURN ANTICOLL1_4 BCF OUVAL,4 DECFSZ CNT1,F RETURN MOVLW LAMP MOVWF CNT1 INCF STAT1,F RETURN ANTICOLL1_5 BSF OUVAL,4 DECFSZ CNT1,F RETURN MOVLW 30 MOVWF CNT1 INCF STAT1,F RETURN ;----------------------------------------------------- ANTICOLL2 MOVF STAT2,W ADDWF PCL,F GOTO ANTICOLL2_0 GOTO ANTICOLL2_1 GOTO ANTICOLL2_2 GOTO ANTICOLL2_3 GOTO ANTICOLL2_4 GOTO ANTICOLL2_5 ANTICOLL2_6 BCF OUVAL,5 DECFSZ CNT2,F RETURN CLRF STAT2 RETURN ANTICOLL2_0 MOVLW LAMP MOVWF CNT2 INCF STAT2,F RETURN ANTICOLL2_1 BSF OUVAL,5 DECFSZ CNT2,F RETURN MOVLW 8 MOVWF CNT2 INCF STAT2,F RETURN ANTICOLL2_2 BCF OUVAL,5 DECFSZ CNT2,F RETURN MOVLW LAMP MOVWF CNT2 INCF STAT2,F RETURN ANTICOLL2_3 BSF OUVAL,5 DECFSZ CNT2,F RETURN MOVLW LAMP MOVWF CNT2 INCF STAT2,F RETURN ANTICOLL2_4 BCF OUVAL,5 DECFSZ CNT2,F RETURN MOVLW LAMP MOVWF CNT2 INCF STAT2,F RETURN ANTICOLL2_5 BSF OUVAL,5 DECFSZ CNT2,F RETURN MOVLW 24 MOVWF CNT2 INCF STAT2,F RETURN ;----------------------------------------------------- END