Skip to content

Instantly share code, notes, and snippets.

@ivanpepelko
Last active January 17, 2016 20:18
Show Gist options
  • Save ivanpepelko/73611c3a5b22534f9d1c to your computer and use it in GitHub Desktop.
Save ivanpepelko/73611c3a5b22534f9d1c to your computer and use it in GitHub Desktop.
R1
;*******************************************************************************
;*
;* PORTA
;* RA1 - Crveni led
;* RA2 - Zuti led
;* RA3 - Zeleni led
;*
;* PORTB
;* RB0-RB7 - 7-segmentni display
;*
;*******************************************************************************
; Postavljnje MCU i kofiguracijska rijec
PROCESSOR 16F84A
#include "p16f84a.inc" ; ova datoteka sadrzi sva imena registara specijalnih
; namjena i njihove adrese od PIC16F84A mikrokontrolera
ERRORLEVEL -224
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON & _WDT_OFF ; procesorske direktive
;varijable potrebne za petlje u proceduri za 1 sec kasnjenje
p1 EQU 0x0C
p2 EQU 0x0D
p3 EQU 0x0E
sedseg_c MACRO ; macro za slovo C na sedseg
;gasenje svih segmenata
MOVLW 0xff
MOVWF PORTB
;paljenje potrebnih segmenata
MOVLW b'11000110'
MOVWF PORTB
ENDM
sedseg_z MACRO
;gasenje svih segmenata
MOVLW 0xff
MOVWF PORTB
;paljenje potrebnih segmenata
MOVLW b'10100100'
MOVWF PORTB
ENDM
sedseg_zdot MACRO
;gasenje svih segmenata
MOVLW 0xff
MOVWF PORTB
;paljenje potrebnih segmenata
MOVLW b'00100100'
MOVWF PORTB
ENDM
ORG 0x0 ; pocetna adresa od koje mikrokontroler krece nakon dovodenja napajanja
;inicijalno postavljanje
BSF STATUS, RP0 ; odabir BANK1
CLRF TRISA ; postavljanje svih PORTA bitova na output
CLRF TRISB ; postavljanje svih PORTB bitova na output
BCF STATUS, RP0 ; povratak na BANK0
MOVLW 0xFF ; w=b'11111111'
MOVWF PORTA ; gasenje svih ledica na PORTA
MOVWF PORTB ; gasenje svih ledica na PORTB
MAIN
bcf PORTA, RA1 ; paljenje ledice na RA1 (crvena)
sedseg_c ; macro za slovo C na sedseg
call sekunda ; procedura koja traje 1 sek
bsf PORTA, RA1 ; gasenje ledice na RA1 (crvena)
bcf PORTA, RA2 ; paljenje ledice na RA2 (zuta)
sedseg_zdot ; macro za slovo Z. na sedseg
call sekunda ; procedura koja traje 1 sek
call sekunda ; procedura koja traje 1 sek, ukupno 2 sek
bsf PORTA, RA2 ; gasenje ledice na RA2 (zuta)
bcf PORTA, RA3 ; paljenje ledice na RA3 (zelena)
sedseg_z ; macro za slovo Z na sedseg
call sekunda ; procedura koja traje 1 sek
call sekunda ; procedura koja traje 1 sek, ukupno 2 sek
bsf PORTA, RA3 ; gasenje ledice na RA3 (zelena)
goto MAIN ; povratak na MAIN loop
;procedura za kasnjenje 1 sek
;1000000 instrukcijskih ciklusa=1s
;uracunati CALL i RETURN
sekunda
movlw 0x07
movwf p1 ; p1=7
movlw 0x2F
movwf p2 ; p2=47
movlw 0x03
movwf p3 ; p3=3
l1 decfsz p1, 1
goto l2
decfsz p2, 1
l2 goto l3
decfsz p3, 1
l3 goto l1
nop
nop
nop
return
end
;!!!BEER!!!
; 95 impulsa => 1 litra
;===============================================================================
; Postavljnje MCU i kofiguracijska rijec
;===============================================================================
PROCESSOR 16F84A
#include "p16f84a.inc" ; ova datoteka sadrzi sva imena registara specijalnih
; namjena i njihove adrese od PIC16F84A mikrokontrolera
ERRORLEVEL -224
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON & _WDT_OFF ; procesorske direktive
;===============================================================================
IMPULSI EQU 0x0C
LITRE EQU 0x0D
RESET_IMPULSI MACRO
MOVLW D'95' ; broj impulsa koji oznacavaju litru
MOVWF IMPULSI
ENDM
RESET_LITRE MACRO
MOVLW D'10' ; broj litara
MOVWF LITRE
ENDM
ORG 0
GOTO KONF
ORG 4
GOTO INTER
KONF
; postavljanje RB4 na input
BSF STATUS, RP0 ; BANK1
BSF TRISB, RB4 ; RB4 -> INPUT
BCF STATUS, RP0 ; BANK0
RESET_IMPULSI
RESET_LITRE
; ukljucivanje interrupta
BSF INTCON, RBIE ; PORTB
BSF INTCON, GIE ; globalni
MAIN ; cekanje na interrupt
NOP
GOTO MAIN
INTER
BCF INTCON, RBIF ; resetiranje RBIF bita
; IMPULSI i LITRE se smanjuju 95x10 puta = 950 impulsa = 10 litara
DECFSZ IMPULSI, 1
RETFIE
RESET_IMPULSI
DECFSZ LITRE, 1
RETFIE
END
;===============================================================================
; TEMPERATURA
;===============================================================================
;
; PORTA
; RB1- grijac
;
; PORTB
; RB0-RB7 - AD pretvornik s temperaturnim senzorom
;
;===============================================================================
; Postavljnje MCU i kofiguracijska rijec
;===============================================================================
PROCESSOR 16F84A
#include "p16f84a.inc" ; ova datoteka sadrzi sva imena registara specijalnih
; namjena i njihove adrese od PIC16F84A mikrokontrolera
ERRORLEVEL -224
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON & _WDT_OFF ; procesorske direktive
;===============================================================================
ORG 0
BSF STATUS, RP0 ; odabir BANK1
BCF TRISA, RA1 ; postavljanje RA1 na output (grijac)
MOVLW 0XFF
MOVWF TRISB ; postavljanje svih PORTB bitova na input
BCF STATUS, RP0 ; povratak na BANK0
BSF PORTA, RA1 ; grijac je iskljucen
MAIN
MOVLW D'21' ; 0b00010101, 0x15, 21 => trazena temperatura
SUBWF PORTB, W ; razlika izmedu trazene i trenutna
BTFSS STATUS, C ; ako je STATUS<C>=0 temperatura je manja od trazene
GOTO PALI ; pali se grijac
; ako je STATUS<C>=1, potrebno je provjeriti STATUS<Z>
BTFSS STATUS, Z ; ako je STATUS<Z>=0, temperatura je veca od trazene
GOTO GASI ; gasi se grijac
GOTO MAIN ; ako je temperatura jednaka trazenoj ceka se promjena
PALI
BCF PORTA, RA1
GOTO MAIN
GASI
BSF PORTA, RA1
GOTO MAIN
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment