📄 keyscan.lst
字号:
C51 COMPILER V7.20 KEYSCAN 04/28/2009 22:37:35 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 uchar keynum;
5 uchar b,a;
6 uint k;
7 uchar num;
8 uint keyscan();
9 void delay_ms(uint );
10 void main()
11 {
12 1 P0=0xff;
13 1 while(1)
14 1 {
15 2 keynum=keyscan();
16 2 P0=~keynum;
17 2 }
18 1 }
19
20 uint keyscan()
21 {
22 1 P1=0x0f;
23 1 b=P1;
24 1 b&=0x0f;
25 1 if(b!=0x0f)
26 1 {
27 2 delay_ms(75);
28 2 b=P1;
29 2 b&=0x0f;
30 2 if(b!=0x0f)
31 2 {
32 3
33 3 P1=0xf0;
34 3 a=P1;
35 3 a&=0xf0;
36 3 a|=b;
37 3 switch(a)
38 3 {
39 4 case(0xee): k=1;break;
40 4 case(0xed): k=2;break;
41 4 case(0xeb): k=3;break;
42 4 case(0xe7): k=4;break;
43 4 case(0xde): k=5;break;
44 4 case(0xdd): k=6;break;
45 4 case(0xdb): k=7;break;
46 4 case(0xd7): k=8;break;
47 4 case(0xbe): k=9;break;
48 4 case(0xbd): k=10;break;
49 4 case(0xbb): k=11;break;
50 4 case(0xb7): k=12;break;
51 4 case(0x7e): k=13;break;
52 4 case(0x7d): k=14;break;
53 4 case(0x7b): k=15;break;
54 4 case(0x77): k=16;break;
55 4 }
C51 COMPILER V7.20 KEYSCAN 04/28/2009 22:37:35 PAGE 2
56 3 // P1=0x0f;
57 3 // while ((P1&0x0f)!=0x0f); //松手检测
58 3 }
59 2 }
60 1 return k;
61 1 }
62
63 //延时子程序,参数z为所需的 ms 数
64 void delay_ms(uint z)
65 {
66 1 uint x,y;
67 1 for(x=z;x>0;x--)
68 1 for(y=110;y>0;y--);
69 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 286 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
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 + -