C51 COMPILER V9.01 KEYSCAN 02/07/2025 10:36:15 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE KEYSCAN OBJECT MODULE PLACED IN .\output\KeyScan.obj COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\KeyScan.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\KeyScan.lst) OBJECT(.\output\Key -Scan.obj) line level source 1 /******************************************************************************** 2 Copyright (C), Sinowealth Electronic. Ltd. 3 Author: Sino 4 Version: V0.0 5 Date: 2020/04/26 6 History: 7 V2.0 2020/04/26 Preliminary 8 ********************************************************************************/ 9 #include "Main.h" 10 11 12 BOOL bKeyFlg; 13 U16 data uiKeyValidCnt; 14 U16 data uiKeyInvalidCnt; 15 U8 data ucKeyValue; 16 U8 data ucKeyOldValue; 17 U8 data ucKeyValueBK; 18 19 /************************************************************************************************* 20 * º¯ÊýÃû: ScanKey 21 * ²Î Êý: ÎÞ 22 * ·µ»ØÖµ: ÎÞ 23 * Ãè Êö: 1. ¶Ì°´Ê±£¬°´¼ü±ØÐ뵯Æðºó£¬²ÅÄÜʶ±ðΪ¶Ì°´°´¼ü¡£ 24 2. ³¤°´ºÍ³¤°´³ÖÐø£¬°´¼üÎÞÐ赯Æ𣬾ÍÄÜʶ±ðΪ³¤°´°´¼ü»ò³¤°´³ÖÐø¡£ 25 3. °´¼üÓÐÓÅÏȼ¶£¬¶à¸ö°´¼ü±»Í¬Ê±°´ÏÂʱ£¬½ö´¦ÀíµÚÒ»¸ö±»°´Ïµİ´¼ü¡£ 26 4.ͬһ¸ö°´¼üÒ»Ö±±»°´×Å£¬ÏÈ´¥·¢³¤°´£¬ºó´¥·¢³¤°´³ÖÐø£¬³¤°´ºÍ³¤°´³ÖÐø¶¼»á±»´¥·¢¡£ 27 5. bKeyFlg£ºµ±¼ì²âµ½ÓÐЧ°´¼üºó£¬ÖÃλ1 28 6. ucKeyValue£º¸ß4bit±íʾ°´¼ü״̬£¨¶Ì°´¡¢³¤°´¡¢³¤°´¼ÌÐø¡¢³¤°´½áÊø£©£»µÍ4bit±íʾ¼üÖµ 29 7. ucKeyValueBK ±£´æ°´¼ü״̬£ºÎÞ°´¼ü¡¢Óа´¼ü1¡¢Óа´¼ü2 30 8. uiKeyValidCnt °´¼ü°´ÏÂÂ˲¨¼ÆÊýÆ÷ 31 9. uiKeyInvalidCnt °´¼üµ¯ÆðÂ˲¨¼ÆÊýÆ÷ 32 *************************************************************************************************/ 33 void KeyScan(void) 34 { 35 1 if(!bKeyFlg) 36 1 { 37 2 ucKeyValueBK = KEYVAL_NULL; //ÏÈĬÈÏÎÞ°´¼ü°´Ï 38 2 39 2 #ifdef KEY_NUM1_DEF //1¸ö°´¼ü if(!KEY_1_IO_RD) { ucKeyValueBK = KEYVAL_1; } #endif 45 2 #ifdef KEY_NUM2_DEF //2¸ö°´¼ü 46 2 if(!KEY_1_IO_RD) 47 2 { 48 3 ucKeyValueBK = KEYVAL_1; //°´¼ü°´Ïº󣬻ñȡмüÖµ 49 3 } 50 2 else if(!KEY_2_IO_RD) 51 2 { 52 3 ucKeyValueBK = KEYVAL_2; //°´¼ü°´Ïº󣬻ñȡмüÖµ C51 COMPILER V9.01 KEYSCAN 02/07/2025 10:36:15 PAGE 2 53 3 } 54 2 #endif 55 2 #ifdef KEY_NUM3_DEF //3¸ö°´¼ü if(!KEY_1_IO_RD) { ucKeyValueBK = KEYVAL_1; } else if(!KEY_2_IO_RD) { ucKeyValueBK = KEYVAL_2; } else if(!KEY_3_IO_RD) { ucKeyValueBK = KEYVAL_3; } #endif 69 2 if(ucKeyValueBK != ucKeyOldValue) //ucKeyValueBKÖдæ·ÅÁËеļüÖµ£¬Èç¹ûмüÖµ¸ú -ÀϼüÖµ²»Í¬£¬ 70 2 { 71 3 uiKeyInvalidCnt++; //°´¼üµ¯ÆðÂ˲¨¼ÆÊýÆ÷£¬µ±°´¼üµÚÒ»´Î°´ÏÂʱ»áÇå0£¬ -µ±°´¼üµ¯Æðʱ»áÒ»Ö±¼ÆÊý 72 3 if(uiKeyValidCnt >= KEY_S_TIME) //°´¼ü°´ÏÂÂ˲¨¼ÆÊýÆ÷£¬µ±°´¼ü±»°´ÏºóÒ»Ö±¼ÆÊý£¬° -´¼üµ¯ÆðºóÍ£Ö¹¼ÆÊý 73 3 { //°´ÏÂÓÖµ¯ÆðÇÒδ´¥·¢³¤°´Ê±£¬Èç¹ûuiKeyValidCnt > -= KEY_S_TIME£¬Ôò¿ÉÄÜÊǶ̰´ 74 4 if(uiKeyInvalidCnt >= KEY_S_TIME) //°´¼üµ¯ÆðÂ˲¨¼ÆÊýÆ÷´ïµ½¶Ì°´Ïû¶¶Ê±¼ä£¬ÔòÈÏΪÊÇÒ»´Î -°´Ïº͵¯Æð¶¼Ïû¶¶¹ýµÄÓÐЧ°´¼ü 75 4 { 76 5 if(uiKeyValidCnt >= KEY_L_TIME) //ÔÚ´ËÇø·ÖÊǶ̰´£¬»¹Êdz¤°´½áÊø 77 5 { 78 6 ucKeyValue = ucKeyOldValue | KEY_STATE_LE; //°´ÏµÄʱ¼ä³¬¹ý³¤°´Ê±¼ä£¬ÈÏΪÊdz¤°´ÒѾ­½áÊøÁË¡£¸Ã״̬Ŀ -ǰδʹÓà 79 6 } 80 5 else 81 5 { 82 6 ucKeyValue = ucKeyOldValue | KEY_STATE_S; //°´ÏµÄʱ¼äûÓг¬¹ý³¤°´Ê±¼ä£¬ÈÏΪÊÇÒ»´ÎÓÐЧµÄ¶Ì°´°´¼ü 83 6 } 84 5 bKeyFlg = 1; //¶Ì°´ÓÐЧ£¬ÔÝÍ£°´¼ü¼ì²â£¬È¥´¦Àí°´¼üʼþ 85 5 goto scanend; 86 5 } 87 4 // else 88 4 // { 89 4 // uiKeyValidCnt++; //¸ÃÐÐÓ¦¸Ãɾµô£¬·ñÔòµ±KEY_S_TIMEµÈÓÚKEY_L_TIMEµÄÒ»° -ë¼°ÒÔÉÏʱ£¬»á°Ñ¶Ì°´Îóʶ±ðΪ³¤°´½áÊø¡£ 90 4 // } 91 4 } 92 3 else //ÿµ±°´¼ü°´ÏµÄʱ¼äÁ¬¶Ì°´Ïû¶¶Ê±¼ä¶¼²»¹»Ê±£¬ÈÏÎ -ªÊÇÎÞЧ°´¼ü£¬ÖØгõʼ»¯ 93 3 { 94 4 goto scanend; 95 4 } 96 3 } 97 2 else //ucKeyValueBKÖдæ·ÅÁËеļüÖµ£¬Ð¼üÖµ¸úÀϼü -ÖµÏàͬ£¬ËµÃ÷ÊÇͬһ¸ö°´¼ü¡£ 98 2 { 99 3 if(ucKeyValueBK != KEYVAL_NULL) //¼ÌÐø´¦Àí±»°´Ïµİ´¼ü 100 3 { 101 4 uiKeyInvalidCnt = 0; //Ç嵯Æð¼ÆÊýÆ÷ 102 4 uiKeyValidCnt++; //ÀÛ¼Ó°´Ï¼ÆÊýÆ÷ 103 4 if(uiKeyValidCnt == KEY_L_TIME) //µ±°´ÏÂʱ¼ä´ïµ½³¤°´Â˲¨Ê±¼äʱ£¬ÈÏΪ´Ë°´¼üΪ³¤°´¼ü 104 4 { 105 5 ucKeyValue = ucKeyOldValue | KEY_STATE_L; C51 COMPILER V9.01 KEYSCAN 02/07/2025 10:36:15 PAGE 3 106 5 bKeyFlg = 1; 107 5 } 108 4 else if(uiKeyValidCnt == KEY_LC_TIME) //µ±°´ÏÂʱ¼ä´ïµ½³¤°´³ÖÐøÂ˲¨Ê±¼äʱ£¬ÈÏΪ´Ë°´¼üΪ³¤ -°´³ÖÐø 109 4 { 110 5 uiKeyValidCnt = KEY_L_TIME; 111 5 ucKeyValue = ucKeyOldValue | KEY_STATE_LC; 112 5 bKeyFlg = 1; 113 5 } 114 4 } 115 3 else //мüÖµÊÇ¿Õ¼üÖµ£¬ËµÃ÷È«²¿°´¼ü¶¼ÊÍ·ÅÁË 116 3 { 117 4 ucKeyValue = KEYVAL_NULL; //È«²¿°´¼ü¶¼ÊÍ·ÅÁË£¬ÐèÒªÖØгõʼ»¯¼ì²â¼Ä´æÆ÷ 118 4 scanend: 119 4 uiKeyValidCnt = 0; 120 4 uiKeyInvalidCnt = 0; 121 4 ucKeyOldValue = ucKeyValueBK; 122 4 } 123 3 } 124 2 } 125 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 162 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 7 ---- IDATA SIZE = ---- ---- BIT SIZE = 1 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)