Starten på et program
I starten av programmet må man ha litt informasjon om hva slags klokke oscillator som skal brukes,
om prosessoren skal være lese beskyttet, power on timer av /på
watchdog timer av / på og hvilke pinner som skal være utganger eller innganger
og hvilken type prosessor som brukes.
Konfigurering
LIST |
P=16F84 |
;Hvilken type prosessor som brukes |
_CP_ON |
EQU |
H'000F' |
_CP_OFF |
EQU |
H'3FFF' |
_PWRTE_ON |
EQU |
H'3FF7' |
_PWRTE_OFF |
EQU |
H'3FFF' |
_WDT_ON |
EQU |
H'3FFF' |
_WDT_OFF |
EQU |
H'3FFB' |
_LP_OSC |
EQU |
H'3FFC' |
_XT_OSC |
EQU |
H'3FFD' |
_HS_OSC |
EQU |
H'3FFE' |
_RC_OSC |
EQU |
H'3FFF' |
__CONFIG |
CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC |
ORG |
0 |
;Setter denne linjen til adresse 0 i program minnet |
|
BSF |
3,5 |
;Går over i bank 1 i RAM minnet |
|
MOVLW |
b'11111100' |
;Setter porta,0 ,1 til utgang og porta,2, 3, 4, til inngang |
|
MOVWF |
5 |
;Laster tallet over i trisa register |
|
MOVLW |
b'00001111' |
;Setter portb,0 ,1 ,2 ,3 til inngang og portb,4 ,5 ,6 ,7 til utgang |
|
MOVWF |
6 |
;Laster tallet over i trisb register |
|
BCF |
3,5 |
;Går tilbake til bank 0 i RAM minnet |
|
CLRF |
5 |
;Setter porta til 0 |
|
CLRF |
6 |
;Setter portb til 0 |
Her skriver man resten av programmet |
END |
;Markerer slutten på programmet |
Konfigurering
Denne konfigurasjonen setter prosessortypen til PI16F84,
Lesebeskyttelsen slås av ( CP_OFF ), dvs. at man kan lese programmet ut av prosessoren
senere ( hex koden ).
Vil man hindre andre i å kunne hente programmet ut av prosessoren, så settes lesebeskyttelsen på ( CP_ON ).
Power on timer settes på ( PWRTE_ON ) dvs. at programmet ikke startes før forsynings spenningen
har steget til et akseptabelt nivå.
Watchdog timer slås av (_WDT_OFF ), denne timeren bruks for å hindre at prosessoren
låser seg hvis programmet skulle henge seg av en eller annen grunn.
Watchdog timeren trenger man ikke å bry seg om i begynnelsen.
Klokke oscillatoren settes til krystall styrt ( _XT_OSC ).
Her kan man velge LP for low power krystall, XT for krystall / resonator,
HS for high speed krystall / resonator og RC for RC ledd ( motstand okondensator )
Porter
Porta,0 ,1 settes til utgang ( pinne 17 og 18 ) og porta,2 ,3 ,4 settes til inngang ( pinne 1 , 2 og 3 )
Portb,0 ,1 ,2 ,3 settes til inngang ( pinne 6 ,7 ,8 og 9 ) og portb,4 ,5 ,6 og 7 settes til utgang ( pinne 10 ,11 ,12 og 13 )
Trisa og trisb registerene bestemmer hvilke bit på porten som skal være inngang eller utgang,
0 er utgang og 1 er inngang.
Når man skriver et binært tall så er bittet til høyre det minst signifikante.
Så settes begge portene til 0 for å være sikker på at alle bit på portene er 0 når programmet startes.
Videre så skriver man programmet og avslutter det med END.