📄 key.lst
字号:
C51 COMPILER V7.01 KEY 04/27/2007 22:08:22 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c COMPACT BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X52.h>
2 #include "typedef.h"
3
4 #define Nothing 100
5 //端口定义
6 sbit C1 = P2^3;
7 sbit C2 = P2^4;
8 sbit C3 = P3^2;
9 sbit C4 = P3^3;
10
11 sbit R1 = P3^4;
12 sbit R2 = P3^5;
13 sbit R3 = P3^0;
14 sbit R4 = P3^1;
15
16 uchar Key=Nothing; //键盘缓冲寄存器(公有数据)
17 uchar Fn_Key; //功能键
18
19 //*********************************************************************
20 //= 函数原型: void KEYPAD_Scan(char* const Key, char* const Fn_Key)
21 //= 功 能: 扫描键盘
22 //= 参 数: 普通键New_Key,功能键New_FuncKey,缓存器的指针
23 //= 返 回 值:
24 //= 函数性质:私有函数
25 //**********************************************************************
26
27 void KEYPAD_Scan(char* const Key, char* const Fn_Key)
28 {
29 1
30 1 C1 = 0;
31 1 if (R1 == 0) *Fn_Key = 'o'; //ON键
32 1 if (R2 == 0) *Key = 0;
33 1 if (R3 == 0) *Fn_Key = '=';
34 1 if (R4 == 0) *Key = '+';
35 1 C1 = 1;
36 1
37 1 C2 = 0;
38 1 if (R1 == 0) *Key = 1;
39 1 if (R2 == 0) *Key = 2;
40 1 if (R3 == 0) *Key = 3;
41 1 if (R4 == 0) *Key = '-';
42 1 C2 = 1;
43 1
44 1 C3 = 0;
45 1 if (R1 == 0) *Key = 4;
46 1 if (R2 == 0) *Key = 5;
47 1 if (R3 == 0) *Key = 6;
48 1 if (R4 == 0) *Key = '*';
49 1 C3 = 1;
50 1
51 1 C4 = 0;
52 1 if (R1 == 0) *Key = 7;
53 1 if (R2 == 0) *Key = 8;
54 1 if (R3 == 0) *Key = 9;
55 1 if (R4 == 0) *Key = '/';
C51 COMPILER V7.01 KEY 04/27/2007 22:08:22 PAGE 2
56 1
57 1 C4 = 1;
58 1
59 1 }
60 //*********************************************************************
61 //= 函数原型: void KEY_Update()
62 //= 功 能: 键盘缓冲寄存器更新程序. 普通键Key, 功能键Fn_Key
63 //= 参 数:
64 //= 返 回 值:
65 //= 函数性质:公有函数
66 //**********************************************************************
67 void KEY_Update()
68 {
69 1 static uchar delay=20; //去抖动延时
70 1 static bit delaying=0; //标识是否正在延时
71 1
72 1 if(delaying==0)
73 1 {
74 2 if(Key==Nothing) //如果Key缓存器中的数据未被读取,则不扫描键盘
75 2 {
76 3 KEYPAD_Scan(&Key,&Fn_Key); //扫描键盘
77 3 if(Key!=Nothing)
78 3 {
79 4 delaying=1;
80 4 Key=Nothing;
81 4
82 4 }
83 3 }
84 2 }
85 1 else
86 1 {
87 2 if(delay==0) //延时结束
88 2 {
89 3 KEYPAD_Scan(&Key,&Fn_Key); //读取键盘
90 3 delay=20;
91 3 delaying=0;
92 3 }
93 2 else delay--; //延时减一
94 2 }
95 1 }
96
97
98
99
100
101
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 380 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 3 6
DATA SIZE = ---- ----
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 + -