this program is based on the PS/2 keyboard library and the LCD library, the lcd display whatever input is coming from the PS/2 keyboard.

Dependencies:   TextLCD mbed

Committer:
edwinb
Date:
Tue Mar 08 16:07:19 2011 +0000
Revision:
1:2178724f96f1
Parent:
0:3774ff2f9a59
a small typo in the code has been fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edwinb 0:3774ff2f9a59 1 #include "PS2Kbd.h"
edwinb 0:3774ff2f9a59 2 #include "mbed.h"
edwinb 0:3774ff2f9a59 3
edwinb 0:3774ff2f9a59 4
edwinb 0:3774ff2f9a59 5 /* ==================================================================
edwinb 0:3774ff2f9a59 6 * Constructor
edwinb 0:3774ff2f9a59 7 ================================================================= */
edwinb 0:3774ff2f9a59 8
edwinb 0:3774ff2f9a59 9 PS2Kbd::PS2Kbd(PinName clk, PinName din)
edwinb 0:3774ff2f9a59 10 : _ps2clk(clk), _ps2din(din) {
edwinb 0:3774ff2f9a59 11
edwinb 0:3774ff2f9a59 12 }
edwinb 0:3774ff2f9a59 13
edwinb 0:3774ff2f9a59 14 // =============================
edwinb 0:3774ff2f9a59 15 //
edwinb 0:3774ff2f9a59 16 // =============================
edwinb 0:3774ff2f9a59 17 unsigned char PS2Kbd::rd(void)
edwinb 0:3774ff2f9a59 18 {
edwinb 0:3774ff2f9a59 19 unsigned int buf = 0x00;
edwinb 0:3774ff2f9a59 20 int i;
edwinb 0:3774ff2f9a59 21
edwinb 0:3774ff2f9a59 22 _ps2clk = 0;
edwinb 0:3774ff2f9a59 23
edwinb 0:3774ff2f9a59 24 // both input
edwinb 0:3774ff2f9a59 25 _ps2din.input();
edwinb 0:3774ff2f9a59 26 _ps2clk.input();
edwinb 0:3774ff2f9a59 27
edwinb 0:3774ff2f9a59 28 for(i=0;i<11;i++) {
edwinb 0:3774ff2f9a59 29 while(_ps2clk);
edwinb 0:3774ff2f9a59 30 while(!_ps2clk);
edwinb 0:3774ff2f9a59 31 buf = buf >> 1;
edwinb 0:3774ff2f9a59 32 buf |= _ps2din ? 512 : 0;
edwinb 0:3774ff2f9a59 33 }
edwinb 0:3774ff2f9a59 34
edwinb 0:3774ff2f9a59 35 // output
edwinb 0:3774ff2f9a59 36 _ps2clk.output();
edwinb 0:3774ff2f9a59 37
edwinb 0:3774ff2f9a59 38 buf &= 0xFF;
edwinb 0:3774ff2f9a59 39
edwinb 0:3774ff2f9a59 40 return(ps2KeyMap[(unsigned char)buf]);
edwinb 0:3774ff2f9a59 41 //return (unsigned char)buf;
edwinb 0:3774ff2f9a59 42 }
edwinb 0:3774ff2f9a59 43
edwinb 0:3774ff2f9a59 44
edwinb 0:3774ff2f9a59 45 // =============================
edwinb 0:3774ff2f9a59 46 //
edwinb 0:3774ff2f9a59 47 // =============================
edwinb 0:3774ff2f9a59 48 void PS2Kbd::wr(unsigned char)
edwinb 0:3774ff2f9a59 49 {
edwinb 0:3774ff2f9a59 50 unsigned int buf = 0x00;
edwinb 0:3774ff2f9a59 51 int i;
edwinb 0:3774ff2f9a59 52
edwinb 0:3774ff2f9a59 53 _ps2clk = 0;
edwinb 0:3774ff2f9a59 54
edwinb 0:3774ff2f9a59 55 // both input
edwinb 0:3774ff2f9a59 56 _ps2din.input();
edwinb 0:3774ff2f9a59 57 _ps2clk.input();
edwinb 0:3774ff2f9a59 58
edwinb 0:3774ff2f9a59 59 for(i=0;i<11;i++) {
edwinb 0:3774ff2f9a59 60 while(_ps2clk);
edwinb 0:3774ff2f9a59 61 while(!_ps2clk);
edwinb 0:3774ff2f9a59 62 buf = buf >> 1;
edwinb 0:3774ff2f9a59 63 buf |= _ps2din ? 512 : 0;
edwinb 0:3774ff2f9a59 64 }
edwinb 0:3774ff2f9a59 65
edwinb 0:3774ff2f9a59 66 // output
edwinb 0:3774ff2f9a59 67 _ps2clk.output();
edwinb 0:3774ff2f9a59 68
edwinb 0:3774ff2f9a59 69 buf &= 0xFF;
edwinb 0:3774ff2f9a59 70
edwinb 0:3774ff2f9a59 71 }
edwinb 0:3774ff2f9a59 72
edwinb 0:3774ff2f9a59 73