📄 key.lst
字号:
C51 COMPILER V7.50 KEY 04/04/2006 13:37:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: e:\xp\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /************************************************************************************/
3 /* 程序名:44键盘代码 */
4 /* */
5 /* 晶振:12.0 M CPU型号:AT89S52 */
6 /* */
7 /* */
8 /* 功能描述: 44键盘代码,需将J13,J14连接P1口 */
9 /* 将J2跳线帽插上便于观察实验现象 */
10 /* K2(0) K4(1) K6(2) K8(3) K10(8) K12(9) K14(A) K16(B) */
11 /* K3(4) K5(5) K7(6) K9(7) K11(C) K13(D) K15(E) K17(F) */
12 /* */
13 /* http://www.mculover.net */
14 /* http://www.mculover.net/bbs */
15 /* */
16 /* */
17 /* 湘灵电子工作室 版权所有 */
18 /* 2006-03-20 */
19 /************************************************************************************/
20 #include<reg51.h>
21
22 unsigned char code tab[ ]={0xc0, 0xf9, 0xa4, 0xb0,
23 0x99, 0x92, 0x82, 0xf8,
24 0x80, 0x90, 0x88, 0x83,
25 0xc6, 0xa1, 0x86, 0x8e};//0到F的16个键植
26
27 /******************************************************************************/
28 void delayt(unsigned char t)//延时函数
29 {
30 1 unsigned char a;
31 1 while( --t != 0)
32 1 {
33 2 for(a=0;a<125;a++);
34 2 }
35 1 }
36
37 /******************************************************************************/
38 bit pkey(void)//判断键的否被按下,通过返回值确定
39 {
40 1 P1=0xf0;
41 1 if(P1!=0xf0)
42 1 {
43 2 delayt(20);
44 2 if(P1 != 0xf0)
45 2 return 1;
46 2 else
47 2 return 0;
48 2 }
49 1 else
50 1 return 0;
51 1 }
52
53 /******************************************************************************/
54 void main(void)//主函数
55 {
C51 COMPILER V7.50 KEY 04/04/2006 13:37:34 PAGE 2
56 1 unsigned char key, j ,k, s;
57 1
58 1 while(1)
59 1 {
60 2 if(pkey()== 1)//确定键被按下
61 2 {
62 3 P1=0xfe;
63 3 k=0xfe;
64 3 for(j=0;j<4;j++)
65 3 {
66 4 s=P1&0xf0;
67 4 switch(s)
68 4 {
69 5 case 0xe0: key=4*j+0; break;
70 5 case 0xd0: key=4*j+1; break;
71 5 case 0xb0: key=4*j+2; break;
72 5 case 0x70: key=4*j+3; break;
73 5 default: break;
74 5 }
75 4 k=(k<<1)|0x01;
76 4 P1=k;
77 4 }//for
78 3 }//if
79 2 //if((P1&0xf0)==0xf0)
80 2
81 2 P0=tab[key];
82 2 P2=0xfe;
83 2 delayt(10);
84 2 }//while
85 1 }
86
87
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 139 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -