📄 keyporcess.lst
字号:
C51 COMPILER V8.05a KEYPORCESS 07/29/2007 09:35:52 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEYPORCESS
OBJECT MODULE PLACED IN KeyPorcess.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\KeyPorcess.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\Ke
-yPorcess.lst) OBJECT(KeyPorcess.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:按键处理子函数 **
4 //**<功能>:当有外部中断0时调用此函数,获得键码,进行相应处理。 **
5 //*************************************************************************************************
6 //*************************************************************************************************
7
8
9 //*************************************************************************************************
10 //* *
11 //* ******************************头文件及宏定义************************** *
12 //* *
13 //*************************************************************************************************
14 #include <at89x51.h>
15 #include "Calculator.h"
16
17
18 //*************************************************************************************************
19 //* *
20 //* ********************************全局变量****************************** *
21 //* *
22 //*************************************************************************************************
23 extern bit b_ClockStart; //定时器0显示标志。
24
25 extern unsigned long ul_Number; //LCE显示数据,LCD实时显示该数字。
26
27 extern bit b_KeyShock; //键盘防抖动标志位。
28
29 unsigned long ul_TimeTemp; //暂停状态技计数存。
30
31
32 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<工作模式(默认为计算器模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
33 bit b_WorkMode=0; //0--计算器模式;
34 //1--计时模式。
35
36
37 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<计时工作状态标志位>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- //b_CountStart | b_CountPause
38 // 0 | 0 停止状态
39 bit b_CountStart=0; // 1 | 0 计时状态
40 bit b_CountPause=0; // 1` | 1 暂停状态
41 // 0 | 1 未定义
42
43 //****************************************************************************************************
44 //****************************************************************************************************
45
46
47 void vTimer(unsigned char ucKeyCode); //计时器处理函数。
48
49
50 //*************************************************************************************************
51 //* *
52 //* ********************************按键处理函数主函数****************************** *
53 //* *
C51 COMPILER V8.05a KEYPORCESS 07/29/2007 09:35:52 PAGE 2
54 //*************************************************************************************************
55 void vKeyProcess(unsigned char ucKeyCodeTemp)
56 {
57 1 if(b_WorkMode==1)
58 1 vTimer(ucKeyCodeTemp); //当工作模式为计时模式时调用计时器处理函数。
59 1 else
60 1 {
61 2 vCalculator(ucKeyCodeTemp); //当工作模式为计算器模式时调用计算器处理函数。
62 2 b_KeyShock=1;
63 2 }
64 1
65 1 }
66
67
68 //*************************************************************************************************
69 //* *
70 //* ********************************计时状态处理函数****************************** *
71 //* *
72 //*************************************************************************************************
73 void vTimer(unsigned char ucKeyCode)
74 {
75 1 switch(ucKeyCode)
76 1 {
77 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<当按下“NO/C”时执行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
78 2 case 41:
79 2 if((b_CountStart|b_CountPause)==0) //00:如果是停止状态则开始。
80 2 {
81 3 ul_Number=0; //初始化记时值为0.
82 3 b_CountStart=1; //重设标志位,改为开始状态;
83 3 b_ClockStart=1; //开始计时;
84 3 }
85 2 else if((b_CountStart&b_CountPause)==1) //11:如果是暂停状态则恢复为开始状态。
86 2 {
87 3 ul_Number=ul_TimeTemp; //初始化初值为暂存的值。
88 3 b_CountPause=0; //重设标志位,改为开始状态。
89 3 b_ClockStart=1; //开始计时。
90 3 }
91 2 else if((b_CountStart=1&(!b_CountPause))==1) //10 :如果是开始状态则暂停止。
92 2 {
93 3 b_CountStart=0; //重设标志位,改为停止状态。
94 3 b_ClockStart=0; //停止计时。
95 3 ul_Number=0; //恢复计时前状态。
96 3 }
97 2 break;
98 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<当按下“=”时执行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99 2 case 43:
100 2 if(b_CountStart==1) //如果是开始或暂停状态则进行处理,
101 2 { //否则不处理。
102 3 if(b_CountPause==0)
103 3 { //保存计时数值。
104 4 b_CountPause=1; //如果是开始状态则改为暂停状态。
105 4 ul_TimeTemp=ul_Number;
106 4 b_ClockStart=0; //停止计时。
107 4 }
108 3 else
109 3 {
110 4 b_CountPause=0; //如果是暂停状态则改变为进行状态。
111 4 ul_Number=ul_TimeTemp; //给计时器赋初值为暂停前的值。
112 4 b_ClockStart=1; //继续暂停前的计时。
113 4 }
114 3 }
115 2 else
C51 COMPILER V8.05a KEYPORCESS 07/29/2007 09:35:52 PAGE 3
116 2 {
117 3 b_WorkMode=0; //如果在停止计时状态按下“=”键便会切换到计算器模式。
118 3 b_KeyShock=1;
119 3 }
120 2 break;
121 2
122 2 default:break;
123 2 }
124 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 134 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 1
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -