/[H8]/trunk/PIC/Demo trimmet/keyboard.c
ViewVC logotype

Contents of /trunk/PIC/Demo trimmet/keyboard.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 109 - (show annotations) (download)
Mon May 28 10:13:48 2007 UTC (17 years ago) by hedin
File MIME type: text/plain
File size: 1647 byte(s)
Integrated barcode & keyboard modules
1 #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 Delay10us(1); //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 Delay10us(1);
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