key44.lst
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 117 行
LST
117 行
C51 COMPILER V7.01 KEY44 07/15/2007 11:11:09 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE KEY44
OBJECT MODULE PLACED IN key44.OBJ
COMPILER INVOKED BY: D:\SOFTWARE\kkk\C51\BIN\C51.EXE key44.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3 //一个7段显示表 用于显示 0--9
4 unsigned char code tab[16]={0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
5
6 /************矩阵键盘读键程序*******************/
7 //输入参数: void
8 //输出参数: unsigned char 键值
9 //程序设计思路:扫描法读取键值(具体见书)
10 //
11 /**********4*4矩阵键盘****************/
12 /************
13 矩阵键盘按键值的分布,键值= 行号x4 + 列号
14
15 列入 3 2 1 0
16 P0.0-----P0.1-----P0.2-----P0.3
17
18 行出3 ----P0.4 C(F) 1(E) 4(d) 7(c) 功能(键值)
19
20 2 ----P0.5 0(b) 2(A) 5(9) 8(8)
21
22 1 ----P0.6 =(7) 3(6) 6(5) 9(4)
23
24 0 ----P0.7 +(3) _(2) *(1) /(0)
25
26
27 利用已有的按键程序
28 *************/
29 unsigned char getkey()
30 {
31 1 unsigned char keycode=0xff,temp,i;
32 1 P0=0x0f;
33 1 temp=P0&0x0f;
34 1 if(temp!=0x0f) //判是否有键按下
35 1 {
36 2 // beep=0;
37 2 P0=0xef; //自第0行开始扫描输出,自列读入键值
38 2 for(i=0;i<4;i++)
39 2 {
40 3 temp=P0&0x0f;
41 3 if(temp==0x07) //判断第0列是否有键按下
42 3 {
43 4 keycode=i*4;
44 4 break;
45 4 }
46 3 else if(temp==0x0b)//判断第1列是否有键按下
47 3 {
48 4 keycode=i*4+1;
49 4 break;
50 4 }
51 3 else if(temp==0x0d)//判断第2列是否有键按下
52 3 {
53 4 keycode=i*4+2;
54 4 break;
55 4 }
C51 COMPILER V7.01 KEY44 07/15/2007 11:11:09 PAGE 2
56 3 else if(temp==0x0e)//判断第3列是否有键按下
57 3 {
58 4 keycode=i*4+3;
59 4 break;
60 4 }
61 3 P0=(P0<<1)|0x1;
62 3 }
63 2
64 2 while((P0&0x0f)!=0x0f) //等待释放
65 2 {
66 3 P0=0x0f;
67 3 }
68 2 // beep=1;
69 2
70 2 }
71 1 return keycode;
72 1 }
73
74 /********程序执行结果***************/
75 // 按键程序测试代码,数码管一开始没有显示,
76 //当有按键按下时,则数码管显示按键值
77 //
78 main()
79 {
80 1 unsigned char key; //定义按键返回参数的变量
81 1 // P2 输出段码,初始没有显示
82 1 while(1)
83 1 {
84 2 key=getkey();
85 2 if(key==0)
86 2 P2=0;
87 2 if(key==1)
88 2 P2=0xff;
89 2 }
90 1
91 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 114 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?