C51 COMPILER V9.01 MCULIB 02/08/2025 15:18:20 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE MCULIB OBJECT MODULE PLACED IN .\output\McuLib.obj COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\McuLib.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load -.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\cod -e_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\McuLib.lst) OBJECT(.\output\McuLi -b.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 13 /************************************************************************************************* 14 * º¯ÊýÃû: McuTimer3Set 15 * ²Î Êý: ClkSource: ¶¨Ê±Æ÷µÄ»ù×¼Ô´£¨·Ö±ðΪ32KHz£¬128KHz£¬24MHzµÄϵͳʱÖÓ£© 16 XmS£¬¶¨Ê±Æ÷ÖÜÆÚ£¨µ±ÖÜÆÚСÓÚ1000mSʱ£¬¿ÉÑ¡ÔñÒÔÉÏÈý¸öʱÖÓ£»µ±ÖÜÆÚ´óÓÚ1000mSʱ£¬Ö»ÄÜÑ¡Ôñ32KHzºÍ128K -Hz£© 17 * ·µ»ØÖµ: ÎÞ 18 * Ãè Êö: ³õʼ»¯Timer3¶¨Ê±Æ÷£¬²¢¿ªÆô¶¨Ê±Æ÷ 19 *************************************************************************************************/ 20 void McuTimer3Set(U8 ClkSource, U16 XmS) 21 { 22 1 U16 TempVal; 23 1 24 1 McuBank1Sel(); 25 1 26 1 // if(ClkSource == TIM_CLK_32KHz) 27 1 // { 28 1 // if(XmS < 1000) 29 1 // { 30 1 // T3CON = 0x02; //Íⲿ32.768kHzΪʱÖÓÔ´£¬1·ÖƵ£¬×î´ó2S 31 1 // TempVal = (U32)0x10000 - (U32)32.768*XmS; 32 1 // } 33 1 // else 34 1 // { 35 1 // T3CON = 0x22; //Íⲿ32.768kHzΪʱÖÓÔ´£¬64·ÖƵ£¬×î´ó128s 36 1 // TempVal = 0x10000 - (U32)32.768*XmS/64; 37 1 // } 38 1 // } 39 1 // else if(ClkSource == TIM_CLK_128KHz) 40 1 // { 41 1 // if(XmS < 4000) 42 1 // { 43 1 // T3CON = 0x12; //Íⲿ128kHzΪʱÖÓÔ´£¬8·ÖƵ£¬×î´ó4.096S 44 1 // TempVal = 0x10000 - (U32)128*XmS/8; 45 1 // } 46 1 // else 47 1 // { 48 1 // T3CON = 0x32; //Íⲿ128kHzΪʱÖÓÔ´£¬256·ÖƵ£¬×î´ó131.072S 49 1 // TempVal = 0x10000 - (U32)128*XmS/256; 50 1 // } 51 1 // } C51 COMPILER V9.01 MCULIB 02/08/2025 15:18:20 PAGE 2 52 1 // else if(ClkSource == TIM_CLK_24MHz) 53 1 // { 54 1 // if(XmS < 500) 55 1 // { 56 1 // T3CON = 0x30; //ϵͳ24MHzΪʱÖÓÔ´£¬256·ÖƵ£¬×î´ó669.5ms 57 1 // TempVal = 0x10000 - (U32)24000*XmS/256; 58 1 // } 59 1 // else 60 1 // { 61 1 // T3CON = 0x32; //Íⲿ128kHzΪʱÖÓÔ´£¬256·ÖƵ£¬×î´ó131.072S 62 1 // TempVal = 0x10000 - (U32)128*XmS/256; 63 1 // } 64 1 // } 65 1 66 1 //8MHz¾§Õñ 67 1 T3CON = 0x30; //ϵͳ8MHzΪʱÖÓÔ´£¬256·ÖƵ£¬×î´ó669.5ms 68 1 TempVal = 0x10000 - (U32)8000*XmS/256; 69 1 70 1 TL3 = TempVal; 71 1 TH3 = TempVal>>8; 72 1 TR3 = 1; //Æô¶¯¶¨Ê±Æ÷3 73 1 74 1 McuBank0Sel(); 75 1 } *** WARNING C280 IN LINE 20 OF CODE_DRV\MCULIB.C: 'ClkSource': unreferenced local variable 76 77 78 /************************************************************************************************* 79 * º¯ÊýÃû: McuClockSet 80 * ²Î Êý: SysClock£ºµ±Ç°ËùÐèÉèÖõÄϵͳʱÖÓ 81 * ·µ»ØÖµ: ÎÞ 82 * Ãè Êö: ³õʼ»¯AFE 83 *************************************************************************************************/ 84 void McuClockSet(U8 SysClock) 85 { 86 1 U8 ea; 87 1 88 1 ea = EA; 89 1 EA = 0; 90 1 91 1 CLKCON |= 0x08; //SETB HFON 92 1 93 1 _nop_(); 94 1 _nop_(); 95 1 _nop_(); 96 1 _nop_(); 97 1 _nop_(); 98 1 _nop_(); 99 1 _nop_(); 100 1 _nop_(); 101 1 102 1 CLKCON &= 0x60; 103 1 104 1 CLKCON |= 0x04; //SETB FS, SYSCLK=24M 105 1 106 1 EA = ea; 107 1 } *** WARNING C280 IN LINE 84 OF CODE_DRV\MCULIB.C: 'SysClock': unreferenced local variable 108 109 110 /************************************************************************************************* 111 * º¯ÊýÃû: McuPWM0Set¡¢McuPWM1Set¡¢McuPWM2Set C51 COMPILER V9.01 MCULIB 02/08/2025 15:18:20 PAGE 3 112 * ²Î Êý: PwmFreq£ºPWMµÄƵÂÊHz£»DutyRatio£ºPWMµÄ¸ßµçƽռ¿Õ±È 113 * ·µ»ØÖµ: ÎÞ 114 * Ãè Êö: ³õʼ»¯AFE 115 *************************************************************************************************/ 116 void McuPWM0Set(U16 PwmFreq, U8 DutyRatio) 117 { 118 1 PWM0CON = 0xb0; //ϵͳʱÖÓ/64 119 1 PWM0PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); 120 1 PWM0PH = (375000/PwmFreq) >> 8; 121 1 PWM0DL = (U16)(PWM0PL+PWM0PH*256)*DutyRatio/100; 122 1 PWM0DH = ((U16)(PWM0PL+PWM0PH*256)*DutyRatio/100) >> 8; 123 1 } 124 125 void McuPWM1Set(U16 PwmFreq, U8 DutyRatio) 126 { 127 1 PWM1CON = 0xb0; //ϵͳʱÖÓ/64 128 1 PWM1PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); 129 1 PWM1PH = (375000/PwmFreq) >> 8; 130 1 PWM1DL = (U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100; 131 1 PWM1DH = ((U16)(PWM1PL+(U16)PWM1PH*256)*DutyRatio/100) >> 8; 132 1 } 133 134 void McuPWM2Set(U16 PwmFreq, U8 DutyRatio) 135 { 136 1 PWM2CON = 0xb0; //ϵͳʱÖÓ/64 137 1 PWM2PL = 375000/PwmFreq; //PWM2P=24000000/(64*E2uiDSG1PWMFreq); 138 1 PWM2PH = (375000/PwmFreq) >> 8; 139 1 PWM2DL = (U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100; 140 1 PWM2DH = ((U16)(PWM2PL+(U16)PWM2PH*256)*DutyRatio/100) >> 8; 141 1 } 142 143 144 /************************************************************************************************* 145 * º¯ÊýÃû: Delay1ms 146 * ²Î Êý: Xms£ºÑÓ³Ù¶àÉÙmS 147 * ·µ»ØÖµ: ÎÞ 148 * Ãè Êö: ÑÓʱº¯Êý£¬µ¥Î»Îª1mS 149 Ìرð×¢Òâ¸Ãº¯ÊýµÄÑÓʱ׼ȷÐÔÎÊÌ⣬ÔÚ²»Í¬ÓÅ»¯µÈ¼¶Ê±£¬·´»ã±à²»Í¬Ôì³ÉÑÓʱ²»Ò»Ö£¬Êµ²âÈçÏ£º 150 1.µ±ÅäÖÃÑ¡ÏîÀïµÄ´úÂëÓÅ»¯µÈ¼¶ÉèÖÃΪ3ʱ£¬j=1670£¬Èô½ûÖ¹ËùÓÐÖжϣ¬Ôòʵ¼ÊÑÓʱΪ3.484ms£¬²»½ûÖ¹ÖжÏÔòÊÜÖжÏÓ°Ïì -£¬´ïµ½3.804ms 151 2.µ±ÅäÖÃÑ¡ÏîÀïµÄ´úÂëÓÅ»¯µÈ¼¶ÉèÖÃΪ3ʱ£¬j=480£¬Èô½ûÖ¹ËùÓÐÖжϣ¬Ôòʵ¼ÊÑÓʱΪ1.010ms£¬²»½ûÖ¹ÖжÏÔòÊÜÖжÏÓ°Ïì£ -¬´ïµ½1.104ms 152 3.µ±ÅäÖÃÑ¡ÏîÀïµÄ´úÂëÓÅ»¯µÈ¼¶ÉèÖÃΪ7ʱ£¬j=1670£¬Èô½ûÖ¹ËùÓÐÖжϣ¬Ôòʵ¼ÊÑÓʱΪ1.002ms£¬²»½ûÖ¹ÖжÏÔòÊÜÖжÏÓ°Ïì -£¬´ïµ½1.090ms 153 *************************************************************************************************/ 154 void Delay1ms(U8 Xms) 155 { 156 1 U8 i; 157 1 U16 j, Tcnt; 158 1 159 1 if((CLKCON&0x70) == MCU_CLK_24MHz) 160 1 { 161 2 Tcnt = 1670; 162 2 } 163 1 else if((CLKCON&0x70) == MCU_CLK_12MHz) 164 1 { 165 2 Tcnt = 1670/2; 166 2 } 167 1 else if((CLKCON&0x70) == MCU_CLK_6MHz) 168 1 { 169 2 Tcnt = 1670/4; 170 2 } C51 COMPILER V9.01 MCULIB 02/08/2025 15:18:20 PAGE 4 171 1 else //2MHz 172 1 { 173 2 Tcnt = 1670/12; 174 2 } 175 1 176 1 177 1 for(i=0; i