/[H8]/trunk/PIC/Torbens/keyboard.c
ViewVC logotype

Annotation of /trunk/PIC/Torbens/keyboard.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 77 - (hide annotations) (download)
Mon May 7 19:42:43 2007 UTC (17 years, 1 month ago) by torben
File MIME type: text/plain
File size: 1643 byte(s)
Seems like I forgot to import my own code/project
1 torben 77 #include "myi2c.h"
2     #include "keyboard.h"
3    
4     #include "delay.h"
5    
6     #define DRIVER 0x70
7     #define SCANNER 0x72
8    
9     unsigned char keyboard_read_hardware(unsigned char scancode)
10     {
11     unsigned char ack,read;
12    
13     ack = StartI2C(DRIVER);
14     WriteI2CByte( scancode );
15     StopI2C();
16     DelayUs(4); //I2C spec's siger min 4.7 uSec mellem stop og nęste start
17    
18    
19     ack = ReStartI2C(SCANNER | 0x01); //read-mode
20     read = ReadI2CByte(0); //Lastbyte
21     StopI2C();
22     DelayUs(4);
23    
24     read &= 0x0F; //clear upper 4 bit
25     if (ack)
26     return read;
27     else
28     return 0;
29     }
30    
31     unsigned char keyboard_read(void)
32     {
33     unsigned char read;
34    
35     read = keyboard_read_hardware(0x0E);
36    
37     switch(read)
38     {
39     case 0x0e:
40     return 'C';
41     case 0x0D:
42     return 'D';
43     case 0x0B:
44     return 'E';
45     case 0x07:
46     return 'F';
47     }
48    
49     read = keyboard_read_hardware(0x0D);
50     switch(read)
51     {
52     case 0x0e:
53     return 'B';
54     case 0x0d:
55     return '9';
56     case 0x0B:
57     return '6';
58     case 0x07:
59     return '3';
60     }
61    
62     read = keyboard_read_hardware(0x0b);
63     switch(read)
64     {
65     case 0x0e:
66     return '0';
67     case 0x0d:
68     return '8';
69     case 0x0B:
70     return '5';
71     case 0x07:
72     return '2';
73     }
74    
75     read = keyboard_read_hardware(0x07);
76     switch(read)
77     {
78     case 0x0e:
79     return 'A';
80     case 0x0d:
81     return '7';
82     case 0x0B:
83     return '4';
84     case 0x07:
85     return '1';
86     }
87    
88     return 0;
89     }
90    
91     unsigned char keyboard_read_safe(void)
92     {
93     static unsigned char last_read;
94     unsigned char key,returnkey;
95    
96     returnkey = 0;
97     key = keyboard_read();
98    
99     if (last_read == 0 && key != 0)
100     {
101     returnkey = key;
102     }
103    
104     last_read = key;
105    
106     return returnkey;
107     }

  ViewVC Help
Powered by ViewVC 1.1.20