📄 calready.lst
字号:
C51 COMPILER V8.05a CALREADY 07/30/2007 16:59:25 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CALREADY
OBJECT MODULE PLACED IN CalReady.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\CalReady.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\CalR
-eady.lst) OBJECT(CalReady.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:计算器案件初始处理及运算。 **
4 //**<功能>:在计算器模式下,对按键进行响应,如清零,计算结果等。 **
5 //**<错误代码>:-EOR-1:被除数等于0; **
6 //** -EOR-2:被减数小于减数; **
7 //** -EOR-9:超出可显示的最大值。 **
8 //*************************************************************************************************
9 //*************************************************************************************************
10
11
12 //*************************************************************************************************
13 //* *
14 //* ******************************头文件及宏定义************************** *
15 //* *
16 //*************************************************************************************************
17
18
19 //*************************************************************************************************
20 //* *
21 //* ********************************全局变量****************************** *
22 //* *
23 //*************************************************************************************************
24 extern unsigned long ul_Number;
25 extern unsigned long ul_NumberOne;
26 extern unsigned long ul_NumberTwo;
27 extern unsigned char uc_Operator;
28 extern unsigned long ul_Result;
29 extern unsigned char uc_NumPointer;
30 extern bit b_LCDClean;
31 extern unsigned char uc_ReportSymbol;
32
33 bit b_Zero=0; //状态一0输入检测,若有0输入则置一。
34
35
36 //*************************************************************************************************
37 //* *
38 //* *******************************计算结果****************************** *
39 //* *
40 //*************************************************************************************************
41 void vGetResult()
42 {
43 1 switch(uc_Operator)
44 1 {
45 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<除法运算 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
46 2 case 14:
47 2 if(ul_NumberTwo!=0)
48 2 ul_Result=ul_NumberOne/ul_NumberTwo;
49 2 else
50 2 {
51 3 ul_Result=0;
52 3 uc_ReportSymbol=1; //当被除数等于0时显示错误代码EOR-1
53 3 b_LCDClean=1;
54 3 }
C51 COMPILER V8.05a CALREADY 07/30/2007 16:59:25 PAGE 2
55 2 break;
56 2
57 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<乘法运算>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
58 2 case 24:
59 2 if((ul_NumberOne*ul_NumberTwo)>999999)
60 2 {
61 3 ul_Result=0;
62 3 uc_ReportSymbol=9;
63 3 b_LCDClean=1; //当结果超出显示范围时显示错误代码EOR-9
64 3 }
65 2 else
66 2 ul_Result=ul_NumberOne*ul_NumberTwo;
67 2 break;
68 2
69 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<减法运算>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
70 2 case 34:
71 2 if(ul_NumberOne>ul_NumberTwo)
72 2 ul_Result=ul_NumberOne-ul_NumberTwo;
73 2 else
74 2 {
75 3 ul_Result=0;
76 3 uc_ReportSymbol=2; //当被减数小于减数时显示错误代码EOR-2
77 3 b_LCDClean=1;
78 3 }
79 2 break;
80 2
81 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<加法运算>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
82 2 case 44:
83 2 if((ul_NumberOne+ul_NumberTwo)>999999)
84 2 {
85 3 ul_Result=0;
86 3 uc_ReportSymbol=9;
87 3 b_LCDClean=1; //当结果超出显示范围时显示错误代码EOR-9
88 3 }
89 2 else ul_Result=ul_NumberOne+ul_NumberTwo;
90 2 break;
91 2
92 2 default:break;
93 2 }
94 1 ul_Number=ul_Result;
95 1 ul_NumberOne=0; //恢复计算前初始状态。
96 1 ul_NumberTwo=0;
97 1 uc_NumPointer=1;
98 1 b_Zero=0;
99 1 }
100
101
102 //*************************************************************************************************
103 //* *
104 //* *******************************状态一预处理****************************** *
105 //* *
106 //*************************************************************************************************
107
108 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<将1位数字压入第一个数字中>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
109 void vPushOne(unsigned char ucPushNum)
110 {
111 1 if(ul_NumberOne<100000) //如果数字小于6位则压入数字,否则不执行。
112 1 {
113 2 ul_NumberOne=ul_NumberOne*10+ucPushNum;
114 2 ul_Number=ul_NumberOne;
115 2 }
116 1 }
C51 COMPILER V8.05a CALREADY 07/30/2007 16:59:25 PAGE 3
117
118 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态一按键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
119 void vCalReadyOne(unsigned char ucKeyCode)
120 {
121 1 switch(ucKeyCode)
122 1 { //如果由数字输入,则压入数字一。
123 2 case 11: vPushOne(7);break; //'7'
124 2 case 12: vPushOne(8);break; //'8'
125 2 case 13: vPushOne(9);break; //'9'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -