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