det som denna kod ska utföra är om spänningen understiger ca 2.5 v på RA0 så tänds en diod på RC6 (detta kollas i interrupten).
interruptrutinen mm behöver ni inte bry er om den bara blinkar en diod typ(och den fungerar för dioden blinkar

oscillator har jag en kristall på 4Mhz (så alltså har jag satt tad till 32 Tosc).
har läst datablade några gånger nu men fattar inte vad jaf har missat bah!
Kod: Markera allt
#include <p18f458.h>
#include <pwm.h>
#pragma config OSC = XT, OSCS = OFF
#pragma config PWRT = ON, BOR = OFF
#pragma config WDT = OFF
#pragma config STVR = ON, LVP = OFF
#pragma code high_vector = 0x0008
void interrupt_1(void);
void interrupt_at_high_vector(void)
{
_asm GOTO interrupt_1 _endasm
}
#pragma code
#pragma interrupt interrupt_1
//******GLOBALS********
int temp = 0;
int temp2 = 0;
void init (void){
//************INIT PORTS*************
TRISB = 0b00000000; // PORTB 0-7 OUT
TRISC = 0b00000000; // PORT C OUT
TRISA = 0b00000001; // PORT A0 IN resterande ut
//************TIMER2****************
T2CON = 0b01111101; // prescaler 1:4, Timer2 on
INTCONbits.GIE = 1; // Global Interrupt
INTCONbits.PEIE = 1; //
PIR1bits.TMR2IF = 0; //clearar flaggan
PIE1bits.TMR2IE = 1; //Timer 2 interrupt enable
IPR1bits.TMR2IP = 1; //High priority
TMR2 = 0; //clear Timer 2
PR2 = 0b11111111;
//***********A/D********************
ADCON0 = 0b10000001; // A/D settings
ADCON1 = 0b00001110; // --::--
PIE1bits.ADIE = 0; //A/D interrupt disable
PIE2bits.ECCP1IE = 0;
PIE2bits.EEIE = 0;
PIE2bits.CMIE = 0;
PIR2bits.ECCP1IF = 0;
PIR2bits.EEIF = 0;
PIR2bits.CMIF = 0;
IPR2bits.ECCP1IP = 0;
IPR2bits.EEIP = 0;
IPR2bits.CMIP = 0;
}
void interrupt_1(){
if (temp <= 127){
PORTCbits.RC7 = 0;
}
else{
PORTCbits.RC7 = 1;
}
if (temp > 256){
temp = 0;
}
if (temp2 <= 127){
PORTCbits.RC6 = 1;
}
else{
PORTCbits.RC6 = 0;
}
temp++;
PIR1bits.TMR2IF = 0;
}
void main (void){
init();
while (1){
if(ADCON0bits.GO == 0){
temp2 = ADRESH;
}
else{
}
}
}
hoppas någon har några tips!