📄 shumaguan2.lst
字号:
109 **函数功能:键值处理函数(处理+.-.*./.=) **
110 **参数:字符型 **
111 **返回:整型 **
112 **********************************************************************/
113 unsigned int process(unsigned char kvalue)
114 {
115 1
116 1
117 1 if(isdigit(kvalue)) //如果是数字,求值
C51 COMPILER V8.02 SHUMAGUAN2 03/06/2009 00:27:45 PAGE 3
118 1 {
119 2 currentvalue=transition(kvalue)+currentvalue*10;
120 2 result=currentvalue;
121 2 }
122 1 else //如果是功能键
123 1 if(kvalue=='o') //如果是ON/C,清0
124 1 {
125 2 result=0;
126 2 currentvalue=0;
127 2 lastvalue=0;
128 2 }
129 1 else
130 1 if(kvalue=='+') //如果是“+”
131 1 { Lcd_Clear();
132 2 lastop=kvalue; //lastop保存操作码
133 2 lastvalue=currentvalue;//当前值成为上次值
134 2 result=currentvalue=0; //当前值清0
135 2 }
136 1 else if(kvalue=='-')
137 1 {
138 2 Lcd_Clear();
139 2 lastop=kvalue;
140 2 lastvalue=currentvalue;
141 2 result=currentvalue=0;
142 2 }
143 1 else if(kvalue=='*')
144 1 {
145 2 Lcd_Clear();
146 2 lastop=kvalue;
147 2 lastvalue=currentvalue;
148 2 result=currentvalue=0;
149 2 }
150 1 else if(kvalue=='/')
151 1 {
152 2 Lcd_Clear();
153 2 lastop=kvalue;
154 2 lastvalue=currentvalue;
155 2 result=currentvalue=0;
156 2 }
157 1
158 1 else if(kvalue=='=') //如果是“=”
159 1 {
160 2 Lcd_Clear();
161 2 switch(lastop) //判断操作码是什么
162 2 {
163 3 case '+':
164 3 {
165 4 result=result+lastvalue;
166 4 currentvalue=result;
167 4 break;
168 4 }
169 3 case '-':
170 3 {
171 4 result=lastvalue-currentvalue;
172 4 currentvalue=result;
173 4 break;
174 4 }
175 3 case '*':
176 3 {
177 4 result=currentvalue*lastvalue;
178 4 currentvalue=result;
179 4 break;
C51 COMPILER V8.02 SHUMAGUAN2 03/06/2009 00:27:45 PAGE 4
180 4 }
181 3 case '/':
182 3 {
183 4 result=lastvalue/currentvalue;
184 4 currentvalue=result;
185 4 break;
186 4 }
187 3 default:
188 3 break;
189 3 }
190 2 }
191 1 if(result>999999999)
192 1 {
193 2 result=0;
194 2 currentvalue=0;
195 2 }
196 1 return result;
197 1 }
198 /**********************************************************************
199 **函数功能:判断按键的键值是功能键还是数字键 **
200 **参数:整型数 **
201 **返回:BOOL型 **
202 **********************************************************************/
203 bit isdigit(unsigned char kvalue)
204 {
205 1 if(kvalue>='0'&&kvalue<='9')
206 1 return 1;
207 1 else
208 1 return 0;
209 1 }
210 /**********************************************************************
211 **函数功能:把数字的ASCII转换成整型 **
212 **参数:整型数 **
213 **返回:整型 **
214 **********************************************************************/
215 unsigned char transition(unsigned char kvalue)
216 {
217 1 if(kvalue>='0'&&kvalue<='9')
218 1 return (kvalue-'0');
219 1 else
220 1 return 0;
221 1 }
222 /******************************************************************************
223 * 函数名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -