Entwicklungsboard Easy PIC v7 (PIC18F45K22)

Gast #2526951
Lesenswert?

Das klingt nach Kaffeesatz und Glaskugel!

Welchen Interrupt willst Du benutzen (müssen einzeln für jede Periferie 
eingeschaltet werden) welche Programierspache, was soll die ISR tun etc.

fragen über fragen...


mfG
Michael
Gast #2538708
Lesenswert?

Guten Abend,

ich möchte folgendes Programm auf meinem Easy PIC v7 (PIC18F45K22) zum 
laufen bringen!?

Das folgende Programm ist für den PIC18F4550 geschrieben.
1
#include <p18f4550.h>
2
#include <portb.h>
3
#include <timers.h>
4
#include <delays.h>
5

6
/* low voltage programming off*/
7
#pragma config LVP = OFF
8
/* wathdog timer off*/
9
#pragma config WDT = OFF
10
/* portb komplett digital */
11
#pragma config PBADEN = OFF
12
#pragma config DEBUG = ON
13

14
void isr_high();
15
void isr_low();
16

17
#pragma code high_vector= 0x08
18
 void high_isr (void){
19
  _asm
20
    goto isr_high
21
  _endasm
22
}
23
#pragma code
24

25
#pragma code low_vector= 0x18
26
 void low_isr (void){
27
  _asm
28
    goto isr_low
29
  _endasm
30
}
31
#pragma code
32

33
#pragma interrupt isr_high  
34
void isr_high(){
35
  if(INTCONbits.INT0IF== 1){
36
    INTCONbits.INT0IF= 0;
37
    PORTD= 0x0F;
38
    Delay10KTCYx(255);
39
  }
40
}
41

42
#pragma interruptlow isr_low
43
void isr_low(){
44
  static unsigned char counter= 0;
45
  if(INTCONbits.TMR0IF== 1){
46
    INTCONbits.TMR0IF= 0;
47
    if(counter %2)
48
      PORTD= 0x30;
49
    else{
50
      PORTD= 0xC0;
51
      counter= 0;
52
    }
53
    counter++;
54
  }
55
}
56

57
void main(){
58
  static unsigned char counter= 0;
59
  TRISD= 0x00;
60
  TRISC= 0x00;
61
  TRISB= 0x01;  
62
  PORTD= 0x00;
63
  PORTC= 0x01;
64

65
  RCONbits.IPEN= 1; /*enable low interrupts generally*/
66
  INTCON2bits.TMR0IP= 0;  /*timer0 auf low int*/
67
   INTCONbits.PEIE = 1; // Enable Peripheral interrupt
68
  INTCONbits.GIEL = 1; // Enble Global interrupt low
69
  INTCONbits.GIEH = 1; // Enble Global interrupt high
70

71
  OpenTimer0(TIMER_INT_ON & T0_SOURCE_INT & T0_16BIT & T0_PS_1_128);
72
  OpenRB0INT(PORTB_CHANGE_INT_ON & FALLING_EDGE_INT &PORTB_PULLUPS_OFF);
73
  WriteTimer0(0);
74

75
  while(1){
76
    if(counter %2)
77
      PORTC= 0xF0;
78
    else{
79
      PORTC= 0x0F;
80
      counter= 0;
81
    }
82
    Delay10KTCYx(255);
83
    counter++;
84
  }
85
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren