PIC Tastenabfrage

Gast #1357471
Lesenswert?

Hallo,
kann mir jemand einen gefallen tun?

Ich hab hier ein PIC18f4550
verwende dazu einen 20MHz Quartz und habe drei Schalter an (RE0, RE1, 
RE2) angeschlossen, dazu sind noch an den PORT's RC2 RB6 & RB7 LED's 
angeschlossen.

Ich Programmiere in Microchip C18

Nun kurz zum Programm und desen Funktion:
Taster 1 einmal drücken LED1 leuchtet (RC2)
Taster 1 nocheinmal drucken LED1 geht wieder aus

Taster 2 einmal drücken LED2 leuchtet (RB6)
Taster 2 nocheinmal drucken LED2 geht wieder aus

Taster 3 einmal drücken LED1 leuchtet (RB7)
Taster 3 nocheinmal drucken LED3 geht wieder aus

Die Taster sind über Pullup und einem Vorwiderstand an den Ports 
angschlossen und werden gegen GND geschaltet
Betriebspg: 5V

Ich habe mal ein bischen versucht:
1
   /** I N C L U D E S **********************************************************/
2
#include <p18cxxx.h>
3
 
4

5
/** Configuration ********************************************************/
6
#pragma config FOSC = HS   //CPU=20 MHz
7
#pragma config PWRT = ON
8
#pragma config BOR = OFF
9
#pragma config WDT = OFF  //Watchdog Timer
10
#pragma config LVP = OFF  //Low Voltage ICSP
11

12

13
#define led1  LATBbits.LATB7
14
#define led2  LATBbits.LATB6
15
#define led3  LATCbits.LATC
16

17

18
#define taster1  PORTEbits.RE0
19
#define taster2  PORTEbits.RE1
20
#define taster3  PORTEbits.RE2
21

22

23
/** D E C L A R A T I O N S **************************************************/
24
#pragma code
25

26
void main(void)
27
{
28
  TRISB = 0;
29
  TRISC = 0;
30
  TRISE = 1;
31

32

33
  while(1)
34
  {
35
  if (taster1 == 1) {
36
    led1 = 1;
37
  } else {
38
    led1 = 0;
39
  }
40
  if (taster2 == 1) {
41
    led2 = 1;
42
  } else {
43
    led2 = 0;
44
  }
45
  if (taster3 == 1) {
46
    led3 = 1;
47
  } else {
48
    led3 = 0;
49
  }
50
  }
51
 }

Leider Funktioniert es nicht (das die LEDs nicht anbleiben beim drücken 
ist mir klar (dazu ist das Programm "noch" nicht im Stande... :)))

Kann mir Jemand helfen BITTE


MfG
Maximilian
Gast #1359506
Lesenswert?

Der TE sucht ein einfaches Programm. Ihm fehlen doch noch grundlegende 
Kenntnisse in der Programmierung.

Die Interruptlösung ist doch erst für etwas fortgeschrittene User, oder 
seh ich das falsch?

Was macht ein Prozessor in Deiner Interruptlösung? Er dreht 
Warteschleifen und macht nix oder er schläft vor sich hin. Da kann er 
doch ohne Performanceverlust 3 Tasten abfragen.

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