📄 key.lst
字号:
C51 COMPILER V7.10 KEY 07/01/2005 09:26:57 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE key.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //**********************************************************************************
2 //本函数模块来自"51单片机世界",作者版主丁丁(聂小猛)。
3 //主页地址http://www.mcu51.com
4 //本程序为本站推出的"MCU51-63K仿真器"及"DX-51多功能试验板"而设计的,详情请到本站查看.
5 //"51单片机世界"版权所有,未经允许,不得抄袭作为商业用途
6 //**********************************************************************************
7 //键盘码读取函数及蜂鸣器驱动
8 #define uchar unsigned char
9 #define uint unsigned int
10 #define ulong unsigned long
11 #include <reg52.h>
12 #include "study.h"
13
14 //读键盘码,采用的软件延时滤波,如果需要效率可以做一个中断延时的
15 //入口:检测按键延时的长度,一般取1000
16 //返回:键值,返回0表示无键按下
17 uchar getkey(uint t)
18 {
19 1 uchar c,c1,i;
20 1 static uchar oldkey;
21 1 bit iskey=0;
22 1 uchar dout[4]={0xdf,0xef,0xf7,0xfb};
23 1 uchar din[8]={0,1,0,2,0,0,0,3};
24 1 uchar code key[4][4]={{'1','4','*','7'},{'2','5','0','8'},{'3','6','#','9'},{'U','D','Y','C'}};
25 1
26 1 while(1)
27 1 {
28 2 for(i=0;i<4;i++)
29 2 {
30 3 P3=0xff;
31 3 while(P3&0x3c!=0x3c);
32 3 P3=dout[i]; //扫描线
33 3 P1=0xff;
34 3 c=P1 & 0x0f; //读
35 3 if (c!=0x0f)
36 3 {
37 4 c1=(key[din[14-c]][i]); //转换出健码
38 4 iskey=1;
39 4 }
40 3 }
41 2 if(t==0)
42 2 {
43 3 if (iskey)
44 3 {
45 4 P3=0xff; //恢复现场
46 4 if(oldkey==c1) //如果和上次的按键一样,就当作没有按键.这是为了避免连键
47 4 {
48 5 return(0);
49 5 }
50 4 oldkey=c1; //保存上次的按键
51 4 beep(1); //按键音
52 4 return(c1);
53 4 }
54 3 else
55 3 {
C51 COMPILER V7.10 KEY 07/01/2005 09:26:57 PAGE 2
56 4 oldkey=0; //返回0表示无按键
57 4 return(0);
58 4 }
59 3 }
60 2 t--;
61 2 }
62 1
63 1 }
64 //***************************************
65 //响蜂鸣器(喇叭)
66 sbit BB=P1^7;
67 void beep(uchar t)
68 {
69 1 uchar i;
70 1 uint j;
71 1 for(j=0;j<t*256;j++)
72 1 {
73 2 for(i=100;i>0;i--);//给i赋的初值决定输出的频率
74 2 BB=~BB;
75 2 }
76 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 185 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -