📄 ps2keybroad.lst
字号:
C51 COMPILER V7.50 PS2KEYBROAD 06/24/2007 16:02:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PS2KEYBROAD
OBJECT MODULE PLACED IN PS2Keybroad.OBJ
COMPILER INVOKED BY: D:\程序\keil\C51\BIN\C51.EXE PS2Keybroad.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"PS2.H"
2
3 sbit Key_Data = P0^0;//定义Keyboard数据端口引脚
4 sbit Key_CLK = P3^2; //中断端口,时钟线
5
6
7 static unsigned char KeyV=0X00; //键值
8 static unsigned char BF = 0; //标识是否有字符被收到
9 static unsigned char IntNum = 0; //中断次数计数
10
11 unsigned char PS2count=0;
12 bit dx=0; //大小写标志 dx==1时大写状态
13 bit KeyInFlag=0;
14 unsigned char X,Y;
15
16 void Decode( void );
17 /***********************************************************
18 函数名称:
19 函数功能:
20 入口参数:
21 出口参数:
22 备 注:
23 ***********************************************************/
24 void Keyboard_out() interrupt 0//键盘中断处理 键值存储在 KeyV 中
25 {
26 1
27 1
28 1 if ((IntNum>0) && (IntNum <9))
29 1 {
30 2 KeyV = KeyV >> 1; //因键盘数据是低>>高,结合上一句所以右移一位
31 2 if (Key_Data==1) //当键盘数据线为1时
32 2 {KeyV = KeyV | 0x80;} //存储一位
33 2 }
34 1 IntNum++; //中断次数加一(中断一次接收一位数据)
35 1
36 1 if (IntNum>33) //中断33次后数据发送完毕,舍弃了通码和断码
37 1 {
38 2 IntNum = 0;
39 2 BF = 1; //标识有字符输入完了
40 2 EA = 0;
41 2 }
42 1
43 1 }
44 /***********************************************************
45 函数名称:
46 函数功能:
47 入口参数:
48 出口参数:
49 备 注:
50 ***********************************************************/
51 void Decode( void ) //键值处理
52 {
53 1 unsigned char KeyBoradInData = 200;
54 1 unsigned char CharNumber;
55 1 unsigned char CharBuffer[64];
C51 COMPILER V7.50 PS2KEYBROAD 06/24/2007 16:02:37 PAGE 2
56 1
57 1 unsigned char TempCyc;
58 1 // unsigned char k;
59 1
60 1 if(BF==1) //接收完一个有效数据时
61 1 {
62 2 TempCyc = KeyV;
63 2 BF = 0; //准备下一次接收
64 2 if(dx)
65 2 {
66 3 switch ( TempCyc ) //键值与显示字符的对应关系
67 3 {
68 4 case 0x8a: KeyBoradInData = '0'; break; //0
69 4 case 0x15: KeyBoradInData = '0'; break; //0
70 4 case 0x59: KeyBoradInData = '1'; break; //1
71 4 case 0x2c: KeyBoradInData = '1'; break; //1
72 4 case 0x3c: KeyBoradInData = '2'; break; //2
73 4 case 0x4c: KeyBoradInData = '3'; break; //3
74 4 case 0x99: KeyBoradInData = '3'; break; //3
75 4 case 0x4a: KeyBoradInData = '4'; break; //4
76 4 case 0x95: KeyBoradInData = '4'; break; //4
77 4 case 0xb9: KeyBoradInData = '5'; break; //5
78 4 case 0x5c: KeyBoradInData = '5'; break; //5
79 4 case 0x6c: KeyBoradInData = '6'; break; //6
80 4 case 0xd9: KeyBoradInData = '6'; break; //6
81 4 case 0x7a: KeyBoradInData = '7'; break; //7
82 4 case 0xf5: KeyBoradInData = '7'; break; //7
83 4 case 0x7c: KeyBoradInData = '8'; break; //8
84 4 case 0xf9: KeyBoradInData = '8'; break; //8
85 4 case 0x8c: KeyBoradInData = '9'; break; //9
86 4 case 0x19: KeyBoradInData = '9'; break; //9
87 4 case 0x38: KeyBoradInData = 'A'; break; //a
88 4 case 0x71: KeyBoradInData = 'A'; break; //a
89 4 case 0x64: KeyBoradInData = 'B'; break; //b
90 4 case 0xc9: KeyBoradInData = 'B'; break; //b
91 4 case 0x43: KeyBoradInData = 'C'; break; //c
92 4 case 0x85: KeyBoradInData = 'C'; break; //c
93 4 case 0x47: KeyBoradInData = 'D'; break; //d
94 4 case 0x8d: KeyBoradInData = 'D'; break; //d
95 4 case 0x48: KeyBoradInData = 'E'; break; //e
96 4 case 0x91: KeyBoradInData = 'E'; break; //e
97 4 case 0x57: KeyBoradInData = 'F'; break; //f
98 4 case 0xad: KeyBoradInData = 'F'; break; //f
99 4 case 0x68: KeyBoradInData = 'G'; break; //g
100 4 case 0xd1: KeyBoradInData = 'G'; break; //g
101 4 case 0x67: KeyBoradInData = 'H'; break; //h
102 4 case 0xcd: KeyBoradInData = 'H'; break; //h
103 4 case 0x87: KeyBoradInData = 'I'; break; //i
104 4 case 0x0d: KeyBoradInData = 'I'; break; //i
105 4 case 0x77: KeyBoradInData = 'J'; break; //j
106 4 case 0xed: KeyBoradInData = 'J'; break; //j
107 4 case 0x84: KeyBoradInData = 'K'; break; //k
108 4 case 0x09: KeyBoradInData = 'K'; break; //k
109 4 case 0x97: KeyBoradInData = 'L'; break; //l
110 4 case 0x2d: KeyBoradInData = 'L'; break; //l
111 4 case 0x74: KeyBoradInData = 'M'; break; //m
112 4 case 0xe9: KeyBoradInData = 'M'; break; //m
113 4 case 0x63: KeyBoradInData = 'N'; break; //n
114 4 case 0xc5: KeyBoradInData = 'N'; break; //n
115 4 case 0x88: KeyBoradInData = 'O'; break; //o
116 4 case 0x11: KeyBoradInData = 'O'; break; //o
117 4 case 0x9b: KeyBoradInData = 'P'; break; //p
C51 COMPILER V7.50 PS2KEYBROAD 06/24/2007 16:02:37 PAGE 3
118 4 case 0x35: KeyBoradInData = 'P'; break; //p
119 4 case 0x2b: KeyBoradInData = 'Q'; break; //q
120 4 case 0x55: KeyBoradInData = 'Q'; break; //q
121 4 case 0x5b: KeyBoradInData = 'R'; break; //r
122 4 case 0xb5: KeyBoradInData = 'R'; break; //r
123 4 case 0x36: KeyBoradInData = 'S'; break; //s
124 4 case 0x58: KeyBoradInData = 'T'; break; //t
125 4 case 0xb1: KeyBoradInData = 'T'; break; //t
126 4 case 0x78: KeyBoradInData = 'U'; break; //u
127 4 case 0xf1: KeyBoradInData = 'U'; break; //u
128 4 case 0x54: KeyBoradInData = 'V'; break; //v
129 4 case 0xa9: KeyBoradInData = 'V'; break; //v
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -