Hallo,
ich bin (noch immer) dabei einen Tastendruck auszulesen. Ich habe eine
Taste am Port P2_10 angeschlossen und wollte mit folgendem Programm den
Tastendruck auslesen:
1 | #include <reg167.h>
|
2 | #include <stdio.h>
|
3 | |
4 | sbit P2_9 = P2^9;
|
5 | sbit DP2_9 = DP2^9;
|
6 | |
7 | sbit P2_10 = P2^10;
|
8 | sbit DP2_10 = DP2^10;
|
9 | |
10 | void wait (void) {
|
11 | ;
|
12 | }
|
13 | |
14 | |
15 | |
16 | void main (void) {
|
17 | |
18 | unsigned long i;
|
19 | |
20 | DP2_9 = 1;
|
21 | DP2_10 = 0;
|
22 | |
23 | /*****************/
|
24 | |
25 | P3 |= 0x0400;
|
26 | DP3 |= 0x0400;
|
27 |
|
28 | DP3 &= 0xF7FF;
|
29 |
|
30 | S0TIC = 0x80;
|
31 | S0RIC = 0x00;
|
32 | S0BG = 0x40;
|
33 | S0CON = 0x8011;
|
34 | |
35 | putchar(' ');
|
36 | |
37 | printf ("Hello World vom Controller %d \n: ", P2_10);
|
38 |
|
39 | /*****************/
|
40 | |
41 | |
42 | while (1) {
|
43 | |
44 | P2_9 = 0;
|
45 | for (i=0; i<20000; i++) {
|
46 | wait ();
|
47 | }
|
48 | |
49 | P2_9 = 1;
|
50 | for (i=0; i<20000; i++) {
|
51 | wait ();
|
52 | }
|
53 | |
54 | // Key pressed
|
55 | |
56 |
|
57 | |
58 | switch (P2 & 0x0A) {
|
59 | case 0x1: printf("Taster 0x1");
|
60 | break;
|
61 | case 0x0: printf("Taster 0x0");
|
62 | break;
|
63 | default: printf("default!!!!");
|
64 |
|
65 | }
|
66 | }
|
67 | }
|
Leider funktioniert das nicht. Es kommt am Hyperterminal immer
default!!!! an egal ob ich die Taste drücke oder nicht. Ich bin mir
nicht sicher ob ich das mit dem Switch so machen kann?
Weiß jemand was ich da falsch mache? Ich arbeite mit einem miniModul
C167.
Besten Dank