📄 main.lst
字号:
252 2 OSSemPend(KeySem,0,&lcnerr);
253 2 }
254 1 rectangle(SAD2,x-1,y,x+nu*8+8,y+16,0);
255 1 myprintf(SAD1,TA_LEFT,x+nu*8,y," ");
256 1 keystaut=0;
257 1 return(1);
258 1 }
259
260 //输入系统时间及网络信息
261 void setsysini() reentrant
262 {
263 1 unsigned char tem;
264 1
265 1 clssed(SAD1);
266 1 clssed(SAD2);
267 1 linex(SAD1,60,70,250);
268 1 linex(SAD1,80,70,250);
269 1 linex(SAD1,122,70,250);
270 1
271 1 liney(SAD1,70,60,122);
272 1 liney(SAD1,250,60,122);
273 1
274 1 myprintf(SAD1,TA_CENTER,160,62,"系统时钟设定");
275 1 myprintf(SAD1,TA_LEFT,90,85,"当前日期:");
276 1 myprintf(SAD1,TA_LEFT,90,104,"当前时间:");
277 1
278 1 readtimer(disstr,1);
279 1 myprintf(SAD1,TA_LEFT,165,85,disstr);
280 1 readtimer(disstr,0);
281 1 myprintf(SAD1,TA_LEFT,165,104,disstr);
282 1
283 1 rectangle(SAD2,90,83,160,101,1);
284 1 tem=0;
285 1 while(1)
286 1 {
287 2 OSSemPend(KeySem,0,&lcnerr);
288 2 if(key==INPUT)//输入键
289 2 {
290 3 switch(tem)
291 3 {
292 4 case 0:
293 4 if(gettimestr(165,84+tem*19,8,1))
294 4 settimer(disstr,1);
295 4 break;
296 4 case 1:
297 4 if(gettimestr(165,84+tem*19,8,0))
298 4 settimer(disstr,0);
299 4 break;
300 4 default:
301 4 break;
302 4 }
303 3 }
C51 COMPILER V8.08 MAIN 03/18/2008 13:49:06 PAGE 6
304 2 else
305 2 {
306 3 if(key==UP||key==DOWN)//上下方向键
307 3 {
308 4 if(key==DOWN)
309 4 {
310 5 rectangle(SAD2,90,83+tem*19,160,101+tem*19,0);
311 5 if(tem<1)
312 5 tem++;
313 5 else
314 5 tem=0;
315 5 rectangle(SAD2,90,83+tem*19,160,101+tem*19,1);
316 5 }
317 4 else
318 4 {
319 5 rectangle(SAD2,90,83+tem*19,160,101+tem*19,0);
320 5 if(tem>0)
321 5 tem--;
322 5 else
323 5 tem=1;
324 5 rectangle(SAD2,90,83+tem*19,160,101+tem*19,1);
325 5 }
326 4 }
327 3 else
328 3 {
329 4 if(key==ENTER)
330 4 {
331 5 return;
332 5 }
333 4 else
334 4 {
335 5 if(key==ESC)
336 5 return;
337 5 }
338 4 }
339 3 }
340 2 }
341 1 }
342 void showlogo() reentrant
343 {
344 1 unsigned char lcncount;
345 1 xdata union
346 1 {unsigned int add;
347 1 struct
348 1 {
349 1 unsigned char addhi;
350 1 unsigned char addlo;
351 1 }addhalf;
352 1 }curadd;
353 1 curadd.add=SAD3; aaa
354 1 LCDORDER=0X46; /*设置光标地址*/
*** WARNING C206 IN LINE 354 OF MAIN.C: 'aaa': missing function-prototype
*** ERROR C267 IN LINE 354 OF MAIN.C: 'aaa': requires ANSI-style prototype
355 1 LCDDATA=curadd.addhalf.addlo;
356 1 LCDDATA=curadd.addhalf.addhi;
357 1 LCDORDER=0X4C;
358 1 LCDORDER=0X42;
359 1 curadd.add=0;
360 1 while(curadd.add<sizeof(Bmp015))
361 1 {
362 2 if(Bmp015[curadd.add]==0)
363 2 {
C51 COMPILER V8.08 MAIN 03/18/2008 13:49:06 PAGE 7
364 3 curadd.add++;
365 3 lcncount=Bmp015[curadd.add];
366 3 while(lcncount)
367 3 {
368 4 LCDDATA=0;
369 4 lcncount--;
370 4 }
371 3 curadd.add++;
372 3 }
373 2 else
374 2 {
375 3 LCDDATA=Bmp015[curadd.add];
376 3 curadd.add++;
377 3 }
378 2 }
379 1 }
380 //系统初始化
381 void sys_init(void *lcnpdata) reentrant
382 {
383 1 unsigned char tem,tem1;
384 1
385 1 lcnpdata = lcnpdata;
386 1 ADNUMBER1 = 1;
387 1 ADNUMBER2 = 1;
388 1 ADNUMBER3 = 1;
389 1 //8279和SED1330初始化
390 1 COM8279=0xd1; //总清除命令160us
391 1 initlcd();
392 1 showlogo();
393 1 clssed(SAD1);
394 1 clssed(SAD2);
395 1 COM8279=0x08;
396 1 COM8279=0x32; //键盘,显示方式,时钟分频
397 1 initcount();
398 1 if(onpower!=0x55)
399 1 {
400 2 keytype=0;
401 2 onpower=0x55;
402 2 }
403 1
404 1
405 1 tem = 0x55;
406 1 for(tem1=0;tem1<10;tem1++)
407 1 {
408 2 Writei2c(&tem,tem1+160,1);
409 2 }
410 1 for(tem1=0;tem1<10;tem1++)
411 1 {
412 2 Readi2c(&tem,tem1+160,1);
413 2 if(tem != 0x55)
414 2 ok24c02 = 0;
415 2 }
416 1 //创建键盘信号量
417 1 KeySem=OSSemCreate(0);
418 1
419 1 tem=0x81;//1024
420 1 Writei2ctime(&tem,0x0D,0x01);
421 1
422 1 #if OS_TASK_STAT_EN
OSStatInit();
#endif
425 1 OSTaskCreate(mysecondtask, (void *)0, &mysecondtask_Stk[0],3);
C51 COMPILER V8.08 MAIN 03/18/2008 13:49:06 PAGE 8
426 1 OSTaskCreate(lcngetkey, (void *)0, &lcngetkey_Stk[0],4);
427 1 OSTaskCreate(gettesttype, (void *)0, &gettesttype_Stk[0],5);
428 1 init_serial();
429 1 //消除警告
430 1 OSVersion();
431 1 OSTaskDelReq(OS_PRIO_SELF);
432 1 //消除警告
433 1 OSTaskDel(OS_PRIO_SELF);
434 1 }
435
436 void gettesttype(void *lcnpdata) KCREETRANT
437 {
438 1 unsigned char lastselect = 0;
439 1 unsigned char tem = 0;
440 1
441 1 lcnpdata = lcnpdata;
442 1 clssed(SAD1);
443 1 clssed(SAD2);
444 1 linex(SAD1,39,48,270);
445 1 myprintf(SAD1,TA_CENTER,160,20,"通用板系统调试程序");
446 1 myprintf(SAD1,TA_CENTER,160,90, "用18键通用键盘");
447 1 myprintf(SAD1,TA_CENTER,160,120,"用20键通用键盘");
448 1 myprintf(SAD1,TA_CENTER,160,200,"唐山百川智能机器有限公司");
449 1 rectangle(SAD2,0,222,319,239,1);
450 1 readtimer(disstr,1);
451 1 myprintf(SAD1,TA_LEFT,186,223,disstr);
452 1 myprintf(SAD1,TA_LEFT,2,223,"按键选择键盘");
453 1 lastselect = keytype;
454 1 rectangle(SAD2,103,88+lastselect*30,217,108+lastselect*30,1);
455 1 LCDORDER=0X59;
456 1 LCDDATA=0X14;
457 1 while(1)
458 1 {
459 2 OSSemPend(KeySem,2,&lcnerr);
460 2 if(lcnerr==OS_NO_ERR)
461 2 {
462 3 rectangle(SAD2,103,88+lastselect*30,217,108+lastselect*30,0);
463 3 if(lastselect > 0)
464 3 {
465 4 keytype = 0;
466 4 lastselect = 0;
467 4 }
468 3 else
469 3 {
470 4 keytype = 1;
471 4 lastselect = 1;
472 4 }
473 3 rectangle(SAD2,103,88+lastselect*30,217,108+lastselect*30,1);
474 3 }
475 2 if(bSecond)
476 2 {
477 3 tem++;
478 3 if(tem > 4)
479 3 {
480 4 OSTaskCreate(main1test, (void *)0, &main1test_Stk[0],6);
481 4 OSTaskDel(OS_PRIO_SELF);
482 4 }
483 3 bSecond=0;
484 3 readtimer(disstr,0);
485 3 myprintf(SAD1,TA_LEFT,254,223,disstr);
486 3 }
487 2 }
C51 COMPILER V8.08 MAIN 03/18/2008 13:49:06 PAGE 9
488 1 }
489
490 void lcngetkey(void *lcnpdata) reentrant
491 {
492 1 unsigned char k;
493 1 unsigned char newkey = 1;
494 1 lcnpdata=lcnpdata;
495 1 while(1)
496 1 {
497 2 OSTimeDly(OS_TICKS_PER_SEC/10);
498 2 if(COM8279 & 0x0f)
499 2 {
500 3 if(newkey)
501 3 {
502 4 if(COM8279 & 0x0f)
503 4 {
504 5 COM8279=0x50; //读FIFO命令自动地址增量
505 5 k=DAT8279;
506 5 k=k&0x1f; //取键盘数据低5位(32位键盘模式)
507 5 if(keytype == 0)
508 5 {
509 6 key=keytab18[k+keystaut];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -