; Michal Zamazal, 3-2011 ; lze upravovat a sirit dle CC BY-SA ; http://creativecommons.org/licenses/by-sa/3.0/cz/ ;------------------------------------------------------------------------ ; PIC12C508 dekoder R/C pulzu pro svetla ;------------------------------------------------------------------------ ; ________________ ; +3V3 -| Vcc GND |- GND ; impulzy 1-2 ms AIN -| GP5 GP0 |- FOUT predni svetla ; NC -| GP4 GP1 |- BOUT zadni svetla ; NC -| GP3/MCLR GP2 |- NC ; ---------------- LIST P=12f508, R=DEC include "p12f508.inc" __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC ioport EQU GPIO tmr EQU TMR0 status EQU STATUS dlp1 equ 25 ;pomocna pro zpozdeni dlp2 equ 26 ;pomocna pro zpozdeni dlp3 equ 27 ;pomocna pro zpozdeni portst equ 28 ;pomocna pro test portu ;pin init Ain set 5 ;GP5 Fout set b'00000001' ;GP0 Bout set b'00000010' ;GP1 ;komparacni hodnoty stavu 0..255 c1 set 91 c2 set 125 ;setup org 00h goto INIT ;port init org 150 ;vynechany prostor pro podprogramy INIT clrwdt movlw b'01010000' movwf OSCCAL ;kalibrace interniho oscilatoru movlw b'00111000' ;NI NI 3 inputs 3 outputs tris GPIO ;format OPTION registru: sleep 1 off, pull 1 off, T0CS 0 pro interni TMR, T0SE, preddelic 0-pro RTCC 1-pro WDT, 000-111 RTCC a WDT movlw b'11000011' ;nastaven delic 16 pro RTCC option ;************************************************************************ ;************************************************************************ ;hlavni program MAIN movlw b'00000011' ;zapis 1 na vystupy F a B movwf ioport call delay_1_sec ;zpozdeni 1 s (delka vystupniho impulzu v log. 1) clrw ;vynulovani portu movwf ioport testport1 clrwdt movf ioport,0 ;zjisteni soucasneho stavu portu movwf portst ;stav portu ulozen do portst btfsc portst,Ain ;test referencniho vstupu pro A=0 goto testport1 testport2 clrwdt movf ioport,0 ;zjisteni soucasneho stavu portu movwf portst ;stav portu ulozen do portst btfss portst,Ain ;test referencniho vstupu pro A=1 nastupna hrana goto testport2 clrw ;nulovani casovace movwf tmr testport3 clrwdt movf ioport,0 ;zjisteni soucasneho stavu portu movwf portst ;stav portu ulozen do portst btfsc portst,Ain ;test referencniho vstupu pro A=0 sestupna hrana goto testport3 movlw c1 ;prvni komparacni hodnota subwf tmr,0 ;testovani na nejkratsi pulz - zadni svetla btfss status,0 goto Blight movlw c2 ;druha komparacni hodnota subwf tmr,0 ;testovani na stredni pulz - zadna svetla btfss status,0 goto Nlight movlw Fout ;zapis 1 na vystup F - predni svetla movwf ioport goto testport1 ;na novy cyklus cteni vstupu pulzu Blight movlw Bout ;zapis 1 na vystup B - zadni svetla movwf ioport goto testport1 ;na novy cyklus cteni vstupu pulzu Nlight movlw b'00000000' ;zapis 0 na vystupy F, B - zadna svetla movwf ioport goto testport1 ;na novy cyklus cteni vstupu pulzu ;************************************************************************ ;subrutiny org 5 ;podprogramy musi zacinat v dolni polovine pametove banky, max 0ffh ; Delay code generated by PikLoops ; Time Delay = 0.99999300s with Osc = 4.00000000MHz delay_1_sec movlw D'6' movwf dlp3 delay_1_sec_loop call sub_delay_1_sec decfsz dlp3,1 goto delay_1_sec_loop return sub_delay_1_sec movlw D'217' movwf dlp2 movlw D'111' movwf dlp1 sub_delay_1_sec_loop decfsz dlp1,1 goto sub_delay_1_sec_loop decfsz dlp2,1 goto sub_delay_1_sec_loop return end ;*****************************KONEC PROGRAMU***************************** ;************************************************************************