#include "p16f84a.inc" ;kontrola dva reda ;IX / 2oo8 cblock 0x0C ;pocetak RAM memorije REG ;registar za konstantu trajanja Led zeleno REG_1 REG_11 REG_2 REG_22 BELO ;registar za pauzu kad je Led off BELO_1 BELO_11 BELO_111 BELO_2 BELO_22 BELO_222 endc errorlevel-302 banksel TRISA ;definisanje smera pinova movlw 0x1F ; 11111 movwf TRISA clrf TRISB bsf PORTB,7 ; 0111111 banksel PORTB movlw 0xFF ;upis konstante za dužinu osvetljenosti Led_ZELENO movwf REG movlw 0x05 ;upis konstante za dužinu pauze kada je Led off movwf BELO movlw 0x01 movwf REG_1 ;Registar prve baterije movwf REG_11 ;registar prve baterije movwf REG_2 ; registar druge baterije movwf REG_22 ; registar druge baterije movwf BELO_1 ;registar prve baterije za pauzu movwf BELO_2 ;registar druge baterije movwf BELO_11 ;reg.prve baterije movwf BELO_22 ;reg. druge baterije movwf BELO_111 ;reg. prve baterije movwf BELO_222 ;reg. druge baterije ;.................testiranje senzora na prolazak semena................. pocetak btfss PORTA,1 ;testiramo prvu bateriju dali imamo prolazak zrna call upis_1 ;signal treba da ima naizmenicno 1 i 0, btfsc PORTA,1 ;svako od testiranih stanja upisujemo u poseban registar, koje kasnije umanjujemo call upis_11 btfss PORTA,2 ;testiramo drugu bateriju dali imamo prolazak zrna, call upis_2 ;signal treba da ima naizmenicno 1 i 0 btfsc PORTA,2 call upis_22 ;....................umanjivanje registara svake baterije ................. prva decf REG_1 ;umanjujemo registar prve baterije niskoga stanja skpnz ;ako je nula idemo na gašenje led diode goto off_1 ;ako nije nula umanjujemo sledeci registar decfsz REG_11 ;ako ni on nije nula skacemo na paljenje led zeleno goto zeleno_1 ;uslov za zeleno led je da su oba registra razlicita od 0 goto off_1 ;ako je reg 11 jednak nuli skacemo na gašenje led goto druga druga decf REG_2 skpnz goto off_2 decfsz REG_22 goto zeleno_2 goto off_2 goto pocetak ;.....................Upis testiranog stanja sa senzora u registre svake baterije................... upis_1 movf REG,w ;upis ako imamo na ulazu 1 kada nema prolaza zrna,foto tranzistori su osvetljeni , movwf REG_1 ;to stanje je uslov za LED_1 zeleno dok se bar jedan REG_1 ili REG_11 ne smanje na 0 return upis_11 movf REG,w ;upis kada imamo prolazak zrna ili je izmedu nakupljena zemlja,ovo stanje daje uslov za led_zeleno movwf REG_11 ; dok se registar REG_11 ne smanji na 0 return upis_2 movf REG,w movwf REG_2 return upis_22 movf REG,w movwf REG_22 return ;.....................LED zeleno............................. zeleno_1 nop ;paljenje LED 1 zeleno BANKSEL TRISB ;odlazak u banku 1 bcf PORTB,1 ;postavljamo portb,1 kao izlaz BANKSEL PORTB ;vracamo se u banku 0 movlw 0xFF ;dabi omogucili da posle led zeleno imamo pauzu movwf BELO_1 ;popunjavamo registre pauze sa FF movwf BELO_11 ;movlw 0x02 ;u ovaj reg. pauze upisujemo manju vrednost da ;movwf BELO_111 ;pauza nebi bila predugacka bcf PORTB,1 ;postavljamo portb,1 na lg nulu goto druga ;idemo na sledecu bateriju zeleno_2 nop BANKSEL TRISB bcf PORTB,2 BANKSEL PORTB movlw 0xFF movwf BELO_2 movwf BELO_22 ;movlw 0x01 ;movwf BELO_222 bcf PORTB,2 goto pocetak ;.......................Gašenje led diode za pauzu izmedu crvene i zelene................... off_1 movlw 0x01 ;upisujemo jedinicu u registre da ukoliko nemamo movwf REG_1 ;jedinice i nule na senzoru kod umanjaivanja dolazimo na nulu , movwf REG_11 ;a ne da vrednost skoci na FF pa da to umanjujemo decfsz BELO_1 ;umanjenje registara pauze kada treba da je ugašena led goto ugašena_1 ;ukoliko je bilo koji registar razlicit od nule idemo na gašenje led decfsz BELO_11 ;ako su svi registri jednaki nuli prelazimo na paljenje Led crveno goto ugašena_1 decfsz BELO_111 goto ugašena_1 goto crveno_1 off_2 movlw 0x01 movwf REG_2 movwf REG_22 decfsz BELO_2 goto ugašena_2 decfsz BELO_22 goto ugašena_2 decfsz BELO_222 goto ugašena_2 goto crveno_2 ;.........................LED crveno...................................... crveno_1 nop ;postavljamo portb,1 kao izlaz BANKSEL TRISB bcf PORTB,1 BANKSEL PORTB movlw 0x01 ;dabi omogucili testiranje baterije na pauzu movwf BELO_1 ;upisujemo u registre 1 da oni nakon dekramentovanja movwf BELO_11 ;dovedu do pojave zero flega movwf BELO_111 ;tada svi registri prelaze sa 1 na 0 i skacemo na crveno bsf PORTB,1 goto druga crveno_2 nop BANKSEL TRISB bcf PORTB,2 BANKSEL PORTB movlw 0x01 movwf BELO_2 movwf BELO_22 movwf BELO_222 bsf PORTB,2 goto pocetak ugašena_1 nop banksel TRISB ;gasimo Led za prvu bateriju tako da pin prve baterije postavimo kao ULAZ bsf TRISB,1 ;pin 1 porta a je postavljen kao ulaz - nalazimo se u BANK1 banksel PORTB ;vracamo se u bank0 goto druga ugašena_2 nop banksel TRISB ;gasimo Led za prvu bateriju tako da pin prve baterije postavimo kao ULAZ bsf TRISB,2 banksel PORTB goto pocetak end