PIC16f887, osäker på inställningar för intern oscillator
Postat: 18 februari 2015, 20:05:44
Har bara kört på kristall tidigare men har ett projekt där kristall nog vore bra att slippa.
Skulle vilja ha kommentarer på dels om jag missat något för att köra den på 4MHz intern oscillator och även övriga kommentarer på koden.
Skulle vilja ha kommentarer på dels om jag missat något för att köra den på 4MHz intern oscillator och även övriga kommentarer på koden.
Kod: Markera allt
;****************************************************************
;*********************** Processor-modell ***********************
;****************************************************************
;Se till att rätt processor är vald under Configure > Select device
list p=16F887
#include <p16f887.inc>
;****************************************************************
;******************* Slut på processor-modell *******************
;****************************************************************
;****************************************************************
;******************** Stäng av varning **************************
;****************************************************************
errorlevel -302 ;Register in operand not in bank 0. Ensure that bank bits are correct.
;****************************************************************
;******************** Slut på stäng av varning ******************
;****************************************************************
;****************************************************************
;********************* Configurationsbitar **********************
;****************************************************************
__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CP_OFF & _CPD_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
;****************************************************************
;******************** Slut på configurationsbitar ***************
;****************************************************************
;****************************************************************
;******************* Uppstartsrutin efter Reset *****************
;****************************************************************
org 0x00 ;Normal programkörning
goto init ;Hoppa till första instruktionen i programmet
;****************************************************************
;************* Slut på uppstartsrutin efter Reset ***************
;****************************************************************
;*************************************************************************
;***************** Initiering av klocka och portar ***********************
;*************************************************************************
init
;Sätt processorhastighet till 4 MHz vid användning av intern oscillator
BANKSEL OSCCON
bcf OSCCON,0 ;SCS Klockans inställningar definieras av FOSC<2:0> från CONFIG1-registret
bcf OSCCON,4 ;IRCF<0> Välj intern oscillator-frekvens
bsf OSCCON,5 ;IRCF<1> Välj intern oscillator-frekvens
bsf OSCCON,6 ;IRCF<2> Välj intern oscillator-frekvens
;Nolla alla utgångar
BANKSEL PORTA
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
BANKSEL TRISA
;Riktningsregister port A
movlw b'00000000'
movwf TRISA
;Riktningsregister port B
movlw b'00000000'
movwf TRISB
;Riktningsregister port C
movlw b'00000000'
movwf TRISC
;Riktningsregister port D
movlw b'00000000'
movwf TRISD
;Riktningsregister port E
;Port E är 4 bitar, bit 0-3
;Bit 3 kan endast användas som ingång, i detta fall MCLR, master clear reset
movlw b'00001000'
movwf TRISE
;Väljer om det är en digital eller analog ingång, 0 = digita1, 1 = analog
;Här måste ändras vid användning av analogingångar
BANKSEL ANSEL
movlw b'00000000' ;AN7, AN6, AN5, AN4, AN3, AN2, AN1, AN0
movwf ANSEL
movlw b'00000000' ;AN13, AN12, AN11, AN10, AN9, AN8
movwf ANSELH
BANKSEL PORTA ;Välj bank där portar finns
;*******************************************************************
;*********** Slut på initiering av port A, B, C, D, E **************
;*******************************************************************
;*******************************************************************
;********************* Huvudprogram ********************************
;*******************************************************************
Main
;Här skrivs programmet.
;*****************************************************************
;************************ Slut på huvudprogram *******************
;*****************************************************************
End