📄 key.lst
字号:
C51 COMPILER V7.50 KEY 11/23/2006 23:41:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE Key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h> //头文件
2 #include<stdio.h>
3
4 int hang; //定义行号
5 int lie; //定义列号
6
7 int KeyScan(); //子函数声明
8 void Delay();
9
10 void main() //主函数
11 {
12 1 int Key;
13 1 while(1) //开始循环扫描键盘
14 1 {
15 2 Key=KeyScan(); //键盘扫描子函数
16 2 if(Key==1) //如果扫描到按键按下
17 2 {
18 3 P2=0x80; //点亮发光二极管
19 3 }
20 2 Delay(); //延时
21 2 P2=0x00; //熄灭发光二级管
22 2 }
23 1 }
24
25 void Delay() //延时子函数
26 {
27 1 long i;
28 1 for(i=10000;i>0;i--); //可以根据系统的时钟频率来调整
29 1 }
30 int KeyScan() //键盘扫描子函数
31 {
32 1 P1=0xF0; //列输出全0
33 1 if((P1&0xF0)!=0xF0) //扫描行,如果不全为0,则进入
34 1 {
35 2 switch(P1) //获得行号
36 2 {
37 3 case 0x70:
38 3 hang=1;
39 3 break;
40 3 case 0xB0:
41 3 hang=2;
42 3 break;
43 3 case 0xD0:
44 3 hang=3;
45 3 break;
46 3 case 0xE0:
47 3 hang=4;
48 3 break;
49 3 default:
50 3 break;
51 3 }
52 2 Delay(); //延时去抖动
53 2 P1=0x0F; //行输出全0
54 2 if((P1&0x0F)!=0x0F) //扫描列,如果不全为0,则确认按键按下
55 2 {
C51 COMPILER V7.50 KEY 11/23/2006 23:41:19 PAGE 2
56 3 switch(P1) //获得列号
57 3 {
58 4 case 0x07:
59 4 lie=1;
60 4 break;
61 4 case 0x0B:
62 4 lie=2;
63 4 break;
64 4 case 0x0D:
65 4 lie=3;
66 4 break;
67 4 case 0x0E:
68 4 lie=4;
69 4 break;
70 4 default:
71 4 break;
72 4 }
73 3 return 1; //扫描到按键按下,返回1
74 3 }
75 2 }
76 1 else
77 1 {
78 2 return 0; //未扫描到按键按下,返回0
79 2 }
80 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 208 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 4
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 + -