Hallo.
Trotz Suche fand ich in keinem eurer Threads die Lösung zu meinem
Problem. Hoffe ihr könnt mir hier weiter helfen:
Ich will ein HD44780 LCD (P.Fleury lib ;) ) so ansteuern, dass es bei
bestimmten Pin zuständen, einen bestimmten Text ausgibt.
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 | #include "lcd.h"
|
4 |
|
5 | void outp(char d);
|
6 |
|
7 | int main(void)
|
8 | {
|
9 | char x;
|
10 | DDRC=0x00;
|
11 | DDRB=0xff;
|
12 |
|
13 | lcd_init(LCD_DISP_ON);
|
14 | lcd_puts("~~~ POWER ON ~~~");
|
15 | lcd_gotoxy(0,1);
|
16 | lcd_puts("~~~~~~~~~~~~~~~~");
|
17 | _delay_ms(2000);
|
18 | while(1)
|
19 | {
|
20 | PORTB=0x01; //Status LED
|
21 | x=0; // x rücksetzen
|
22 | if(PINC & (1<<PINC0)) //PINC0 high
|
23 | x=1;
|
24 | if(PINC & (1<<PINC1)) //PINC1 high
|
25 | x=2;
|
26 | if(PINC & (1<<PINC2)) //PINC2 high
|
27 | x=3;
|
28 | _delay_ms(30); //entplellung??
|
29 | outp(x);
|
30 | _delay_ms(100); //Anzeigedauer
|
31 | }
|
32 | return 0;
|
33 | }
|
34 |
|
35 | void outp(char d)
|
36 | {
|
37 | switch(d)
|
38 | {
|
39 | case 1:
|
40 | lcd_gotoxy(0,0);
|
41 | lcd_puts("~~~~ Reset ~~~~ ");
|
42 | lcd_gotoxy(0,1);
|
43 | lcd_puts("~~~~~~~~~~~~~~~~");
|
44 | break;
|
45 |
|
46 | case 2:
|
47 | lcd_gotoxy(0,0);
|
48 | lcd_puts("Heutiges Datum: ");
|
49 | lcd_gotoxy(0,1);
|
50 | lcd_puts(" So 14.02.2010 ");
|
51 | break;
|
52 |
|
53 | case 3:
|
54 | lcd_gotoxy(0,0);
|
55 | lcd_puts("Text 1 *********");
|
56 | lcd_gotoxy(0,1);
|
57 | lcd_puts("Text 2 *********");
|
58 | break;
|
59 |
|
60 | default:
|
61 | lcd_gotoxy(0,0);
|
62 | lcd_puts("!!!!! Fail !!!!!");
|
63 | lcd_gotoxy(0,1);
|
64 | lcd_puts(" ERROR !! ERROR ");
|
65 | break;
|
66 | }
|
67 | }
|
Das POWER ON zeigt er noch ordnungsgemäß an, der nachfolgende ist zwar
einer meiner CASEes (meistens case 2") allerdings zeigt er das immer an,
also vollig unabhängig davon ob oder wo ich meinem Taster betätige.
Da "POWER ON" funzt, kann es eig nur am Prog liegen, aber wo..?
ich mein Pins fragt man ja mit
ab oder?
Achja, mein Taster ist im Mom ein Kabel(+5V) welches ich an den
betreffenden Pin hänge.
Und ExtInt verwende ich nicht da ich PORTD verwenden MUSS.
Dankbar für jede hilfe,
Olli