Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Generator signala
- list p=16f1939
- #include <p16f1939.inc>
- __CONFIG _CONFIG1,_FOSC_HS&_WDTE_OFF&_PWRTE_OFF&_MCLRE_ON&_CP_OFF&_CPD_OFF&_BOREN_OFF&_CLKOUTEN_OFF&_IESO_OFF&_FCMEN_OFF
- __CONFIG _CONFIG2,_WRT_OFF&_VCAPEN_OFF&_PLLEN_OFF&_STVREN_OFF&_LVP_OFF
- ;***** Deklaracija promjenjivih *****
- brojac equ 0x71
- ;***** Struktura programske memorije *****
- ORG 0x00 ; Reset vektor
- goto Glavni
- ORG 0x04 ; Vektor prekida
- goto Glavni ; nema prekidne rutine
- ;**** Pocetak programa ****
- Glavni
- ;***** inicijalizacija portova *****
- banksel TRISB
- movlw B'00000000' ; PORTB progla?en izlaznim
- movwf TRISB
- movlw B'00000000'; PORTC progla?en izlaznim
- movwf TRISC
- movlw B'11111111' ; PORTD progla?en ulaznim
- movwf TRISD
- banksel PORTA ; Biramo Bank 0
- ; glavni program
- ;Potrebno je provjeriti sta se nalazi na RD1, ukoliko je 0 broji naprijed, ukoliko je 1 broji nazad
- btfsc PORTD,1
- goto BROJINAZAD
- goto BROJINAPRIJED
- BROJINAZAD ;broji unazad od 135 do 1
- banksel LATC
- movlw B'00000000'
- movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
- ;banksel LATB
- movlw B'10000111'
- movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 135
- movlw B'10000111'
- movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
- L1
- banksel PORTD
- btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
- goto L1
- btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
- goto L1
- goto L2 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
- L2
- banksel LATC
- decf brojac
- ;banksel LATB
- decfsz LATB ;port B se umanjuje za 1, ukoliko je 0 preskace se sljedeca naredba
- goto L1
- ;banksel LATC
- movlw B'11111111'
- movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
- goto BROJINAZAD
- BROJINAPRIJED ;broji naprijed od 0 do 135
- banksel LATC
- movlw B'00000000'
- movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
- ;banksel LATB
- movlw B'00000000'
- movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 0
- movlw B'10000111'
- movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
- L3
- banksel PORTD
- btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
- goto L3
- btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
- goto L3
- goto L4 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
- L4
- banksel LATB
- incf LATB ; povecaj brojac na diodama na portB za 1
- decfsz brojac ; umanji brojac za jedan, ako je brojac 0 preskoci sljedecu naredbu
- goto L3
- ;banksel LATC
- movlw B'11111111'
- movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
- goto BROJINAPRIJED
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement