📄 key.lst
字号:
C51 COMPILER V8.02 KEY 03/25/2009 20:03:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: D:\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 2 Key=KeyScan(); //键盘扫描子函数
15 2 if(Key==1){ //如果扫描到按键按下
16 3 P2=0x80; //点亮发光二极管
17 3 }
18 2 Delay(); //延时
19 2 P2=0x00; //熄灭发光二级管
20 2 }
21 1 }
22
23 void Delay() //延时子函数
24 {
25 1 long i;
26 1 for(i=10000;i>0;i--); //可以根据系统的时钟频率来调整
27 1 }
28
29 int KeyScan() //键盘扫描子函数
30 {
31 1 P1=0xF0; //列输出全0
32 1 if((P1&0xF0)!=0xF0){ //扫描行,如果不全为0,则进入
33 2 switch(P1) //获得行号
34 2 {
35 3 case 0x70:
36 3 hang=1;
37 3 break;
38 3 case 0xB0:
39 3 hang=2;
40 3 break;
41 3 case 0xD0:
42 3 hang=3;
43 3 break;
44 3 case 0xE0:
45 3 hang=4;
46 3 break;
47 3 default:
48 3 break;
49 3 }
50 2 Delay(); //延时去抖动
51 2 P1=0x0F; //行输出全0
52 2 if((P1&0x0F)!=0x0F){ //扫描列,如果不全为0,则确认按键按下
53 3 switch(P1) //获得列号
54 3 {
55 4 case 0x07:
C51 COMPILER V8.02 KEY 03/25/2009 20:03:51 PAGE 2
56 4 lie=1;
57 4 break;
58 4 case 0x0B:
59 4 lie=2;
60 4 break;
61 4 case 0x0D:
62 4 lie=3;
63 4 break;
64 4 case 0x0E:
65 4 lie=4;
66 4 break;
67 4 default:
68 4 break;
69 4 }
70 3 return 1; //扫描到按键按下,返回1
71 3 }
72 2 }
73 1 else{
74 2 return 0; //未扫描到按键按下,返回0
75 2 }
76 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 + -