Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Program generira vremenski interval od 20ms za frekvenciju 4MHz.
- ;Verzija 1.0 datum 01.05.2023. MCU: PCI 16F84 Pisao Leo Novina
- ;Deklaracija i konfiguracija mikrokontrolera
- PROCESSOR 16F84 ;Tip mikrokontrolera
- #include "p16f84.inc" ;Zaglavlje mikrokontrolera(obavezno napisati)
- __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
- ;Deklaracija varijabli
- VRIJEME equ 0x0D ;Registar za uvecanje milisekundi
- POMOCNI equ 0x0E
- ;Makroi koji moraju biti definirani prije pozivanja
- BANK0 macro
- bcf STATUS, RP0 ;Pristup banci 0
- endm
- BANK1 macro
- bsf STATUS, RP0 ;pristup banci 1
- endm
- ;Pocetak programa
- org 0x00 ;reset vektora
- goto Glavni ;Idi na pocetak glavnog programa
- ;Prekidni vektor
- org 0x04 ;adresa prekidnog vektora
- ;Prekidni program
- nop
- nop
- nop
- nop
- nop ;5
- nop
- nop
- nop
- nop
- nop ;10
- nop
- nop
- nop
- nop
- nop ;15
- nop
- nop
- nop
- nop
- nop ;20
- nop
- nop
- nop
- nop
- nop ;25
- nop ;26
- ;Generira vremenske zadrske od 20ms
- movlw d'100' ; 156 * 128 + 26 = 20ms
- ;(256-100=156) (1:128) (26*nop)
- movwf TMR0 ;Upisi 100 u TMR0 kako bi dobili brojanje od 156
- bcf INTCON, T0IF ;Brisanje zastavice zahtjeva za prekid uslijed prekoracenja TMR0
- retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
- incf PORTB
- retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
- Glavni
- BANK1
- movlw b'00000000'
- movwf TRISB
- BANK1
- movlw b'10000110'
- movwf OPTION_REG
- BANK0 ;Pristup banci 0
- movlw b'10100000' ;Omoguceni svi prekidi bit 7(1), omogucen prekid
- movwf INTCON
- clrf VRIJEME
- movwf INTCON
- clrf POMOCNI
- clrf VRIJEME
- clrf PORTB
- PETLJA2
- goto PETLJA2
- end ;Obavezna oznaka kraja programa
- ;-------------------------------------------------------------------------------------------------
- ;Program generira vremenski interval od 40ms za frekvenciju 4MHz.
- ;Verzija 1.0 datum 01.05.2023. MCU: PCI 16F84 Pisao Leo Novina
- ;Deklaracija i konfiguracija mikrokontrolera
- PROCESSOR 16F84 ;Tip mikrokontrolera
- #include "p16f84.inc" ;Zaglavlje mikrokontrolera(obavezno napisati)
- __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
- ;Deklaracija varijabli
- VRIJEME equ 0x0D ;Registar za uvecanje milisekundi
- POMOCNI equ 0x0E
- ;Makroi koji moraju biti definirani prije pozivanja
- BANK0 macro
- bcf STATUS, RP0 ;Pristup banci 0
- endm
- BANK1 macro
- bsf STATUS, RP0 ;pristup banci 1
- endm
- ;Pocetak programa
- org 0x00 ;reset vektora
- goto Glavni ;Idi na pocetak glavnog programa
- ;Prekidni vektor
- org 0x04 ;adresa prekidnog vektora
- ;Prekidni program
- nop
- nop
- nop
- nop
- nop ;5
- nop
- nop
- nop
- nop
- nop ;10
- nop
- nop
- nop
- nop
- nop ;15
- nop
- nop
- nop
- nop
- nop ;20
- nop
- nop
- nop
- nop
- nop ;25
- nop
- nop
- nop
- nop
- nop ;30
- nop
- nop
- nop
- nop
- nop ;35
- nop
- nop
- nop
- nop
- nop ;40
- nop
- nop
- nop
- nop
- nop ;45
- nop
- nop
- nop
- nop
- nop ;50
- nop
- nop
- nop
- nop
- nop ;55
- nop
- nop
- nop ;58
- ;Generira vremenske zadrske od 40ms
- movlw d'100' ; 156 * 256 + 58 = 20ms
- ;(256-100=156) (1:256) (58*nop)
- movwf TMR0 ;Upisi 100 u TMR0 kako bi dobili brojanje od 156
- bcf INTCON, T0IF ;Brisanje zastavice zahtjeva za prekid uslijed prekoracenja TMR0
- retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
- incf PORTB
- retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
- Glavni
- BANK1
- movlw b'00000000'
- movwf TRISB
- BANK1
- movlw b'10000111'
- movwf OPTION_REG
- BANK0 ;Pristup banci 0
- movlw b'10100000' ;Omoguceni svi prekidi bit 7(1), omogucen prekid
- movwf INTCON
- clrf VRIJEME
- movwf INTCON
- clrf POMOCNI
- clrf VRIJEME
- clrf PORTB
- PETLJA2
- goto PETLJA2
- end ;Obavezna oznaka kraja programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement