📄 calculator.lst
字号:
C51 COMPILER V8.05a CALCULATOR 07/30/2007 13:24:31 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CALCULATOR
OBJECT MODULE PLACED IN Calculator.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\Calculator.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\Ca
-lculator.lst) OBJECT(Calculator.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:计算器处理主程序,根据计算器的输入状态分派不同的函数对按键进行处理。 **
4 //**<功能>:当b_WorkMode=0是,若有键按下则调用此函数对键码进行处理。 **
5 //*************************************************************************************************
6 //*************************************************************************************************
7
8
9 //*************************************************************************************************
10 //* *
11 //* ******************************头文件及宏定义************************** *
12 //* *
13 //*************************************************************************************************
14 #include "CalReady.h"
15
16
17 //*************************************************************************************************
18 //* *
19 //* ********************************全局变量****************************** *
20 //* *
21 //*************************************************************************************************
22 extern unsigned long ul_Number; //LCE显示数据,LCD实时显示该数字。
23
24 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<工作模式(默认为计算器模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
25 extern bit b_WorkMode; //0--计算器模式;
26 //1--计时模式。
27 //定义在KeyProcess.c中。
28 unsigned char uc_ModeChange=0;
29
30 extern bit b_LCDClean;
31
32 extern unsigned char uc_ReportSymbol;
33
34
35 unsigned long ul_NumberOne=0; //第一个数
36 unsigned long ul_NumberTwo=0; //第二个数
37 unsigned char uc_Operator=0; //运算符
38 unsigned long ul_Result=0; //运算结果
39 unsigned char uc_NumPointer=1; //计算状态
40
41 //*************************************************************************************************
42 //* *
43 //* *******************************计算器处理主函数****************************** *
44 //* *
45 //*************************************************************************************************
46
47
48
49
50 void vCalculator(unsigned char ucKeyCode)
51 {
52 1 if(ucKeyCode==41) //判断按键是不是'NO/C'。
53 1 {
54 2 if(uc_NumPointer==1) //如果是‘NO/C’键则判断手机否是状态一。
C51 COMPILER V8.05a CALCULATOR 07/30/2007 13:24:31 PAGE 2
55 2 {
56 3 if(uc_ModeChange==2) //如果是状态一则看uc_ModeChange是不是2。
57 3 {
58 4 uc_ModeChange=0; //如果是2则计时器模式。
59 4 b_WorkMode=1;
60 4
61 4 uc_ReportSymbol=3; //闪烁显示:-CHAG-1。表明正在切换状态。
62 4 b_LCDClean=1;
63 4 }
64 3 else
65 3 {
66 4 uc_ModeChange++; //如果uc_ModeChange不是2则加一。
67 4 ul_NumberOne=0; //清除所有数据,将所有数据恢复到状态一。
68 4 ul_NumberTwo=0;
69 4 ul_Number=0;
70 4 uc_NumPointer=1;
71 4 }
72 3 }
73 2 else
74 2 {
75 3 ul_NumberOne=0; //清除所有数据,将所有数据恢复到状态一。
76 3 ul_NumberTwo=0;
77 3 ul_Number=0;
78 3 uc_NumPointer=1;
79 3 }
80 2 }
81 1 else
82 1 { //如果不是“NO/C”键,首先将uc_ModeChange清零。
83 2 uc_ModeChange=0;
84 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<根据不同状态分派不同的键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
85 2 switch(uc_NumPointer)
86 2 {
87 3 case 1:
88 3 vCalReadyOne(ucKeyCode); //进入状态一。
89 3 break;
90 3 case 2:
91 3 vCalReadyTwo(ucKeyCode); //进入状态二。
92 3 break;
93 3 case 3:
94 3 vCalReadyThree(ucKeyCode); //进入状态三。
95 3 break;
96 3
97 3 default:break;
98 3 }
99 2 }
100 1
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 94 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 1
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 + -