📄 calready.lst
字号:
126 2 case 21: vPushOne(4);break; //'4'
127 2 case 22: vPushOne(5);break; //'5'
128 2 case 23: vPushOne(6);break; //'6'
129 2 case 31: vPushOne(1);break; //'1'
130 2 case 32: vPushOne(2);break; //'2'
131 2 case 33: vPushOne(3);break; //'3'
132 2 case 42: vPushOne(0);b_Zero=1;break; //'0',当压入数字为0时,置0检测标志。
133 2
134 2 default:
135 2 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<此处的b_Zero判断主要是为了实现连续运算功能>>>>>>>>>>>>>>>>>>>>>>>>>>>>
136 2 if(b_Zero==0&&ul_NumberOne==0) //如果是运算符,则首先判断是否有0输入。
137 2 { //如果没有0输入,然而数字1是0,
138 3 ul_NumberOne=ul_Result; //说明是继续上一次运算,将上一次运算结束
139 3 switch(ucKeyCode) //赋给第一个数,进行连续运算。
140 3 {
141 4 case 14: uc_Operator=14;uc_NumPointer=2;break; //'/'
142 4 case 24: uc_Operator=24;uc_NumPointer=2;break; //*
143 4 case 34: uc_Operator=34;uc_NumPointer=2;break; //'-'
144 4 case 44: uc_Operator=44;uc_NumPointer=2;break; //'+'
145 4 default: break;
146 4 }
147 3 }
148 2 else
149 2 switch(ucKeyCode) //如果有0输入,则说明是全新计算,正常进行。
150 2 {
151 3 case 14: uc_Operator=14;uc_NumPointer=2;break; //'/'
152 3 case 24: uc_Operator=24;uc_NumPointer=2;break; //*
153 3 case 34: uc_Operator=34;uc_NumPointer=2;break; //'-'
154 3 case 44: uc_Operator=44;uc_NumPointer=2;break; //'+'
155 3 default: break;
156 3 }
157 2 break;
158 2 }
159 1 }
160
161 //*************************************************************************************************
162 //* *
163 //* *******************************状态二预处理****************************** *
164 //* *
165 //*************************************************************************************************
166
167 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<将1位数字压入第二个数字中>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
168 void vPushTwo(unsigned char ucPushNum)
169 {
170 1 if(ul_NumberTwo<100000) //如果数字小于6位则压入数字,否则不执行。
171 1 {
172 2 ul_NumberTwo=ul_NumberTwo*10+ucPushNum;
173 2 ul_Number=ul_NumberTwo;
174 2 }
175 1 }
176
177
178 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态二按键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
C51 COMPILER V8.05a CALREADY 07/30/2007 16:59:25 PAGE 4
179 void vCalReadyTwo(unsigned char ucKeyCode)
180 {
181 1 switch(ucKeyCode) //状态二下如果有数字输入则将数字压入数字二,转到状态三。
182 1 {
183 2 case 11: vPushTwo(7);uc_NumPointer=3;break; //'7'
184 2 case 12: vPushTwo(8);uc_NumPointer=3;break; //'8'
185 2 case 13: vPushTwo(9);uc_NumPointer=3;break; //'9'
186 2 case 21: vPushTwo(4);uc_NumPointer=3;break; //'4'
187 2 case 22: vPushTwo(5);uc_NumPointer=3;break; //'5'
188 2 case 23: vPushTwo(6);uc_NumPointer=3;break; //'6'
189 2 case 31: vPushTwo(1);uc_NumPointer=3;break; //'1'
190 2 case 32: vPushTwo(2);uc_NumPointer=3;break; //'2'
191 2 case 33: vPushTwo(3);uc_NumPointer=3;break; //'3'
192 2 case 42: vPushTwo(0);uc_NumPointer=3;break; //'0'
193 2
194 2 //如果有运算符输入则将运算符键码存储在uc_Operator中。
195 2 case 14: uc_Operator=14;break; //'/'
196 2 case 24: uc_Operator=24;break; //*
197 2 case 34: uc_Operator=34;break; //'-'
198 2 case 44: uc_Operator=44;break; //'+'
199 2 default: break;
200 2 }
201 1 }
202
203 //*************************************************************************************************
204 //* *
205 //* *******************************状态三预处理****************************** *
206 //* *
207 //*************************************************************************************************
208
209 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态三继续运算函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
210 void vCalContinue(unsigned char ucKeyCode)
211 {
212 1 vGetResult();
213 1 ul_NumberOne=ul_Result;
214 1 uc_Operator=ucKeyCode;
215 1 uc_NumPointer=2;
216 1 }
217
218 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态三按键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
219 void vCalReadyThree(unsigned char ucKeyCode)
220 {
221 1 switch(ucKeyCode)
222 1 { //状态三下如果有数字输入,则压入数字二。
223 2 case 11: vPushTwo(7);break; //'7'
224 2 case 12: vPushTwo(8);break; //'8'
225 2 case 13: vPushTwo(9);break; //'9'
226 2 case 21: vPushTwo(4);break; //'4'
227 2 case 22: vPushTwo(5);break; //'5'
228 2 case 23: vPushTwo(6);break; //'6'
229 2 case 31: vPushTwo(1);break; //'1'
230 2 case 32: vPushTwo(2);break; //'2'
231 2 case 33: vPushTwo(3);break; //'3'
232 2 case 42: vPushTwo(0);break; //'0'
233 2
234 2 //如果有“=”号输入则计算结果。
235 2 case 43: vGetResult();break; //'='
236 2 //如果有运算符输入则执行继续运算。
237 2 case 14: vCalContinue(14);break; //'/'
238 2 case 24: vCalContinue(24);break; //*
239 2 case 34: vCalContinue(34);break; //'-'
240 2 case 44: vCalContinue(44);break; //'+'
C51 COMPILER V8.05a CALREADY 07/30/2007 16:59:25 PAGE 5
241 2
242 2 default: break;
243 2 }
244 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 905 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -