📄 display.lst
字号:
259 4 /* left */
260 4 coled[i]=L_dot_ledtable[cobcd.ledbuf[i]];
261 4 }
262 3 }
263 2 return;
264 2 }
265 1
266 1 }
267 /**
268 *when key pressing,it will invoke this function to add a
269 *key value to display buffer.
270 */
271 void addKyeValHexBuf(UINT8 keyVal )
272 {
273 1 UINT8 len = 0;
274 1 sreensaveclk = 0;
275 1 SparkLights( LIGHT_PAY );
276 1 len = LedsShowStr.length ;
277 1 if(0x0==len){
278 2 if( 0x0 == keyVal ){
279 3 /*press 0 first*/
280 3
281 3 LedsShowStr.length = 0x1;
282 3 LedsShowStr.isdot = 0x0;
283 3 LedsShowStr.dotposition = LED_MAX_NUM-1;
284 3 /*in order to show single 0 */
285 3 Enter_Critical_OS();
286 3 event_word |= EVENT_LED_DOWN_UPDATE;
287 3 Exit_Critical_OS();
288 3 return;
289 3 }
290 2 if(0x0a == keyVal ){
291 3 /* press . first */
292 3 LedsShowStr.length = 0x1;
293 3 LedsShowStr.isdot = 0x1;
294 3 LedsShowStr.dotposition = LED_MAX_NUM-1;
295 3 Enter_Critical_OS();
296 3 event_word |= EVENT_LED_DOWN_UPDATE;
297 3 Exit_Critical_OS();
298 3 return;
299 3
300 3 }
301 2
302 2 }
303 1 if( LedsShowStr.length == 0x1 && LedsShowStr.isdot==0 && 0==LedsShowStr.ledbuf[7] ){
C51 COMPILER V7.07 DISPLAY 11/25/2005 20:22:00 PAGE 6
304 2 if(0xa!=keyVal)
305 2 return;
306 2 }
307 1 /* cant be 0.0xxxx */
308 1 if( LedsShowStr.length == 0x1 && LedsShowStr.isdot==1 && 0==LedsShowStr.ledbuf[7] ){
309 2 if(0x0==keyVal)
310 2 return;
311 2 }
312 1 if((LED_MAX_NUM-1 - LedsShowStr.dotposition) >= 2) return;
313 1 if( len > 3 ) return; /* void overflood buf */
314 1 if( keyVal>=0 && keyVal<= 0x9 ){/* val is correct */
315 2 MoveOneByte(&LedsShowStr.ledbuf[0],0);/* left move */
316 2 LedsShowStr.ledbuf[LED_MAX_NUM-1]= keyVal;
317 2 LedsShowStr.length ++;
318 2
319 2 if(0x1 == LedsShowStr.isdot ){
320 3 LedsShowStr.dotposition--;//move dot ahead one byte
321 3 }
322 2
323 2 }
324 1 else if( keyVal == 0xa && 0x0==LedsShowStr.isdot ){ /* dot coming */
325 2 LedsShowStr.isdot = 1;
326 2 LedsShowStr.dotposition = LED_MAX_NUM-1 ;
327 2 }
328 1 /* laungh event */
329 1 Enter_Critical_OS();
330 1 event_word |= EVENT_LED_DOWN_UPDATE;
331 1 Exit_Critical_OS();
332 1 /*light L1*/
333 1
334 1
335 1 }
336
337 void UpateDownLeds()
338 {
339 1
340 1 UINT8 idata ledupdatetbuf[LED_MAX_NUM];
341 1 TranslateLedCode(LedsShowStr , ledupdatetbuf , 1);/* with mode 1 */
342 1 LedMultiByteDisplay(ledupdatetbuf , POSITION_DOWN );
343 1
344 1
345 1 }
346 void UpateLeds(bit ud)
347 {
348 1 UINT8 idata ledupdatetbuf[LED_MAX_NUM];
349 1 TranslateLedCode(LedsShowStr , ledupdatetbuf , 1);/* with mode 1 */
350 1 LedMultiByteDisplay(ledupdatetbuf , ud );
351 1 }
352 /*
353 direction : 0-left / 1- right
354 */
355 void MoveOneByte(UINT8 * buf ,UINT8 direction )
356 {
357 1 UINT8 i;
358 1 if( 0x0 == direction ){//if_1
359 2 for(i = 0;i< LED_MAX_NUM - 1 ;i++)
360 2 {
361 3 buf[i]=buf[i+1];
362 3 }
363 2 buf[i] = 0x0;
364 2 }//if _1
365 1 else if(0x1 == direction ){//if_2
C51 COMPILER V7.07 DISPLAY 11/25/2005 20:22:00 PAGE 7
366 2 for(i = LED_MAX_NUM-1 ;i>0;i--)
367 2 {
368 3 buf[i]=buf[i-1];
369 3 }
370 2 buf[i]=0x0;
371 2 }//if_2
372 1
373 1
374 1 }
375 void clearallleds( void )
376 {
377 1 /*reset ledshowstr */
378 1 RESETLEDSHOWSTR();
379 1 SparkLights ( 0x0 );
380 1 Enter_Critical_OS();
381 1 event_word |= EVENT_LED_DOWN_UPDATE;
382 1 Exit_Critical_OS();
383 1 }
384
385 void backspace(void )
386 {
387 1
388 1 if( LedsShowStr.length > 0 )
389 1 {
390 2 if( 0x1 == LedsShowStr.isdot){
391 3 LedsShowStr.dotposition ++;
392 3 if( LedsShowStr.dotposition >LED_MAX_NUM-1 )
393 3 LedsShowStr.isdot = 0;
394 3 }
395 2
396 2 MoveOneByte(&LedsShowStr.ledbuf[0],1);/// right move
397 2 LedsShowStr.length --;
398 2 if(0==LedsShowStr.length){
399 3 RESETLEDSHOWSTR();
400 3 }
401 2 Enter_Critical_OS();
402 2 event_word |= EVENT_LED_DOWN_UPDATE;
403 2 Exit_Critical_OS();
404 2
405 2 }
406 1 }
407 /* + --- - - - - - - - - - - - - - - - - - - - - - - - - - +
408 | | length | cmd | data | crc |
409 | 8bits | 8bits | 8bits | 32bits | 8bits |
410 */
411 void enter( void )
412 {
413 1 i2cbuf[0] = 0x6; /* length */
414 1 i2cbuf[1] = 0x0;
415 1 i2cbuf[2] = 0x0;
416 1 i2cbuf[4] = LedsShowStr.ledbuf[LedsShowStr.dotposition]|(LedsShowStr.ledbuf[LedsShowStr.dotposition-1]<<4
-);
417 1 i2cbuf[3] = LedsShowStr.ledbuf[LedsShowStr.dotposition-2]|(LedsShowStr.ledbuf[LedsShowStr.dotposition-3]<
-<4);
418 1 if(0x7==LedsShowStr.dotposition)
419 1 i2cbuf[5] = 0x0;
420 1 else if(0x6==LedsShowStr.dotposition)
421 1 i2cbuf[5] = LedsShowStr.ledbuf[LedsShowStr.dotposition+1]<<4;
422 1 else
423 1 i2cbuf[5] = (LedsShowStr.ledbuf[LedsShowStr.dotposition+1]<<4)|LedsShowStr.ledbuf[LedsShowStr.dotposit
-ion+2];
424 1 i2cbuf[6]=i2cbuf[0]+i2cbuf[1]+i2cbuf[2]+i2cbuf[3]+i2cbuf[4]+i2cbuf[5];
C51 COMPILER V7.07 DISPLAY 11/25/2005 20:22:00 PAGE 8
425 1 i2cbuf[6]=~i2cbuf[6];
426 1 /*lunch event */
427 1 Enter_Critical_OS();
428 1 event_word |= EVENT_I2C_DATA_SEND;
429 1 Exit_Critical_OS();
430 1 RESETLEDSHOWSTR();
431 1 }
432
433
434 /*
435
436 */
437 void SparkLights(UINT8 state )
438 {
439 1 if( state & 0x01 ) L5= 0;
440 1 else L5= 1;
441 1 if( state & 0x02 ) L4= 0;
442 1 else L4 =1;
443 1 if( state & 0x04 ) L3= 0;
444 1 else L3 =1;
445 1 if( state & 0x08 ) L2= 0;
446 1 else L2 =1;
447 1 if( state & 0x10 ) L1= 0;
448 1 else L1 =1;
449 1 if( state & 0x20 ) L0= 0;
450 1 else L0 =1;
451 1 }
452 void error(UINT8 e )
453 {
454 1 UINT8 idata ledupdatetbuf[LED_MAX_NUM];
455 1 switch (e)
456 1 {
457 2 case 0x0c: LedsShowStr.length = 3;
458 2 LedsShowStr.isdot = 0;
459 2 LedsShowStr.dotposition = 7;
460 2 LedsShowStr.ledbuf[5]= 12;
461 2 LedsShowStr.ledbuf[6]= 0x0;
462 2 LedsShowStr.ledbuf[7]= 11;
463 2 TranslateLedCode(LedsShowStr , ledupdatetbuf , 1);/* with mode 1 */
464 2 LedMultiByteDisplay(ledupdatetbuf , POSITION_DOWN );
465 2 RESETLEDSHOWSTR();
466 2
467 2 break;
468 2 }
469 1 }
470 /*
471 *When no events happen,system will start screen save
472 */
473 void CheckSreenSave(void)
474 {
475 1 if( sreensaveclk >=10000 ){
476 2 event_word |= EVENT_SCREEN_SAVE;
477 2 scrflag = 1;/* start screen save */
478 2 }
479 1 }
480 /*
481 *this function will show stuff in scrsavebuf buffer.
482 */
483 void SaveSreen()
484 {
485 1 UINT16 i;
486 1 UINT8 ledshowcode[LED_MAX_NUM];
C51 COMPILER V7.07 DISPLAY 11/25/2005 20:22:00 PAGE 9
487 1 sreensaveclk = 0;
488 1 LedsShowStr.length = 8;
489 1 LedsShowStr.isdot = 0;
490 1 LedsShowStr.dotposition = 7;
491 1 scrindex = 0;
492 1 SparkLights ( 0x0 );
493 1 while( scrflag )
494 1 {
495 2 ClearDownLeds();
496 2 ClearUpLeds();
497 2 memcpy(&LedsShowStr.ledbuf[0],scrsavebuf+scrindex ,LED_MAX_NUM );
498 2 scrindex=( scrindex + 1 ) % 13 ;
499 2 TranslateLedCode(LedsShowStr , ledshowcode , 1);/* with mode 1 */
500 2 LedMultiByteDisplay( ledshowcode , POSITION_DOWN );
501 2 // wait(100);
502 2 for(i=0;i<65530;i++);
503 2 }
504 1 clearallleds();
505 1
506 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1412 ----
CONSTANT SIZE = 105 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 42
IDATA SIZE = ---- 24
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 + -