📄 矩阵键盘.lst
字号:
C51 COMPILER V7.50 __阵键盘 08/24/2011 11:40:31 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE __阵键盘
OBJECT MODULE PLACED IN 矩阵键盘.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 矩阵键盘.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 矩阵键盘.c
3 * 描述 : 该文件实现了 4 * 4 键盘的试验。通过数码管的最后一位来显示
4 当前的按键值。
5 * 创建人 : 东流,2009年4月10日
6 * 版本号 : 2.0
7 *********************************************************************/
8 #include<reg51.h>
9 #include<intrins.h>
10
11 #define uint unsigned int
12 #define uchar unsigned char
13
14 uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
15
16 /********************************************************************
17 * 名称 : Delay_1ms()
18 * 功能 : 延时子程序,延时时间为 1ms * x
19 * 输入 : x (延时一毫秒的个数)
20 * 输出 : 无
21 ***********************************************************************/
22 void Delay_1ms(uint i)//1ms延时
23 {
24 1 uchar x,j;
25 1 for(j=0;j<i;j++)
26 1 for(x=0;x<=148;x++);
27 1 }
28
29
30 /********************************************************************
31 * 名称 : Keyscan()
32 * 功能 : 实现按键的读取。下面这个子程序是按处理 矩阵键盘 的基本方法处理的。
33 * 输入 : 无
34 * 输出 : 按键值
35 ***********************************************************************/
36 uchar Keyscan(void)
37 {
38 1 uchar i,j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7}; //给矩阵键盘的每行分别付低电平
39 1 for(j=0; j<4; j++)
40 1 {
41 2 P1 = Buffer[j];
42 2 temp = 0x10;
-
43 2 for(i=0; i<4; i++)
44 2 {
45 3 if(!(P1 & temp)) //判断P1口高4位某一行为低电平
46 3 {
47 4 return (i+j*4); //返回键码
48 4 }
49 3 temp <<= 1;
50 3 }
51 2 }
52 1 }
53
54 /********************************************************************
C51 COMPILER V7.50 __阵键盘 08/24/2011 11:40:31 PAGE 2
55 * 名称 : Main()
56 * 功能 : 主函数
57 * 输入 : 无
58 * 输出 : 无
59 ***********************************************************************/
60 void Main(void)
61 {
62 1 uchar Key_Value; //读出的键值
63 1 while(1)
64 1 {
65 2 P1 = 0xf0;
66 2 if(P1 != 0xf0) //判断有无按键按下
67 2 {
68 3 Delay_1ms(20); //按键消抖
69 3 if(P1 != 0xf0) //第二次判断有无按键按下
70 3 {
71 4 Delay_1ms(20); //按键消抖
72 4 if(P1 != 0xf0) //第三次判断有无按键按下
73 4 {
74 5 Key_Value = Keyscan();
75 5 }
76 4 }
77 3 }
78 2 P0 = table[Key_Value];
79 2 P2 = 0x07;
80 2 }
81 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 129 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -