Hallo, ich arbeite mich gerade in die µC-Geschichten ein. Ein ganzschön komplexes und teilweise trockenes Thema. So weit klappt alles ganz gut. Jetzt möchte ich aber mal eine Interrupt-Routine ausprobieren und eine LED mit dem 16bit Timer1 zum Blinken bringen. Ich bin in ASM nicht besonders gut und es fällt mir sehr schwer die Erklärungen und Beispiele nach zu vollziehen. Vielleicht gibt es ja hier einen Pfiffigen, der eine "Keine Panink vor Mechanik"-mäßige Antwort hat :-) Danke, Basti Hier mein Ausgangspunkt. Müsste alles soweit konfiguriert sein. Controller: PIC 18F2550 Programmierung: MPLAB IDE - C18-Compiler
1 | //Testschaltung
|
2 | |
3 | //Includes
|
4 | #include <p18f2550.h> |
5 | #include "delays.h" |
6 | |
7 | //Config
|
8 | |
9 | #pragma config CPUDIV = OSC1_PLL2
|
10 | #pragma config FOSC=HS
|
11 | #pragma config FCMEN = OFF, IESO = OFF
|
12 | #pragma config PWRT = ON
|
13 | #pragma config BOR = OFF
|
14 | #pragma config WDT = OFF
|
15 | #pragma config LVP = OFF
|
16 | |
17 | |
18 | //defines
|
19 | #define OUT1 LATBbits.LATB0
|
20 | #define OUT2 LATBbits.LATB1
|
21 | #define OUT3 LATBbits.LATB2
|
22 | #define OUT4 LATBbits.LATB3
|
23 | #define OUT5 LATBbits.LATB4
|
24 | #define OUT6 LATBbits.LATB5
|
25 | #define OUT7 LATBbits.LATB6
|
26 | #define OUT8 LATBbits.LATB7
|
27 | |
28 | #define IN1 PORTAbits.RA0
|
29 | #define IN2 PORTAbits.RA1
|
30 | #define IN3 PORTAbits.RA2
|
31 | #define OUT9 LATAbits.LATA3
|
32 | #define OUT10 LATAbits.LATA4
|
33 | |
34 | //Declaration
|
35 | #pragma code
|
36 | void main (void) |
37 | {
|
38 | T1CON= 0b10110001; //Timer1 aktivieren |
39 | TMR1H=0; //High Byte T1 |
40 | TMR1L=0; //Low Byte T1 |
41 | ADCON1 = 0x0F; //Alle Port Pins auf digital gesetzt |
42 | TRISA=0xE7; //PORTA Ein- und Ausgänge |
43 | TRISB=0; //PORTB - Ausgang |
44 | PORTB=0; //PORTB auf Null setzen |
45 | INTCON=0b10000000; // |
46 | PIE1=1; //bei Auslösen PIR1(bit0)=0 setzen |
47 | |
48 | while (1) |
49 | {
|
50 | |
51 | }
|
52 | }
|