📄 shumaguan.lst
字号:
168 bit isdigit(unsigned char kvalue)
169 {
170 1 if(kvalue>='0'&&kvalue<='9')
171 1 return 1;
172 1 else
173 1 return 0;
174 1 }
175 /**********************************************************************
176 **函数功能:把数字的ASCII转换成整型 **
177 **参数:整型数 **
178 **返回:整型 **
179 **********************************************************************/
C51 COMPILER V8.02 SHUMAGUAN 10/17/2006 16:37:26 PAGE 4
180 unsigned char transition(unsigned char kvalue)
181 {
182 1 if(kvalue>='0'&&kvalue<='9')
183 1 return (kvalue-'0');
184 1 else
185 1 return 0;
186 1 }
187 /**********************************************************************
188 **函数功能:键盘扫描功能 **
189 **参数:无 **
190 **返回:返回键值 **
191 **********************************************************************/
192 unsigned char key_scan(void)
193 {
194 1 unsigned char line,row,temp,a,b,kvalue;
195 1 temp=0xfe;
196 1 flag=0;
197 1 P1=0xff;
198 1
199 1 for(line=0;line<5;line++) //进行行扫描
200 1 {
201 2 a=temp<<line;
202 2 b=temp>>(8-line);
203 2 P3=a|b;
204 2 kvalue=P1&0x0f;
205 2 if(kvalue!=0x0f) //去除键抖动
206 2 delay(100);
207 2 kvalue=P1&0x0f;
208 2 if(kvalue!=0x0f)
209 2 break;
210 2 }
211 1 while(P1!=0x0ff) //判断键弹起
212 1 {
213 2 }
214 1 if(kvalue==0x0e) //确定是第几列
215 1 row=0;
216 1 else
217 1 if(kvalue==0x0d)
218 1 row=1;
219 1 else
220 1 if(kvalue==0x0b)
221 1 row=2;
222 1 else
223 1 if(kvalue==0x07)
224 1 row=3;
225 1 else
226 1 return 0;
227 1 P3=0xff;
228 1
229 1 return keyvalue[line][row];
230 1 }
231
232 /**********************************************************************
233 **函数功能:在数码管上显示数据 **
234 **参数:整型数 **
235 **返回:无 **
236 **********************************************************************/
237 void display(int disnum)
238 {
239 1 int ge,shi,bai,qian,i,j;
240 1 int num[5]={0,0,0,0,10};
241 1 if(disnum<9999)
C51 COMPILER V8.02 SHUMAGUAN 10/17/2006 16:37:26 PAGE 5
242 1 {
243 2 ge=disnum%10;
244 2 shi=(disnum%100)/10;
245 2 bai=(disnum/100)%10;
246 2 qian=disnum/1000;
247 2 num[0]=ge;
248 2 num[1]=shi;
249 2 num[2]=bai;
250 2 num[3]=qian;
251 2 if(qian!=0)
252 2 {
253 3 for(i=0;i<4;i++)
254 3 {
255 4
256 4 P2=num_tab1[i]; //先送位码
257 4 P0=num_tab2[num[i]]; //再送段码
258 4 delay(1);
259 4 }
260 3 }
261 2 else
262 2 {
263 3 if(bai!=0)
264 3 {
265 4 for(i=0;i<3;i++)
266 4 {
267 5
268 5 P2=num_tab1[i];
269 5 P0=num_tab2[num[i]];
270 5 delay(1);
271 5 }
272 4 }
273 3 else
274 3 {
275 4 if(shi!=0)
276 4 {
277 5 for(i=0;i<2;i++)
278 5 {
279 6
280 6 P2=num_tab1[i];
281 6 P0=num_tab2[num[i]];
282 6 delay(1);
283 6 }
284 5 }
285 4 else
286 4 {
287 5 for(i=0;i<1;i++)
288 5 {
289 6 for(j=0;j<4;j++)
290 6 {
291 7 if(j==0)
292 7 {
293 8
294 8 P2=num_tab1[j];
295 8 P0=num_tab2[num[i]];
296 8 delay(1);
297 8 }
298 7 else
299 7 {
300 8
301 8 P2=num_tab1[j];
302 8 P0=num_tab2[num[4]];
303 8 delay(1);
C51 COMPILER V8.02 SHUMAGUAN 10/17/2006 16:37:26 PAGE 6
304 8 }
305 7 }
306 6 }
307 5 }
308 4 }
309 3 }
310 2 }
311 1 else
312 1 ;
313 1 }
314 /**********************************************************************
315 **函数功能:延时时间 **
316 **参数:整型数 **
317 **返回:无 **
318 **********************************************************************/
319 void delay(unsigned int time)
320 {
321 1 int i;
322 1 int k;
323 1 for(i=0;i<time;i++)
324 1 for(k=0;k<100;k++);
325 1 }
326
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 914 ----
CONSTANT SIZE = 56 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 33
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 + -