📄 scankeybord.lst
字号:
C51 COMPILER V8.02 SCANKEYBORD 02/08/2009 17:49:42 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SCANKEYBORD
OBJECT MODULE PLACED IN SCANKEYBORD.OBJ
COMPILER INVOKED BY: C:\Keil1\C51\BIN\C51.EXE SCANKEYBORD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 void scankey();
5 void display(uchar key);
6 void delay();
7 void delay1();
8 void keyvl_deal();
9 sbit FENG=P3^4;
10 uchar keyold=0,keyp,VKEY=0xff;
11 uchar key_table[]={0xed,0x7e,0x7d,0x7b,
12 0xbe,0xbd,0xbb,0xde,
13 0xdd,0xdb,0x77,0xb7,
14 0xee,0xd7,0xeb,0xe7};
15 uchar value_table[]={0x3f,0x06,0x5b,0x4f,
16 0x66,0x6d,0x7d,0x07,
17 0x7f,0x6f,0x77,0x7c,
18 0x39,0x5e,0x79,0x71};
19 void main()
20 {
21 1 while(1)
22 1 {
23 2 scankey();
24 2 if(VKEY!=0xff)
25 2 {
26 3 keyold=VKEY;
27 3 keyvl_deal();
28 3 display(keyp);
29 3 }
30 2 }
31 1
32 1 }
33 void scankey()
34 {
35 1 P0=0xfe; //扫描第一列
36 1 VKEY=P0; //P0口的值赋给键值寄存器
37 1 if(VKEY!=0xfe) //如果第一列有键按下
38 1 return; //返回键值寄存器的值
39 1 P0=0xfd; //扫描第二列
40 1 VKEY=P0;
41 1 if(VKEY!=0xfd)
42 1 return;
43 1 P0=0xfb; //扫描第三列
44 1 VKEY=P0;
45 1 if(VKEY!=0xfb)
46 1 return;
47 1 P0=0xf7; //扫描第四列
48 1 VKEY=P0;
49 1 if(VKEY!=0xf7)
50 1 return;
51 1 VKEY=0xff;
52 1 }
53 void keyvl_deal()
54 {
55 1 if(keyold!=VKEY)
C51 COMPILER V8.02 SCANKEYBORD 02/08/2009 17:49:42 PAGE 2
56 1 {FENG=1;
57 2 return;}
58 1 else
59 1 {
60 2 FENG=0;
61 2 for(keyp=0;keyp<16;keyp++)
62 2 {
63 3 if(VKEY==key_table[keyp])
64 3 break;
65 3 }
66 2 }
67 1
68 1 }
69 void display(uchar key)
70 {
71 1 int wei=0;
72 1 while(wei<1)
73 1 {
74 2 P1=wei; //位数字送P1口
75 2 P2=value_table[key]; //字码送P2口
76 2 delay(); //延时
77 2 P2=0x00;
78 2 wei++; //对P2口清零,防止影响下一位
79 2 }
80 1 }
81 void delay()
82 {
83 1 uint i=100;
84 1 while(i--);
85 1 }
86 /*void delay1()
87 {
88 int i=10;
89 while(i--);
90 } */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 160 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 3
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 + -