📄 keyboard.lst
字号:
C51 COMPILER V7.06 KEYBOARD 09/02/2005 20:33:33 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <8255A.h>
3 #include <keyboard.h>
4
5
6 void delay10ms(void)
7 {
8 1 unsigned char i,j,k;
9 1 for(i=5;i>0;i--)
10 1 for(j=4;j>0;j--)
11 1 for(k=248;k>0;k--);
12 1 }
13
14
15 void delay500ms(void)
16 {
17 1 unsigned char i,j,k;
18 1 for(i=15;i>0;i--)
19 1 for(j=202;j>0;j--)
20 1 for(k=81;k>0;k--);
21 1 }
22
23 void setcol(Uchar col)
24 {
25 1 // SelectForm0(0,0,0,1);//PortA output ,PortB input
26 1 delay8255();
27 1 if (col==1) PortA=0xff-0x10;
28 1 if (col==2) PortA=0xff-0x20;
29 1 if (col==3) PortA=0xff-0x40;
30 1 if (col==4) PortA=0xff-0x80;
31 1 }
32
33 Uchar getrow()
34 {
35 1 Uchar temprow=0,port=0;
36 1 port=PortB&0x0f;
37 1 switch(port)
38 1 {
39 2 case 14:temprow=1;break;
40 2 case 13:temprow=2;break;
41 2 case 11:temprow=3;break;
42 2 case 7:temprow=4;break;
43 2 default:temprow=0;
44 2 }
45 1 return (temprow);
46 1 }
47
48 void delay8255(void)
49 {
50 1 Uchar i;
51 1 for(i=0;i<100;i++);
52 1 }
53
54 unsigned char WaitKey()
55 {
C51 COMPILER V7.06 KEYBOARD 09/02/2005 20:33:33 PAGE 2
56 1 char col,row,temprow,tempcol;
57 1 int flag=0;
58 1
59 1 temprow=0;
60 1
61 1 while(temprow==0)
62 1 {
63 2 for(tempcol=1;tempcol<=4;tempcol++)
64 2 {
65 3 setcol(tempcol);
66 3 // delay10ms();
67 3 temprow=getrow();
68 3 if(temprow!=0)
69 3 {
70 4 // delay10ms();
71 4 // if(temprow==getrow())
72 4 {
73 5 col=tempcol;
74 5 row=temprow;
75 5 break;
76 5 }
77 4
78 4 }
79 3
80 3 }
81 2 }
82 1 return(10*col+row);
83 1 }
84
85 unsigned char GetKey()
86 {
87 1 int tmp,ret;
88 1 Uchar i=0;
89 1 SelectForm0(0,0,0,1);
90 1 delay8255();
91 1 tmp = WaitKey();
92 1 switch(tmp)
93 1 {
94 2
95 2
96 2 case 11: ret=NUM0;break;
97 2 case 21: ret=NUM8;break;
98 2 case 31: ret=NUM5;break;
99 2 case 41: ret=NUM2;break;
100 2
101 2 case 12: ret=CANCEL;break;
102 2 case 22: ret=NUM9;break;
103 2 case 32: ret=NUM6;break;
104 2 case 42: ret=NUM3;break;
105 2
106 2 case 13: ret=DOWN;break;
107 2 case 23: ret=RIGHT;break;
108 2 case 33: ret=LEFT;break;
109 2 case 43: ret=UP;break;
110 2
111 2 case 14: ret=CONFIRM;break;
112 2 case 24: ret=NUM7;break;
113 2 case 34: ret=NUM4;break;
114 2 case 44: ret=NUM1;break;
115 2
116 2 default: ret=0xff;
117 2 }
C51 COMPILER V7.06 KEYBOARD 09/02/2005 20:33:33 PAGE 3
118 1 return ret;
119 1 }
120
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -