diff --git a/.vscode/keil-assistant.log b/.vscode/keil-assistant.log index be2a400..adcf955 100644 --- a/.vscode/keil-assistant.log +++ b/.vscode/keil-assistant.log @@ -6,3 +6,13 @@ [info] Log at : 2023/4/10|15:46:58|GMT+0800 +[info] Log at : 2023/4/10|17:13:31|GMT+0800 + +[info] Log at : 2023/4/10|17:24:54|GMT+0800 + +[info] Log at : 2023/4/10|17:35:57|GMT+0800 + +[info] Log at : 2023/4/11|08:33:52|GMT+0800 + +[info] Log at : 2023/4/11|08:44:08|GMT+0800 + diff --git a/.vscode/settings.json b/.vscode/settings.json index 26f6d05..c8d9b38 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,8 @@ "timer.h": "c", "exti.h": "c", "gpio.h": "c", - "config.h": "c" + "config.h": "c", + "PWM.C": "cpp", + "pwm.h": "c" } } \ No newline at end of file diff --git a/.vscode/uv4.log b/.vscode/uv4.log index 7c98c7b..1ea88a3 100644 --- a/.vscode/uv4.log +++ b/.vscode/uv4.log @@ -1,10 +1,8 @@ Build target 'Target 1' -compiling Exti.c... -compiling GPIO.c... -compiling main.c... compiling timer.c... +compiling PWM.C... linking... -Program Size: data=18.0 xdata=0 code=2183 +Program Size: data=79.0 xdata=0 code=3749 creating hex file from ".\Objects\kill_control"... ".\Objects\kill_control" - 0 Error(s), 0 Warning(s). Build Time Elapsed: 00:00:00 diff --git a/.vscode/uv4.log.lock b/.vscode/uv4.log.lock index 85095db..ca8800d 100644 --- a/.vscode/uv4.log.lock +++ b/.vscode/uv4.log.lock @@ -1 +1 @@ -2023/4/10 15:47:04 \ No newline at end of file +2023/4/11 8:44:51 \ No newline at end of file diff --git a/Listings/Exti.lst b/Listings/Exti.lst index d21a1f4..f95f5ea 100644 --- a/Listings/Exti.lst +++ b/Listings/Exti.lst @@ -1,4 +1,4 @@ -C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 1 +C51 COMPILER V9.60.0.0 EXTI 04/10/2023 17:45:08 PAGE 1 C51 COMPILER V9.60.0.0, COMPILATION OF MODULE EXTI @@ -62,7 +62,7 @@ line level source 52 void Ext_INT3(void) interrupt INT3_VECTOR 53 { 54 1 } - C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 2 + C51 COMPILER V9.60.0.0 EXTI 04/10/2023 17:45:08 PAGE 2 55 56 /********************* INT4ÖжϺ¯Êý *************************/ @@ -126,7 +126,7 @@ line level source 112 2 INT_CLKO &= ~(1 << 4); // ½ûÖ¹ÖÐ¶Ï 113 2 return 0; // ³É¹¦ 114 2 } - C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 3 + C51 COMPILER V9.60.0.0 EXTI 04/10/2023 17:45:08 PAGE 3 115 1 116 1 if (EXT == EXT_INT3) // ÍâÖжÏ3, ¹Ì¶¨ÎªÏ½µÑصÍÓÅÏȼ¶ÖÐ¶Ï diff --git a/Listings/GPIO.lst b/Listings/GPIO.lst index 37fa8d2..88a0b20 100644 --- a/Listings/GPIO.lst +++ b/Listings/GPIO.lst @@ -1,4 +1,4 @@ -C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 1 +C51 COMPILER V9.60.0.0 GPIO 04/10/2023 17:32:45 PAGE 1 C51 COMPILER V9.60.0.0, COMPILATION OF MODULE GPIO @@ -62,7 +62,7 @@ line level source 52 2 P1M1 |= GPIOx->Pin, P1M0 |= GPIOx->Pin; // ¿ªÂ©Êä³ö 53 2 if (GPIOx->Mode == GPIO_OUT_PP) 54 2 P1M1 &= ~GPIOx->Pin, P1M0 |= GPIOx->Pin; // ÍÆÍìÊä³ö - C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 2 + C51 COMPILER V9.60.0.0 GPIO 04/10/2023 17:32:45 PAGE 2 55 2 } 56 1 if (GPIO == GPIO_P2) @@ -126,7 +126,7 @@ line level source 114 2 P7M1 &= ~GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // ÉÏÀ­×¼Ë«Ïò¿Ú 115 2 if (GPIOx->Mode == GPIO_HighZ) 116 2 P7M1 |= GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // ¸¡¿ÕÊäÈë - C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 3 + C51 COMPILER V9.60.0.0 GPIO 04/10/2023 17:32:45 PAGE 3 117 2 if (GPIOx->Mode == GPIO_OUT_OD) 118 2 P7M1 |= GPIOx->Pin, P7M0 |= GPIOx->Pin; // ¿ªÂ©Êä³ö diff --git a/Listings/PWM.lst b/Listings/PWM.lst new file mode 100644 index 0000000..24c96ef --- /dev/null +++ b/Listings/PWM.lst @@ -0,0 +1,252 @@ +C51 COMPILER V9.60.0.0 PWM 04/11/2023 08:44:51 PAGE 1 + + +C51 COMPILER V9.60.0.0, COMPILATION OF MODULE PWM +OBJECT MODULE PLACED IN .\Objects\PWM.obj +COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\PWM.C OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND + - PRINT(.\Listings\PWM.lst) TABS(2) OBJECT(.\Objects\PWM.obj) + +line level source + + 1 /*---------------------------------------------------------------------*/ + 2 /* --- STC MCU Limited ------------------------------------------------*/ + 3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/ + 4 /* --- Mobile: (86)13922805190 ----------------------------------------*/ + 5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/ + 6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/ + 7 /* --- Web: www.STCMCU.com --------------------------------------------*/ + 8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/ + 9 /* --- QQ: 800003751 -------------------------------------------------*/ + 10 /* Èç¹ûÒªÔÚ³ÌÐòÖÐʹÓô˴úÂë,ÇëÔÚ³ÌÐòÖÐ×¢Ã÷ʹÓÃÁËSTCµÄ×ÊÁϼ°³ÌÐò */ + 11 /*---------------------------------------------------------------------*/ + 12 + 13 #include "PWM.h" + 14 PWMx_Duty PWMB_Duty; + 15 u8 PWM_Configuration(u8 PWM, PWMx_InitDefine *PWMx) + 16 { + 17 1 if (PWM == PWMA) + 18 1 { + 19 2 EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + 20 2 + 21 2 if (PWMx->PWM1_SetPriority <= Priority_3) + 22 2 PWM1_Priority(PWMx->PWM1_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priorit + -y_2,Priority_3 + 23 2 if (PWMx->PWM2_SetPriority <= Priority_3) + 24 2 PWM2_Priority(PWMx->PWM2_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priorit + -y_2,Priority_3 + 25 2 if (PWMx->PWM3_SetPriority <= Priority_3) + 26 2 PWM3_Priority(PWMx->PWM3_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priorit + -y_2,Priority_3 + 27 2 if (PWMx->PWM4_SetPriority <= Priority_3) + 28 2 PWM4_Priority(PWMx->PWM4_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priorit + -y_2,Priority_3 + 29 2 + 30 2 PWMA_CCER1_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + 31 2 PWMA_CCER2_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + 32 2 PWMA_OC1ModeSet(PWMx->PWM1_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 33 2 PWMA_OC2ModeSet(PWMx->PWM2_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 34 2 PWMA_OC3ModeSet(PWMx->PWM3_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 35 2 PWMA_OC4ModeSet(PWMx->PWM4_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 36 2 if (PWMx->PWM_Reload == ENABLE) + 37 2 PWMA_OC1_ReloadEnable(); // Êä³ö±È½ÏµÄÔ¤×°ÔØÊ¹ÄÜ + 38 2 else + 39 2 PWMA_OC1_RelosdDisable(); // ½ûÖ¹Êä³ö±È½ÏµÄÔ¤×°ÔØ + 40 2 if (PWMx->PWM_Fast == ENABLE) + 41 2 PWMA_OC1_FastEnable(); // Êä³ö±È½Ï¿ìËÙ¹¦ÄÜʹÄÜ + 42 2 else + 43 2 PWMA_OC1_FastDisable(); // ½ûÖ¹Êä³ö±È½Ï¿ìËÙ¹¦ÄÜ + 44 2 + 45 2 if (PWMx->PWM_CC1Enable == ENABLE) + 46 2 PWMA_CC1E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 47 2 else + 48 2 PWMA_CC1E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 49 2 if (PWMx->PWM_CC1NEnable == ENABLE) + 50 2 PWMA_CC1NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + C51 COMPILER V9.60.0.0 PWM 04/11/2023 08:44:51 PAGE 2 + + 51 2 else + 52 2 PWMA_CC1NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 53 2 if (PWMx->PWM_CC2Enable == ENABLE) + 54 2 PWMA_CC2E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 55 2 else + 56 2 PWMA_CC2E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 57 2 if (PWMx->PWM_CC2NEnable == ENABLE) + 58 2 PWMA_CC2NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 59 2 else + 60 2 PWMA_CC2NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 61 2 if (PWMx->PWM_CC3Enable == ENABLE) + 62 2 PWMA_CC3E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 63 2 else + 64 2 PWMA_CC3E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 65 2 if (PWMx->PWM_CC3NEnable == ENABLE) + 66 2 PWMA_CC3NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 67 2 else + 68 2 PWMA_CC3NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 69 2 if (PWMx->PWM_CC4Enable == ENABLE) + 70 2 PWMA_CC4E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 71 2 else + 72 2 PWMA_CC4E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 73 2 if (PWMx->PWM_CC4NEnable == ENABLE) + 74 2 PWMA_CC4NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 75 2 else + 76 2 PWMA_CC4NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 77 2 + 78 2 PWMA_AutoReload(PWMx->PWM_Period); + 79 2 PWMA_Duty1(PWMx->PWM1_Duty); + 80 2 PWMA_Duty2(PWMx->PWM2_Duty); + 81 2 PWMA_Duty3(PWMx->PWM3_Duty); + 82 2 PWMA_Duty4(PWMx->PWM4_Duty); + 83 2 + 84 2 PWMA_CCPCAPreloaded(PWMx->PWM_PreLoad); // ²¶»ñ/±È½ÏÔ¤×°ÔØ¿ØÖÆÎ»(¸Ãλֻ¶Ô¾ßÓл¥²¹Êä³öµÄͨµÀÆð×÷ÓÃ) + 85 2 PWMA_PS = PWMx->PWM_PS_SW; // Çл»IO + 86 2 PWMA_ENO = PWMx->PWM_EnoSelect; // Êä³öͨµÀÑ¡Ôñ + 87 2 PWMA_DeadTime(PWMx->PWM_DeadTime); // ËÀÇø·¢ÉúÆ÷ÉèÖà + 88 2 + 89 2 if (PWMx->PWM_BrakeEnable == ENABLE) + 90 2 PWMA_BrakeEnable(); // ¿ªÆôɲ³µÊäÈë + 91 2 else + 92 2 PWMA_BrakeDisable(); // ½ûֹɲ³µÊäÈë + 93 2 if (PWMx->PWM_MainOutEnable == ENABLE) + 94 2 PWMA_BrakeOutputEnable(); // Ö÷Êä³öʹÄÜ + 95 2 else + 96 2 PWMA_BrakeOutputDisable(); // Ö÷Êä³ö½ûÖ¹ + 97 2 if (PWMx->PWM_CEN_Enable == ENABLE) + 98 2 PWMA_CEN_Enable(); // ʹÄܼÆÊýÆ÷ + 99 2 else + 100 2 PWMA_CEN_Disable(); // ½ûÖ¹¼ÆÊýÆ÷ + 101 2 + 102 2 EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ + 103 2 return 0; + 104 2 } + 105 1 + 106 1 if (PWM == PWMB) + 107 1 { + 108 2 EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + 109 2 + 110 2 if (PWMx->PWM5_SetPriority <= Priority_3) + 111 2 PWM5_Priority(PWMx->PWM5_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priorit + -y_2,Priority_3 + C51 COMPILER V9.60.0.0 PWM 04/11/2023 08:44:51 PAGE 3 + + 112 2 + 113 2 PWMB_CCER1_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + 114 2 PWMB_CCER2_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + 115 2 PWMB_OC5ModeSet(PWMx->PWM5_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 116 2 PWMB_OC6ModeSet(PWMx->PWM6_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 117 2 PWMB_OC7ModeSet(PWMx->PWM7_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 118 2 PWMB_OC8ModeSet(PWMx->PWM8_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + 119 2 if (PWMx->PWM_Reload == ENABLE) + 120 2 PWMB_OC5_ReloadEnable(); // Êä³ö±È½ÏµÄÔ¤×°ÔØÊ¹ÄÜ + 121 2 else + 122 2 PWMB_OC5_RelosdDisable(); // ½ûÖ¹Êä³ö±È½ÏµÄÔ¤×°ÔØ + 123 2 if (PWMx->PWM_Fast == ENABLE) + 124 2 PWMB_OC5_FastEnable(); // Êä³ö±È½Ï¿ìËÙ¹¦ÄÜʹÄÜ + 125 2 else + 126 2 PWMB_OC5_FastDisable(); // ½ûÖ¹Êä³ö±È½Ï¿ìËÙ¹¦ÄÜ + 127 2 + 128 2 if (PWMx->PWM_CC5Enable == ENABLE) + 129 2 PWMB_CC5E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 130 2 else + 131 2 PWMB_CC5E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 132 2 if (PWMx->PWM_CC6Enable == ENABLE) + 133 2 PWMB_CC6E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 134 2 else + 135 2 PWMB_CC6E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 136 2 if (PWMx->PWM_CC7Enable == ENABLE) + 137 2 PWMB_CC7E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 138 2 else + 139 2 PWMB_CC7E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 140 2 if (PWMx->PWM_CC8Enable == ENABLE) + 141 2 PWMB_CC8E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + 142 2 else + 143 2 PWMB_CC8E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + 144 2 + 145 2 PWMB_AutoReload(PWMx->PWM_Period); + 146 2 PWMB_Duty5(PWMx->PWM5_Duty); + 147 2 PWMB_Duty6(PWMx->PWM6_Duty); + 148 2 PWMB_Duty7(PWMx->PWM7_Duty); + 149 2 PWMB_Duty8(PWMx->PWM8_Duty); + 150 2 + 151 2 PWMB_CCPCBPreloaded(PWMx->PWM_PreLoad); // ²¶»ñ/±È½ÏÔ¤×°ÔØ¿ØÖÆÎ»(¸Ãλֻ¶Ô¾ßÓл¥²¹Êä³öµÄͨµÀÆð×÷ÓÃ) + 152 2 PWMB_PS = PWMx->PWM_PS_SW; // Çл»IO + 153 2 PWMB_ENO = PWMx->PWM_EnoSelect; // Êä³öͨµÀÑ¡Ôñ + 154 2 PWMB_DeadTime(PWMx->PWM_DeadTime); // ËÀÇø·¢ÉúÆ÷ÉèÖà + 155 2 + 156 2 if (PWMx->PWM_BrakeEnable == ENABLE) + 157 2 PWMB_BrakeEnable(); // ¿ªÆôɲ³µÊäÈë + 158 2 else + 159 2 PWMB_BrakeDisable(); // ½ûֹɲ³µÊäÈë + 160 2 if (PWMx->PWM_MainOutEnable == ENABLE) + 161 2 PWMB_BrakeOutputEnable(); // Ö÷Êä³öʹÄÜ + 162 2 else + 163 2 PWMB_BrakeOutputDisable(); // Ö÷Êä³ö½ûÖ¹ + 164 2 if (PWMx->PWM_CEN_Enable == ENABLE) + 165 2 PWMB_CEN_Enable(); // ʹÄܼÆÊýÆ÷ + 166 2 else + 167 2 PWMB_CEN_Disable(); // ½ûÖ¹¼ÆÊýÆ÷ + 168 2 + 169 2 EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ + 170 2 return 0; + 171 2 } + 172 1 + 173 1 return 2; // ´íÎó + C51 COMPILER V9.60.0.0 PWM 04/11/2023 08:44:51 PAGE 4 + + 174 1 } + 175 + 176 /*********************************************************/ + 177 + 178 /******************* PWM Õ¼¿Õ±ÈÉèÖú¯Êý *******************/ + 179 void UpdatePwm(u8 PWM, PWMx_Duty *PWMx) + 180 { + 181 1 EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + 182 1 + 183 1 if (PWM == PWMA) + 184 1 { + 185 2 PWMA_Duty1(PWMx->PWM1_Duty); + 186 2 PWMA_Duty2(PWMx->PWM2_Duty); + 187 2 PWMA_Duty3(PWMx->PWM3_Duty); + 188 2 PWMA_Duty4(PWMx->PWM4_Duty); + 189 2 } + 190 1 else + 191 1 { + 192 2 PWMB_Duty5(PWMx->PWM5_Duty); + 193 2 PWMB_Duty6(PWMx->PWM6_Duty); + 194 2 PWMB_Duty7(PWMx->PWM7_Duty); + 195 2 PWMB_Duty8(PWMx->PWM8_Duty); + 196 2 } + 197 1 + 198 1 EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ + 199 1 } + 200 + 201 /*********************************************************/ + 202 void PWM_config(void) + 203 { + 204 1 PWMx_InitDefine PWMx_InitStructure; + 205 1 PWMx_InitStructure.PWM5_Mode = CCMRn_PWM_MODE1; + 206 1 PWMx_InitStructure.PWM5_SetPriority = Priority_0; + 207 1 PWMx_InitStructure.PWM_Period = 1500; + 208 1 PWMx_InitStructure.PWM5_Duty = PWMB_Duty.PWM5_Duty; + 209 1 PWMx_InitStructure.PWM_DeadTime = 0; + 210 1 PWMx_InitStructure.PWM_EnoSelect = ENO5P; + 211 1 PWMx_InitStructure.PWM_PS_SW = PWM5_SW_P17; + 212 1 PWMx_InitStructure.PWM_CC5Enable = ENABLE; + 213 1 PWMx_InitStructure.PWM_MainOutEnable = ENABLE; // ?¡Â????????, ENABLE,DISABLE + 214 1 PWMx_InitStructure.PWM_CEN_Enable = ENABLE; // ?????????¡Â, ENABLE,DISABLE + 215 1 PWM_Configuration(PWMB, &PWMx_InitStructure); // ??????PWM, PWMA,PWMB + 216 1 PWMB_Duty.PWM5_Duty = 1500; + 217 1 } + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1448 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 16 52 + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Listings/STARTUP.lst b/Listings/STARTUP.lst index d72e3cc..5441c86 100644 --- a/Listings/STARTUP.lst +++ b/Listings/STARTUP.lst @@ -1,4 +1,4 @@ -A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 1 +A51 MACRO ASSEMBLER STARTUP 04/10/2023 17:32:45 PAGE 1 MACRO ASSEMBLER A51 V8.2.7.0 @@ -65,7 +65,7 @@ LOC OBJ LINE SOURCE 55 ; 56 ; Stack Space for reentrant functions in the SMALL model. 57 ; IBPSTACK: Enable SMALL model reentrant stack - A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 2 + A51 MACRO ASSEMBLER STARTUP 04/10/2023 17:32:45 PAGE 2 58 ; Stack space for reentrant functions in the SMALL model. 0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used. @@ -133,7 +133,7 @@ LOC OBJ LINE SOURCE 121 122 EXTRN CODE (?C_START) 123 PUBLIC ?C_STARTUP - A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 3 + A51 MACRO ASSEMBLER STARTUP 04/10/2023 17:32:45 PAGE 3 124 ---- 125 CSEG AT 0 @@ -201,7 +201,7 @@ LOC OBJ LINE SOURCE 187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4 188 ; Code Banking 189 ; Select Bank 0 for L51_BANK.A51 Mode 4 - A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 4 + A51 MACRO ASSEMBLER STARTUP 04/10/2023 17:32:45 PAGE 4 190 @@ -212,7 +212,7 @@ LOC OBJ LINE SOURCE 0009 020000 F 196 LJMP ?C_START 197 198 END - A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 5 + A51 MACRO ASSEMBLER STARTUP 04/10/2023 17:32:45 PAGE 5 SYMBOL TABLE LISTING ------ ----- ------- diff --git a/Listings/kill_control.m51 b/Listings/kill_control.m51 index 22471f6..4594d69 100644 --- a/Listings/kill_control.m51 +++ b/Listings/kill_control.m51 @@ -1,9 +1,9 @@ -BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 1 +BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 1 BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY: D:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\STARTUP.obj, .\Objects\Exti.obj, .\Objects\GPIO.obj, .\Objects\main.obj, .\Objects ->> \timer.obj TO .\Objects\kill_control PRINT (.\Listings\kill_control.m51) RAMSIZE (256) +>> \timer.obj, .\Objects\PWM.obj TO .\Objects\kill_control PRINT (.\Listings\kill_control.m51) RAMSIZE (256) MEMORY MODEL: SMALL @@ -15,9 +15,11 @@ INPUT MODULES INCLUDED: .\Objects\GPIO.obj (GPIO) .\Objects\main.obj (MAIN) .\Objects\timer.obj (TIMER) + .\Objects\PWM.obj (PWM) D:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDOPTR) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?ILDPTR) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?ILDOPTR) @@ -29,89 +31,102 @@ LINK MAP OF MODULE: .\Objects\kill_control (?C_STARTUP) * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" - DATA 0008H 0008H UNIT _DATA_GROUP_ - DATA 0010H 0001H UNIT ?DT?TIMER - IDATA 0011H 0001H UNIT ?STACK + DATA 0008H 0034H UNIT _DATA_GROUP_ + DATA 003CH 0010H UNIT ?DT?PWM + DATA 004CH 0002H UNIT ?DT?TIMER + IDATA 004EH 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 0003H ABSOLUTE - CODE 0006H 0004H UNIT ?C_INITSEG - CODE 000AH 0001H UNIT ?PR?EXT_INT1?EXTI + CODE 0006H 0001H UNIT ?PR?EXT_INT1?EXTI + CODE 0007H 0001H UNIT ?PR?EXT_INT2?EXTI + CODE 0008H 0001H UNIT ?PR?EXT_INT3?EXTI + CODE 0009H 0001H UNIT ?PR?EXT_INT4?EXTI + CODE 000AH 0001H UNIT ?PR?TIMER1_INT?TIMER CODE 000BH 0003H ABSOLUTE - CODE 000EH 0001H UNIT ?PR?EXT_INT2?EXTI - CODE 000FH 0001H UNIT ?PR?EXT_INT3?EXTI - CODE 0010H 0001H UNIT ?PR?EXT_INT4?EXTI - CODE 0011H 0001H UNIT ?PR?TIMER1_INT?TIMER - CODE 0012H 0001H UNIT ?PR?TIMER2_INT?TIMER + CODE 000EH 0001H UNIT ?PR?TIMER2_INT?TIMER + CODE 000FH 0001H UNIT ?PR?TIMER3_INT?TIMER + CODE 0010H 0001H UNIT ?PR?TIMER4_INT?TIMER + 0011H 0002H *** GAP *** CODE 0013H 0003H ABSOLUTE - CODE 0016H 0001H UNIT ?PR?TIMER3_INT?TIMER - CODE 0017H 0001H UNIT ?PR?TIMER4_INT?TIMER - 0018H 0003H *** GAP *** + 0016H 0005H *** GAP *** CODE 001BH 0003H ABSOLUTE - CODE 001EH 0022H UNIT ?PR?GPIO_CONFIG?GPIO - CODE 0040H 0011H UNIT ?PR?EXTI_CONFIG?EXTI - 0051H 0002H *** GAP *** + CODE 001EH 0034H UNIT ?PR?PWM_CONFIG?PWM + 0052H 0001H *** GAP *** CODE 0053H 0003H ABSOLUTE 0056H 0005H *** GAP *** CODE 005BH 0003H ABSOLUTE 005EH 0005H *** GAP *** CODE 0063H 0003H ABSOLUTE - CODE 0066H 0017H UNIT ?PR?EXT_INT0?EXTI - 007DH 0006H *** GAP *** - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 2 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 2 + CODE 0066H 001BH UNIT ?PR?MAIN?MAIN + 0081H 0002H *** GAP *** CODE 0083H 0003H ABSOLUTE - CODE 0086H 000DH UNIT ?PR?MAIN?MAIN - 0093H 0008H *** GAP *** + CODE 0086H 0011H UNIT ?PR?EXTI_CONFIG?EXTI + 0097H 0004H *** GAP *** CODE 009BH 0003H ABSOLUTE 009EH 0005H *** GAP *** CODE 00A3H 0003H ABSOLUTE - CODE 00A6H 0331H UNIT ?PR?_TIMER_INILIZE?TIMER - CODE 03D7H 0277H UNIT ?PR?_GPIO_INILIZE?GPIO - CODE 064EH 0128H UNIT ?PR?_EXT_INILIZE?EXTI - CODE 0776H 008CH UNIT ?C_C51STARTUP - CODE 0802H 007EH UNIT ?C?LIB_CODE - CODE 0880H 001EH UNIT ?PR?TIMER_CONFIG?TIMER - CODE 089EH 000BH UNIT ?PR?TIMER0_INT?TIMER + CODE 00A6H 04EFH UNIT ?PR?_PWM_CONFIGURATION?PWM + CODE 0595H 0331H UNIT ?PR?_TIMER_INILIZE?TIMER + CODE 08C6H 0277H UNIT ?PR?_GPIO_INILIZE?GPIO + CODE 0B3DH 0128H UNIT ?PR?_EXT_INILIZE?EXTI + CODE 0C65H 00A9H UNIT ?C?LIB_CODE + CODE 0D0EH 008CH UNIT ?C_C51STARTUP + CODE 0D9AH 0085H UNIT ?PR?_UPDATEPWM?PWM + CODE 0E1FH 0045H UNIT ?PR?TIMER0_INT?TIMER + CODE 0E64H 0022H UNIT ?PR?GPIO_CONFIG?GPIO + CODE 0E86H 001EH UNIT ?PR?TIMER_CONFIG?TIMER + CODE 0EA4H 0017H UNIT ?PR?EXT_INT0?EXTI + CODE 0EBBH 0007H UNIT ?C_INITSEG OVERLAY MAP OF MODULE: .\Objects\kill_control (?C_STARTUP) -SEGMENT DATA_GROUP - +--> CALLED SEGMENT START LENGTH ------------------------------------------------- -?C_C51STARTUP ----- ----- +SEGMENT DATA_GROUP + +--> CALLED SEGMENT START LENGTH +-------------------------------------------------- +?C_C51STARTUP ----- ----- +--> ?PR?MAIN?MAIN +--> ?C_INITSEG -?PR?MAIN?MAIN ----- ----- +?PR?MAIN?MAIN ----- ----- +--> ?PR?GPIO_CONFIG?GPIO +--> ?PR?EXTI_CONFIG?EXTI +--> ?PR?TIMER_CONFIG?TIMER + +--> ?PR?PWM_CONFIG?PWM + +--> ?PR?_UPDATEPWM?PWM -?PR?GPIO_CONFIG?GPIO 0008H 0002H +?PR?GPIO_CONFIG?GPIO 0008H 0002H +--> ?PR?_GPIO_INILIZE?GPIO -?PR?EXTI_CONFIG?EXTI 0008H 0003H +?PR?EXTI_CONFIG?EXTI 0008H 0003H +--> ?PR?_EXT_INILIZE?EXTI -?PR?TIMER_CONFIG?TIMER 0008H 0008H +?PR?TIMER_CONFIG?TIMER 0008H 0008H +--> ?PR?_TIMER_INILIZE?TIMER +?PR?PWM_CONFIG?PWM 0008H 0034H + +--> ?PR?_PWM_CONFIGURATION?PWM + SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) VALUE TYPE NAME + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 3 + + ---------------------------------- ------- MODULE ?C_STARTUP - C:0776H SEGMENT ?C_C51STARTUP - I:0011H SEGMENT ?STACK + C:0D0EH SEGMENT ?C_C51STARTUP + I:004EH SEGMENT ?STACK C:0000H PUBLIC ?C_STARTUP D:00E0H SYMBOL ACC D:00F0H SYMBOL B @@ -119,11 +134,8 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:0082H SYMBOL DPL N:0000H SYMBOL IBPSTACK N:0100H SYMBOL IBPSTACKTOP - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 3 - - N:0080H SYMBOL IDATALEN - C:0779H SYMBOL IDATALOOP + C:0D11H SYMBOL IDATALOOP N:0000H SYMBOL PBPSTACK N:0100H SYMBOL PBPSTACKTOP N:0000H SYMBOL PDATALEN @@ -132,18 +144,18 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) N:0000H SYMBOL PPAGEENABLE D:00A0H SYMBOL PPAGE_SFR D:0081H SYMBOL SP - C:0776H SYMBOL STARTUP1 + C:0D0EH SYMBOL STARTUP1 N:0000H SYMBOL XBPSTACK N:0000H SYMBOL XBPSTACKTOP N:0000H SYMBOL XDATALEN N:0000H SYMBOL XDATASTART C:0000H LINE# 126 - C:0776H LINE# 133 - C:0778H LINE# 134 - C:0779H LINE# 135 - C:077AH LINE# 136 - C:077CH LINE# 185 - C:077FH LINE# 196 + C:0D0EH LINE# 133 + C:0D10H LINE# 134 + C:0D11H LINE# 135 + C:0D12H LINE# 136 + C:0D14H LINE# 185 + C:0D17H LINE# 196 ------- ENDMOD ?C_STARTUP ------- MODULE EXTI @@ -159,14 +171,17 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:00A8H PUBLIC IE D:00B8H PUBLIC IP D:00D8H PUBLIC CCON - C:0066H PUBLIC Ext_INT0 - C:000AH PUBLIC Ext_INT1 - C:000EH PUBLIC Ext_INT2 + C:0EA4H PUBLIC Ext_INT0 + C:0006H PUBLIC Ext_INT1 + C:0007H PUBLIC Ext_INT2 B:0090H.0 PUBLIC P10 - C:000FH PUBLIC Ext_INT3 + C:0008H PUBLIC Ext_INT3 B:0090H.1 PUBLIC P11 - C:0010H PUBLIC Ext_INT4 + C:0009H PUBLIC Ext_INT4 B:0090H.2 PUBLIC P12 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 4 + + D:0098H PUBLIC SCON B:00B0H.2 PUBLIC P32 D:0088H PUBLIC TCON @@ -179,119 +194,119 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) B:00A8H.2 PUBLIC EX1 B:0088H.2 PUBLIC IT1 B:00B8H.0 PUBLIC PX0 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 4 - - B:00B8H.2 PUBLIC PX1 D:00B7H PUBLIC IPH - C:064EH PUBLIC _Ext_Inilize - C:0040H PUBLIC Exti_config + C:0B3DH PUBLIC _Ext_Inilize + C:0086H PUBLIC Exti_config D:008FH PUBLIC INT_CLKO D:00D0H PUBLIC PSW ------- PROC EXT_INT0 - C:0066H LINE# 24 - C:0068H LINE# 26 - C:006BH LINE# 27 - C:006BH LINE# 28 - C:006FH LINE# 29 - C:006FH LINE# 30 - C:0071H LINE# 31 - C:0073H LINE# 32 - C:0075H LINE# 33 - C:0075H LINE# 34 - C:0077H LINE# 36 - C:0077H LINE# 37 - C:007AH LINE# 38 - C:007AH LINE# 39 + C:0EA4H LINE# 24 + C:0EA6H LINE# 26 + C:0EA9H LINE# 27 + C:0EA9H LINE# 28 + C:0EADH LINE# 29 + C:0EADH LINE# 30 + C:0EAFH LINE# 31 + C:0EB1H LINE# 32 + C:0EB3H LINE# 33 + C:0EB3H LINE# 34 + C:0EB5H LINE# 36 + C:0EB5H LINE# 37 + C:0EB8H LINE# 38 + C:0EB8H LINE# 39 ------- ENDPROC EXT_INT0 ------- PROC EXT_INT1 - C:000AH LINE# 42 - C:000AH LINE# 44 + C:0006H LINE# 42 + C:0006H LINE# 44 ------- ENDPROC EXT_INT1 ------- PROC EXT_INT2 - C:000EH LINE# 47 - C:000EH LINE# 49 + C:0007H LINE# 47 + C:0007H LINE# 49 ------- ENDPROC EXT_INT2 ------- PROC EXT_INT3 - C:000FH LINE# 52 - C:000FH LINE# 54 + C:0008H LINE# 52 + C:0008H LINE# 54 ------- ENDPROC EXT_INT3 ------- PROC EXT_INT4 - C:0010H LINE# 57 - C:0010H LINE# 59 + C:0009H LINE# 57 + C:0009H LINE# 59 ------- ENDPROC EXT_INT4 ------- PROC _EXT_INILIZE D:0007H SYMBOL EXT D:0001H SYMBOL INTx - C:064EH LINE# 68 - C:064EH LINE# 69 - C:064EH LINE# 70 - C:0658H LINE# 71 - C:065BH LINE# 73 - C:065EH LINE# 74 - C:065EH LINE# 75 - C:0660H LINE# 76 - C:066AH LINE# 77 - C:066EH LINE# 79 - C:0670H LINE# 80 - C:0680H LINE# 81 - C:0683H LINE# 82 - C:06AFH LINE# 83 - C:06B6H LINE# 84 - C:06BAH LINE# 86 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 5 + C:0B3DH LINE# 68 + C:0B3DH LINE# 69 + C:0B3DH LINE# 70 + C:0B47H LINE# 71 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 5 - C:06BCH LINE# 87 - C:06BFH LINE# 88 - C:06BFH LINE# 90 - C:06C4H LINE# 91 - C:06C4H LINE# 92 - C:06C6H LINE# 93 - C:06D0H LINE# 94 - C:06D4H LINE# 96 - C:06D6H LINE# 97 - C:06E6H LINE# 98 - C:06E9H LINE# 99 - C:0715H LINE# 100 - C:071CH LINE# 101 - C:0720H LINE# 103 - C:0722H LINE# 104 - C:0725H LINE# 105 - C:0725H LINE# 107 - C:072AH LINE# 108 - C:072AH LINE# 109 - C:0734H LINE# 110 - C:0739H LINE# 112 - C:073CH LINE# 113 - C:073FH LINE# 114 - C:073FH LINE# 116 - C:0744H LINE# 117 - C:0744H LINE# 118 - C:074EH LINE# 119 - C:0753H LINE# 121 - C:0756H LINE# 122 - C:0759H LINE# 123 - C:0759H LINE# 125 - C:075EH LINE# 126 - C:075EH LINE# 127 - C:0768H LINE# 128 - C:076DH LINE# 130 - C:0770H LINE# 131 - C:0773H LINE# 132 - C:0773H LINE# 133 - C:0775H LINE# 134 + C:0B4AH LINE# 73 + C:0B4DH LINE# 74 + C:0B4DH LINE# 75 + C:0B4FH LINE# 76 + C:0B59H LINE# 77 + C:0B5DH LINE# 79 + C:0B5FH LINE# 80 + C:0B6FH LINE# 81 + C:0B72H LINE# 82 + C:0B9EH LINE# 83 + C:0BA5H LINE# 84 + C:0BA9H LINE# 86 + C:0BABH LINE# 87 + C:0BAEH LINE# 88 + C:0BAEH LINE# 90 + C:0BB3H LINE# 91 + C:0BB3H LINE# 92 + C:0BB5H LINE# 93 + C:0BBFH LINE# 94 + C:0BC3H LINE# 96 + C:0BC5H LINE# 97 + C:0BD5H LINE# 98 + C:0BD8H LINE# 99 + C:0C04H LINE# 100 + C:0C0BH LINE# 101 + C:0C0FH LINE# 103 + C:0C11H LINE# 104 + C:0C14H LINE# 105 + C:0C14H LINE# 107 + C:0C19H LINE# 108 + C:0C19H LINE# 109 + C:0C23H LINE# 110 + C:0C28H LINE# 112 + C:0C2BH LINE# 113 + C:0C2EH LINE# 114 + C:0C2EH LINE# 116 + C:0C33H LINE# 117 + C:0C33H LINE# 118 + C:0C3DH LINE# 119 + C:0C42H LINE# 121 + C:0C45H LINE# 122 + C:0C48H LINE# 123 + C:0C48H LINE# 125 + C:0C4DH LINE# 126 + C:0C4DH LINE# 127 + C:0C57H LINE# 128 + C:0C5CH LINE# 130 + C:0C5FH LINE# 131 + C:0C62H LINE# 132 + C:0C62H LINE# 133 + C:0C64H LINE# 134 ------- ENDPROC _EXT_INILIZE ------- PROC EXTI_CONFIG ------- DO D:0008H SYMBOL Exti_InitStructure ------- ENDDO - C:0040H LINE# 135 - C:0040H LINE# 136 - C:0040H LINE# 139 - C:0043H LINE# 140 - C:0046H LINE# 141 - C:0048H LINE# 142 + C:0086H LINE# 135 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 6 + + + C:0086H LINE# 136 + C:0086H LINE# 139 + C:0089H LINE# 140 + C:008CH LINE# 141 + C:008EH LINE# 142 ------- ENDPROC EXTI_CONFIG ------- ENDMOD EXTI @@ -299,9 +314,6 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) C:0000H SYMBOL _ICE_DUMMY_ D:0093H PUBLIC P0M1 D:0092H PUBLIC P1M0 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 6 - - D:0096H PUBLIC P2M0 D:0091H PUBLIC P1M1 D:0080H PUBLIC P0 @@ -323,7 +335,7 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:00E8H PUBLIC P6 D:00E1H PUBLIC P7M1 D:00F8H PUBLIC P7 - C:001EH PUBLIC GPIO_config + C:0E64H PUBLIC GPIO_config D:00A8H PUBLIC IE D:00B8H PUBLIC IP D:00D8H PUBLIC CCON @@ -334,131 +346,131 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:0088H PUBLIC TCON D:00F0H PUBLIC B D:00E0H PUBLIC ACC - C:03D7H PUBLIC _GPIO_Inilize + C:08C6H PUBLIC _GPIO_Inilize D:00D0H PUBLIC PSW D:0094H PUBLIC P0M0 ------- PROC _GPIO_INILIZE D:0007H SYMBOL GPIO D:0001H SYMBOL GPIOx - C:03D7H LINE# 28 - C:03D7H LINE# 29 - C:03D7H LINE# 30 - C:03E1H LINE# 31 - C:03E4H LINE# 32 - C:03F1H LINE# 33 - C:03F4H LINE# 34 - C:03F7H LINE# 35 - C:03F7H LINE# 36 - C:03FAH LINE# 37 - C:0405H LINE# 38 - C:040CH LINE# 39 - C:0417H LINE# 40 - C:041FH LINE# 41 - C:0429H LINE# 42 - C:042EH LINE# 43 - C:043BH LINE# 44 - C:043BH LINE# 45 - C:0440H LINE# 46 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 7 + C:08C6H LINE# 28 + C:08C6H LINE# 29 + C:08C6H LINE# 30 + C:08D0H LINE# 31 + C:08D3H LINE# 32 + C:08E0H LINE# 33 + C:08E3H LINE# 34 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 7 - C:0440H LINE# 47 - C:0446H LINE# 48 - C:0451H LINE# 49 - C:0456H LINE# 50 - C:0461H LINE# 51 - C:0468H LINE# 52 - C:0472H LINE# 53 - C:0479H LINE# 54 - C:0486H LINE# 55 - C:0486H LINE# 56 - C:048BH LINE# 57 - C:048BH LINE# 58 - C:0491H LINE# 59 - C:049CH LINE# 60 - C:04A1H LINE# 61 - C:04ACH LINE# 62 - C:04B3H LINE# 63 - C:04BDH LINE# 64 - C:04C4H LINE# 65 - C:04D1H LINE# 66 - C:04D1H LINE# 67 - C:04D6H LINE# 68 - C:04D6H LINE# 69 - C:04DCH LINE# 70 - C:04E7H LINE# 71 - C:04ECH LINE# 72 - C:04F7H LINE# 73 - C:04FEH LINE# 74 - C:0508H LINE# 75 - C:050FH LINE# 76 - C:051CH LINE# 77 - C:051CH LINE# 78 - C:0521H LINE# 79 - C:0521H LINE# 80 - C:0527H LINE# 81 - C:0532H LINE# 82 - C:0537H LINE# 83 - C:0542H LINE# 84 - C:0549H LINE# 85 - C:0553H LINE# 86 - C:055AH LINE# 87 - C:0567H LINE# 88 - C:0567H LINE# 89 - C:056CH LINE# 90 - C:056CH LINE# 91 - C:0572H LINE# 92 - C:057DH LINE# 93 - C:0582H LINE# 94 - C:058DH LINE# 95 - C:0594H LINE# 96 - C:059EH LINE# 97 - C:05A5H LINE# 98 - C:05B2H LINE# 99 - C:05B2H LINE# 100 - C:05B7H LINE# 101 - C:05B7H LINE# 102 - C:05BDH LINE# 103 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 8 + C:08E6H LINE# 35 + C:08E6H LINE# 36 + C:08E9H LINE# 37 + C:08F4H LINE# 38 + C:08FBH LINE# 39 + C:0906H LINE# 40 + C:090EH LINE# 41 + C:0918H LINE# 42 + C:091DH LINE# 43 + C:092AH LINE# 44 + C:092AH LINE# 45 + C:092FH LINE# 46 + C:092FH LINE# 47 + C:0935H LINE# 48 + C:0940H LINE# 49 + C:0945H LINE# 50 + C:0950H LINE# 51 + C:0957H LINE# 52 + C:0961H LINE# 53 + C:0968H LINE# 54 + C:0975H LINE# 55 + C:0975H LINE# 56 + C:097AH LINE# 57 + C:097AH LINE# 58 + C:0980H LINE# 59 + C:098BH LINE# 60 + C:0990H LINE# 61 + C:099BH LINE# 62 + C:09A2H LINE# 63 + C:09ACH LINE# 64 + C:09B3H LINE# 65 + C:09C0H LINE# 66 + C:09C0H LINE# 67 + C:09C5H LINE# 68 + C:09C5H LINE# 69 + C:09CBH LINE# 70 + C:09D6H LINE# 71 + C:09DBH LINE# 72 + C:09E6H LINE# 73 + C:09EDH LINE# 74 + C:09F7H LINE# 75 + C:09FEH LINE# 76 + C:0A0BH LINE# 77 + C:0A0BH LINE# 78 + C:0A10H LINE# 79 + C:0A10H LINE# 80 + C:0A16H LINE# 81 + C:0A21H LINE# 82 + C:0A26H LINE# 83 + C:0A31H LINE# 84 + C:0A38H LINE# 85 + C:0A42H LINE# 86 + C:0A49H LINE# 87 + C:0A56H LINE# 88 + C:0A56H LINE# 89 + C:0A5BH LINE# 90 + C:0A5BH LINE# 91 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 8 - C:05C8H LINE# 104 - C:05CDH LINE# 105 - C:05D8H LINE# 106 - C:05DFH LINE# 107 - C:05E9H LINE# 108 - C:05F0H LINE# 109 - C:05FDH LINE# 110 - C:05FDH LINE# 111 - C:0602H LINE# 112 - C:0602H LINE# 113 - C:060AH LINE# 114 - C:0615H LINE# 115 - C:061BH LINE# 116 - C:0626H LINE# 117 - C:062DH LINE# 118 - C:0637H LINE# 119 - C:063EH LINE# 120 - C:064BH LINE# 121 - C:064BH LINE# 122 - C:064DH LINE# 123 + C:0A61H LINE# 92 + C:0A6CH LINE# 93 + C:0A71H LINE# 94 + C:0A7CH LINE# 95 + C:0A83H LINE# 96 + C:0A8DH LINE# 97 + C:0A94H LINE# 98 + C:0AA1H LINE# 99 + C:0AA1H LINE# 100 + C:0AA6H LINE# 101 + C:0AA6H LINE# 102 + C:0AACH LINE# 103 + C:0AB7H LINE# 104 + C:0ABCH LINE# 105 + C:0AC7H LINE# 106 + C:0ACEH LINE# 107 + C:0AD8H LINE# 108 + C:0ADFH LINE# 109 + C:0AECH LINE# 110 + C:0AECH LINE# 111 + C:0AF1H LINE# 112 + C:0AF1H LINE# 113 + C:0AF9H LINE# 114 + C:0B04H LINE# 115 + C:0B0AH LINE# 116 + C:0B15H LINE# 117 + C:0B1CH LINE# 118 + C:0B26H LINE# 119 + C:0B2DH LINE# 120 + C:0B3AH LINE# 121 + C:0B3AH LINE# 122 + C:0B3CH LINE# 123 ------- ENDPROC _GPIO_INILIZE ------- PROC GPIO_CONFIG ------- DO D:0008H SYMBOL GPIO_InitStructure ------- ENDDO - C:001EH LINE# 124 - C:001EH LINE# 125 - C:001EH LINE# 128 - C:0021H LINE# 129 - C:0024H LINE# 130 - C:002EH LINE# 131 - C:0031H LINE# 132 - C:0034H LINE# 133 - C:0039H LINE# 134 - C:003BH LINE# 135 - C:003DH LINE# 136 - C:003FH LINE# 137 + C:0E64H LINE# 124 + C:0E64H LINE# 125 + C:0E64H LINE# 128 + C:0E67H LINE# 129 + C:0E6AH LINE# 130 + C:0E74H LINE# 131 + C:0E77H LINE# 132 + C:0E7AH LINE# 133 + C:0E7FH LINE# 134 + C:0E81H LINE# 135 + C:0E83H LINE# 136 + C:0E85H LINE# 137 ------- ENDPROC GPIO_CONFIG ------- ENDMOD GPIO @@ -467,6 +479,9 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:0080H PUBLIC P0 D:0090H PUBLIC P1 D:00A0H PUBLIC P2 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 9 + + D:00B0H PUBLIC P3 D:00C0H PUBLIC P4 D:00C8H PUBLIC P5 @@ -476,25 +491,24 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) D:00A8H PUBLIC IE D:00B8H PUBLIC IP D:00D8H PUBLIC CCON - C:0086H PUBLIC main + C:0066H PUBLIC main D:0098H PUBLIC SCON D:0088H PUBLIC TCON - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 9 - - D:00F0H PUBLIC B D:00E0H PUBLIC ACC D:00D0H PUBLIC PSW ------- PROC MAIN - C:0086H LINE# 19 - C:0086H LINE# 20 - C:0086H LINE# 21 - C:0089H LINE# 22 - C:008CH LINE# 23 - C:008FH LINE# 24 - C:0091H LINE# 25 - C:0091H LINE# 26 - C:0091H LINE# 27 + C:0066H LINE# 19 + C:0066H LINE# 20 + C:0066H LINE# 21 + C:0069H LINE# 22 + C:006CH LINE# 23 + C:006FH LINE# 24 + C:0072H LINE# 25 + C:0074H LINE# 26 + C:0074H LINE# 27 + C:0074H LINE# 28 + C:007FH LINE# 29 ------- ENDPROC MAIN ------- ENDMOD MAIN @@ -502,28 +516,32 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) C:0000H SYMBOL _ICE_DUMMY_ D:0080H PUBLIC P0 D:0090H PUBLIC P1 - C:089EH PUBLIC timer0_int + C:0E1FH PUBLIC timer0_int D:00A0H PUBLIC P2 - C:0011H PUBLIC timer1_int + C:000AH PUBLIC timer1_int D:00B0H PUBLIC P3 - C:0012H PUBLIC timer2_int + C:000EH PUBLIC timer2_int D:00C0H PUBLIC P4 - C:0016H PUBLIC timer3_int + C:000FH PUBLIC timer3_int D:00C8H PUBLIC P5 - C:0017H PUBLIC timer4_int + C:0010H PUBLIC timer4_int D:00E8H PUBLIC P6 D:00F8H PUBLIC P7 D:00A8H PUBLIC IE D:00B8H PUBLIC IP D:00D8H PUBLIC CCON + B:0090H.2 PUBLIC P12 D:0098H PUBLIC SCON D:0089H PUBLIC TMOD D:0088H PUBLIC TCON - C:00A6H PUBLIC _Timer_Inilize - D:0010H PUBLIC KILL_time + C:0595H PUBLIC _Timer_Inilize + D:004CH PUBLIC KILL_time D:00AFH PUBLIC IE2 D:00F0H PUBLIC B D:008EH PUBLIC AUXR + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 10 + + D:00E0H PUBLIC ACC B:00A8H.1 PUBLIC ET0 B:00A8H.3 PUBLIC ET1 @@ -539,169 +557,436 @@ SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP) B:00B8H.1 PUBLIC PT0 D:00D3H PUBLIC TL4 B:00B8H.3 PUBLIC PT1 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 10 - - B:0088H.4 PUBLIC TR0 B:0088H.6 PUBLIC TR1 D:00D1H PUBLIC T4T3M - C:0880H PUBLIC Timer_config + C:0E86H PUBLIC Timer_config D:00B7H PUBLIC IPH D:008FH PUBLIC INT_CLKO D:00D0H PUBLIC PSW + D:004DH PUBLIC pwm_direction ------- PROC TIMER0_INT - C:089EH LINE# 22 - C:08A0H LINE# 24 - C:08A4H LINE# 25 - C:08A4H LINE# 26 - C:08A6H LINE# 27 - C:08A6H LINE# 28 + C:0E1FH LINE# 26 + C:0E23H LINE# 28 + C:0E27H LINE# 29 + C:0E29H LINE# 30 + C:0E2CH LINE# 31 + C:0E2CH LINE# 32 + C:0E30H LINE# 33 + C:0E30H LINE# 34 + C:0E38H LINE# 35 + C:0E41H LINE# 36 + C:0E44H LINE# 37 + C:0E46H LINE# 39 + C:0E46H LINE# 40 + C:0E4EH LINE# 41 + C:0E54H LINE# 42 + C:0E57H LINE# 43 + C:0E57H LINE# 44 + C:0E59H LINE# 46 + C:0E59H LINE# 47 + C:0E5FH LINE# 48 + C:0E5FH LINE# 49 ------- ENDPROC TIMER0_INT ------- PROC TIMER1_INT - C:0011H LINE# 31 - C:0011H LINE# 34 + C:000AH LINE# 52 + C:000AH LINE# 54 ------- ENDPROC TIMER1_INT ------- PROC TIMER2_INT - C:0012H LINE# 37 - C:0012H LINE# 40 + C:000EH LINE# 57 + C:000EH LINE# 59 ------- ENDPROC TIMER2_INT ------- PROC TIMER3_INT - C:0016H LINE# 43 - C:0016H LINE# 46 + C:000FH LINE# 62 + C:000FH LINE# 64 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 11 + + ------- ENDPROC TIMER3_INT ------- PROC TIMER4_INT - C:0017H LINE# 49 - C:0017H LINE# 52 + C:0010H LINE# 67 + C:0010H LINE# 69 ------- ENDPROC TIMER4_INT ------- PROC _TIMER_INILIZE D:0005H SYMBOL TIM D:0001H SYMBOL TIMx - C:00A6H LINE# 62 - C:00A8H LINE# 63 - C:00A8H LINE# 64 - C:00B5H LINE# 66 - C:00BBH LINE# 67 - C:00BBH LINE# 68 - C:00BDH LINE# 69 - C:00CBH LINE# 70 - C:00CDH LINE# 71 - C:00E0H LINE# 72 - C:010CH LINE# 74 - C:011CH LINE# 75 - C:0123H LINE# 76 - C:0133H LINE# 77 - C:013AH LINE# 78 - C:0145H LINE# 79 - C:0148H LINE# 80 - C:0157H LINE# 81 - C:015AH LINE# 83 - C:016CH LINE# 84 - C:0178H LINE# 85 - C:017BH LINE# 86 - C:017BH LINE# 88 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 11 + C:0595H LINE# 78 + C:0597H LINE# 79 + C:0597H LINE# 80 + C:05A1H LINE# 81 + C:05A4H LINE# 83 + C:05AAH LINE# 84 + C:05AAH LINE# 85 + C:05ACH LINE# 86 + C:05B6H LINE# 87 + C:05BAH LINE# 89 + C:05BCH LINE# 90 + C:05CCH LINE# 91 + C:05CFH LINE# 92 + C:05FBH LINE# 94 + C:0608H LINE# 95 + C:060BH LINE# 96 + C:0612H LINE# 97 + C:061FH LINE# 98 + C:0622H LINE# 99 + C:0626H LINE# 100 + C:0629H LINE# 101 + C:062FH LINE# 102 + C:0634H LINE# 104 + C:0637H LINE# 105 + C:0641H LINE# 106 + C:0646H LINE# 108 + C:0649H LINE# 110 + C:065BH LINE# 111 + C:0665H LINE# 112 + C:0667H LINE# 113 + C:066AH LINE# 114 + C:066AH LINE# 116 + C:0672H LINE# 117 + C:0672H LINE# 118 + C:0674H LINE# 119 + C:067EH LINE# 120 + C:0682H LINE# 122 + C:0684H LINE# 123 + C:0694H LINE# 124 + C:0697H LINE# 125 + C:06C3H LINE# 126 + C:06D0H LINE# 127 + C:06D3H LINE# 128 + C:06DFH LINE# 129 + C:06ECH LINE# 130 + C:06EFH LINE# 131 + C:06F3H LINE# 132 + C:06F6H LINE# 133 + C:06FCH LINE# 134 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 12 - C:0183H LINE# 89 - C:0183H LINE# 90 - C:0185H LINE# 91 - C:0193H LINE# 92 - C:0195H LINE# 93 - C:01A8H LINE# 94 - C:01D4H LINE# 95 - C:01E4H LINE# 96 - C:01F0H LINE# 97 - C:0200H LINE# 98 - C:0207H LINE# 99 - C:0212H LINE# 100 - C:0215H LINE# 101 - C:0224H LINE# 102 - C:0227H LINE# 104 - C:0239H LINE# 105 - C:0245H LINE# 106 - C:0248H LINE# 107 - C:0248H LINE# 109 - C:024DH LINE# 110 - C:024DH LINE# 111 - C:0250H LINE# 112 - C:025FH LINE# 113 - C:0262H LINE# 114 - C:0275H LINE# 115 - C:0280H LINE# 116 - C:0287H LINE# 117 - C:0292H LINE# 118 - C:0295H LINE# 119 - C:02A4H LINE# 120 - C:02A7H LINE# 122 - C:02B9H LINE# 123 - C:02C6H LINE# 124 - C:02C9H LINE# 125 - C:02C9H LINE# 127 - C:02CEH LINE# 128 - C:02CEH LINE# 129 - C:02D1H LINE# 130 - C:02E0H LINE# 131 - C:02E3H LINE# 132 - C:02F6H LINE# 133 - C:0301H LINE# 134 - C:0308H LINE# 135 - C:0313H LINE# 136 - C:0316H LINE# 137 - C:0325H LINE# 138 - C:0328H LINE# 140 - C:033AH LINE# 141 - C:0347H LINE# 142 - C:034AH LINE# 143 - C:034AH LINE# 145 - C:0352H LINE# 146 - C:0352H LINE# 147 - C:0355H LINE# 148 - C:0364H LINE# 149 - C:0367H LINE# 150 - C:037CH LINE# 151 - BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 12 + C:0701H LINE# 136 + C:0704H LINE# 137 + C:070EH LINE# 138 + C:0713H LINE# 140 + C:0716H LINE# 142 + C:0728H LINE# 143 + C:0732H LINE# 144 + C:0734H LINE# 145 + C:0737H LINE# 146 + C:0737H LINE# 148 + C:073CH LINE# 149 + C:073CH LINE# 150 + C:073FH LINE# 151 + C:0749H LINE# 152 + C:074EH LINE# 154 + C:0751H LINE# 155 + C:0761H LINE# 156 + C:0764H LINE# 157 + C:076CH LINE# 158 + C:076FH LINE# 159 + C:0773H LINE# 160 + C:0776H LINE# 161 + C:077CH LINE# 162 + C:0781H LINE# 164 + C:0784H LINE# 165 + C:078EH LINE# 166 + C:0793H LINE# 168 + C:0796H LINE# 170 + C:07A8H LINE# 171 + C:07B2H LINE# 172 + C:07B5H LINE# 173 + C:07B8H LINE# 174 + C:07B8H LINE# 176 + C:07BDH LINE# 177 + C:07BDH LINE# 178 + C:07C0H LINE# 179 + C:07CAH LINE# 180 + C:07CFH LINE# 182 + C:07D2H LINE# 183 + C:07E2H LINE# 184 + C:07E5H LINE# 185 + C:07EDH LINE# 186 + C:07F0H LINE# 187 + C:07F4H LINE# 188 + C:07F7H LINE# 189 + C:07FDH LINE# 190 + C:0802H LINE# 192 + C:0805H LINE# 193 + C:080FH LINE# 194 + C:0814H LINE# 196 + C:0817H LINE# 198 + C:0829H LINE# 199 + C:0833H LINE# 200 + C:0836H LINE# 201 + C:0839H LINE# 202 + C:0839H LINE# 204 + C:0841H LINE# 205 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 13 - C:0385H LINE# 152 - C:0390H LINE# 153 - C:039FH LINE# 154 - C:03A2H LINE# 155 - C:03B1H LINE# 156 - C:03B4H LINE# 158 - C:03C4H LINE# 159 - C:03D1H LINE# 160 - C:03D4H LINE# 161 - C:03D4H LINE# 162 - C:03D6H LINE# 163 + C:0841H LINE# 206 + C:0844H LINE# 207 + C:084EH LINE# 208 + C:0853H LINE# 210 + C:0856H LINE# 211 + C:0868H LINE# 212 + C:086BH LINE# 213 + C:0871H LINE# 214 + C:0874H LINE# 215 + C:087CH LINE# 216 + C:087FH LINE# 217 + C:0889H LINE# 218 + C:088EH LINE# 220 + C:0891H LINE# 221 + C:089BH LINE# 222 + C:08A0H LINE# 224 + C:08A3H LINE# 226 + C:08B3H LINE# 227 + C:08BDH LINE# 228 + C:08C0H LINE# 229 + C:08C3H LINE# 230 + C:08C3H LINE# 231 + C:08C5H LINE# 232 ------- ENDPROC _TIMER_INILIZE ------- PROC TIMER_CONFIG ------- DO D:0008H SYMBOL TIM_InitStructure ------- ENDDO - C:0880H LINE# 165 - C:0880H LINE# 166 - C:0880H LINE# 168 - C:0883H LINE# 169 - C:0885H LINE# 170 - C:0888H LINE# 171 - C:088AH LINE# 172 - C:088CH LINE# 173 - C:0892H LINE# 174 - C:0895H LINE# 175 + C:0E86H LINE# 234 + C:0E86H LINE# 235 + C:0E86H LINE# 237 + C:0E89H LINE# 238 + C:0E8BH LINE# 239 + C:0E8EH LINE# 240 + C:0E90H LINE# 241 + C:0E92H LINE# 242 + C:0E98H LINE# 243 + C:0E9BH LINE# 244 ------- ENDPROC TIMER_CONFIG ------- ENDMOD TIMER + ------- MODULE PWM + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00C0H PUBLIC P4 + D:00C8H PUBLIC P5 + D:00E8H PUBLIC P6 + D:00F8H PUBLIC P7 + D:00BAH PUBLIC P_SW2 + D:00A8H PUBLIC IE + D:00B6H PUBLIC IP2H + D:00EEH PUBLIC IP3H + D:00B8H PUBLIC IP + C:0D9AH PUBLIC _UpdatePwm + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 14 + + + D:00D8H PUBLIC CCON + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + C:00A6H PUBLIC _PWM_Configuration + D:003CH PUBLIC PWMB_Duty + D:00F0H PUBLIC B + D:00E0H PUBLIC ACC + D:00B5H PUBLIC IP2 + D:00DFH PUBLIC IP3 + C:001EH PUBLIC PWM_config + D:00D0H PUBLIC PSW + ------- PROC _PWM_CONFIGURATION + D:0007H SYMBOL PWM + D:0001H SYMBOL PWMx + C:00A6H LINE# 15 + C:00A6H LINE# 16 + C:00A6H LINE# 17 + C:00AEH LINE# 18 + C:00AEH LINE# 19 + C:00B1H LINE# 21 + C:00C3H LINE# 22 + C:00F0H LINE# 23 + C:0102H LINE# 24 + C:012FH LINE# 25 + C:0141H LINE# 26 + C:016EH LINE# 27 + C:0180H LINE# 28 + C:01ADH LINE# 30 + C:01B2H LINE# 31 + C:01B4H LINE# 32 + C:01C0H LINE# 33 + C:01CFH LINE# 34 + C:01DEH LINE# 35 + C:01EDH LINE# 36 + C:01FAH LINE# 37 + C:0200H LINE# 39 + C:0204H LINE# 40 + C:0211H LINE# 41 + C:0217H LINE# 43 + C:021BH LINE# 45 + C:0228H LINE# 46 + C:022EH LINE# 48 + C:0232H LINE# 49 + C:023FH LINE# 50 + C:0245H LINE# 52 + C:0249H LINE# 53 + C:0256H LINE# 54 + C:025CH LINE# 56 + C:0260H LINE# 57 + C:026DH LINE# 58 + C:0273H LINE# 60 + C:0277H LINE# 61 + C:0284H LINE# 62 + C:028AH LINE# 64 + C:028EH LINE# 65 + C:029BH LINE# 66 + C:02A1H LINE# 68 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 15 + + + C:02A5H LINE# 69 + C:02B2H LINE# 70 + C:02B8H LINE# 72 + C:02BCH LINE# 73 + C:02C9H LINE# 74 + C:02CFH LINE# 76 + C:02D3H LINE# 78 + C:02E3H LINE# 79 + C:02F3H LINE# 80 + C:0303H LINE# 81 + C:0313H LINE# 82 + C:0323H LINE# 84 + C:033FH LINE# 85 + C:0349H LINE# 86 + C:0353H LINE# 87 + C:035DH LINE# 89 + C:036AH LINE# 90 + C:0370H LINE# 92 + C:0374H LINE# 93 + C:0381H LINE# 94 + C:0387H LINE# 96 + C:038BH LINE# 97 + C:0398H LINE# 98 + C:039FH LINE# 100 + C:03A3H LINE# 102 + C:03A3H LINE# 103 + C:03A6H LINE# 104 + C:03A6H LINE# 106 + C:03AEH LINE# 107 + C:03AEH LINE# 108 + C:03B1H LINE# 110 + C:03C3H LINE# 111 + C:03F0H LINE# 113 + C:03F5H LINE# 114 + C:03F7H LINE# 115 + C:0406H LINE# 116 + C:0415H LINE# 117 + C:0424H LINE# 118 + C:0433H LINE# 119 + C:0440H LINE# 120 + C:0446H LINE# 122 + C:044AH LINE# 123 + C:0457H LINE# 124 + C:045DH LINE# 126 + C:0461H LINE# 128 + C:046EH LINE# 129 + C:0474H LINE# 131 + C:0478H LINE# 132 + C:0485H LINE# 133 + C:048BH LINE# 135 + C:048FH LINE# 136 + C:049CH LINE# 137 + C:04A2H LINE# 139 + C:04A6H LINE# 140 + C:04B3H LINE# 141 + C:04B9H LINE# 143 + C:04BDH LINE# 145 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 16 + + + C:04CDH LINE# 146 + C:04DDH LINE# 147 + C:04EDH LINE# 148 + C:04FDH LINE# 149 + C:050DH LINE# 151 + C:0529H LINE# 152 + C:0533H LINE# 153 + C:053DH LINE# 154 + C:0547H LINE# 156 + C:0554H LINE# 157 + C:055AH LINE# 159 + C:055EH LINE# 160 + C:056BH LINE# 161 + C:0571H LINE# 163 + C:0575H LINE# 164 + C:0582H LINE# 165 + C:0588H LINE# 167 + C:058CH LINE# 169 + C:058FH LINE# 170 + C:0592H LINE# 171 + C:0592H LINE# 173 + C:0594H LINE# 174 + ------- ENDPROC _PWM_CONFIGURATION + ------- PROC _UPDATEPWM + D:0007H SYMBOL PWM + D:0001H SYMBOL PWMx + C:0D9AH LINE# 179 + C:0D9AH LINE# 180 + C:0D9AH LINE# 181 + C:0D9DH LINE# 183 + C:0DA2H LINE# 184 + C:0DA2H LINE# 185 + C:0DAFH LINE# 186 + C:0DBFH LINE# 187 + C:0DCFH LINE# 188 + C:0DD9H LINE# 189 + C:0DDBH LINE# 191 + C:0DDBH LINE# 192 + C:0DEBH LINE# 193 + C:0DFBH LINE# 194 + C:0E0BH LINE# 195 + C:0E1BH LINE# 196 + C:0E1BH LINE# 198 + C:0E1EH LINE# 199 + ------- ENDPROC _UPDATEPWM + ------- PROC PWM_CONFIG + ------- DO + D:0008H SYMBOL PWMx_InitStructure + ------- ENDDO + C:001EH LINE# 202 + C:001EH LINE# 203 + C:001EH LINE# 205 + C:0021H LINE# 206 + C:0024H LINE# 207 + C:002AH LINE# 208 + C:0030H LINE# 209 + C:0032H LINE# 210 + BL51 BANKED LINKER/LOCATER V6.22.2.0 04/11/2023 08:44:51 PAGE 17 + + + C:0035H LINE# 211 + C:0038H LINE# 212 + C:003BH LINE# 213 + C:003EH LINE# 214 + C:0041H LINE# 215 + C:004BH LINE# 216 + C:0051H LINE# 217 + ------- ENDPROC PWM_CONFIG + ------- ENDMOD PWM + ------- MODULE ?C?CLDPTR - C:0802H PUBLIC ?C?CLDPTR + C:0C65H PUBLIC ?C?CLDPTR ------- ENDMOD ?C?CLDPTR ------- MODULE ?C?CLDOPTR - C:081BH PUBLIC ?C?CLDOPTR + C:0C7EH PUBLIC ?C?CLDOPTR ------- ENDMOD ?C?CLDOPTR + ------- MODULE ?C?ILDPTR + C:0CABH PUBLIC ?C?ILDPTR + ------- ENDMOD ?C?ILDPTR + ------- MODULE ?C?ILDOPTR - C:0848H PUBLIC ?C?ILDOPTR + C:0CD6H PUBLIC ?C?ILDOPTR ------- ENDMOD ?C?ILDOPTR -Program Size: data=18.0 xdata=0 code=2183 +Program Size: data=79.0 xdata=0 code=3749 LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Listings/main.lst b/Listings/main.lst index 56be677..6820c8b 100644 --- a/Listings/main.lst +++ b/Listings/main.lst @@ -1,4 +1,4 @@ -C51 COMPILER V9.60.0.0 MAIN 04/10/2023 15:47:03 PAGE 1 +C51 COMPILER V9.60.0.0 MAIN 04/10/2023 17:45:23 PAGE 1 C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN @@ -24,22 +24,24 @@ line level source 14 #include "GPIO.h" 15 #include "Exti.h" 16 #include "timer.h" - 17 + 17 #include "PWM.h" 18 /******************** Ö÷º¯Êý***********************/ 19 void main(void) 20 { 21 1 GPIO_config(); 22 1 Exti_config(); 23 1 Timer_config(); - 24 1 EA = 1; - 25 1 while (1) - 26 1 { - 27 2 } - 28 1 } + 24 1 PWM_config(); + 25 1 EA = 1; + 26 1 while (1) + 27 1 { + 28 2 UpdatePwm(PWMB, &PWMB_Duty); + 29 2 } + 30 1 } MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 13 ---- + CODE SIZE = 27 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- diff --git a/Listings/timer.lst b/Listings/timer.lst index 04fb58e..3921754 100644 --- a/Listings/timer.lst +++ b/Listings/timer.lst @@ -1,4 +1,4 @@ -C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 1 +C51 COMPILER V9.60.0.0 TIMER 04/11/2023 08:44:51 PAGE 1 C51 COMPILER V9.60.0.0, COMPILATION OF MODULE TIMER @@ -26,182 +26,253 @@ line level source 16 17 ******************************************/ 18 - 19 #include "timer.h" - 20 u8 KILL_time = 0; - 21 /********************* Timer0ÖжϺ¯Êý************************/ - 22 void timer0_int (void) interrupt TIMER0_VECTOR - 23 { - 24 1 if (KILL_time) - 25 1 { - 26 2 KILL_time--; - 27 2 } - 28 1 } - 29 - 30 /********************* Timer1ÖжϺ¯Êý************************/ - 31 void timer1_int (void) interrupt TIMER1_VECTOR - 32 { - 33 1 - 34 1 } - 35 - 36 /********************* Timer2ÖжϺ¯Êý************************/ - 37 void timer2_int (void) interrupt TIMER2_VECTOR - 38 { - 39 1 - 40 1 } - 41 - 42 /********************* Timer3ÖжϺ¯Êý************************/ - 43 void timer3_int (void) interrupt TIMER3_VECTOR - 44 { - 45 1 - 46 1 } - 47 - 48 /********************* Timer4ÖжϺ¯Êý************************/ - 49 void timer4_int (void) interrupt TIMER4_VECTOR - 50 { - 51 1 - 52 1 } - 53 - 54 - C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 2 + 19 #include "timer.h" + 20 #include "PWM.h" + 21 #include "GPIO.h" + 22 u8 KILL_time = 0; + 23 u8 pwm_direction = 0; + 24 + 25 /********************* Timer0ÖжϺ¯Êý************************/ + 26 void timer0_int(void) interrupt TIMER0_VECTOR + 27 { + 28 1 if (KILL_time) + 29 1 KILL_time--; + 30 1 if (!power3_gpio) + 31 1 { + 32 2 if (pwm_direction) + 33 2 { + 34 3 PWMB_Duty.PWM5_Duty++; + 35 3 if (PWMB_Duty.PWM5_Duty >= 1500) + 36 3 pwm_direction = 0; + 37 3 } + 38 2 else + 39 2 { + 40 3 PWMB_Duty.PWM5_Duty--; + 41 3 if (!PWMB_Duty.PWM5_Duty) + 42 3 pwm_direction = 1; + 43 3 } + 44 2 } + 45 1 else + 46 1 { + 47 2 PWMB_Duty.PWM5_Duty = 1500; + 48 2 } + 49 1 } + 50 + 51 /********************* Timer1ÖжϺ¯Êý************************/ + 52 void timer1_int(void) interrupt TIMER1_VECTOR + 53 { + 54 1 } + C51 COMPILER V9.60.0.0 TIMER 04/11/2023 08:44:51 PAGE 2 - 55 //======================================================================== - 56 // º¯Êý: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) - 57 // ÃèÊö: ¶¨Ê±Æ÷³õʼ»¯³ÌÐò. - 58 // ²ÎÊý: TIMx: ½á¹¹²ÎÊý,Çë²Î¿¼timer.hÀïµÄ¶¨Òå. - 59 // ·µ»Ø: ³É¹¦·µ»Ø0, ¿Õ²Ù×÷·µ»Ø1,´íÎó·µ»Ø2. - 60 // °æ±¾: V1.0, 2012-10-22 - 61 //======================================================================== - 62 u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) + 55 + 56 /********************* Timer2ÖжϺ¯Êý************************/ + 57 void timer2_int(void) interrupt TIMER2_VECTOR + 58 { + 59 1 } + 60 + 61 /********************* Timer3ÖжϺ¯Êý************************/ + 62 void timer3_int(void) interrupt TIMER3_VECTOR 63 { - 64 1 if(TIM > Timer4) return 1; //¿Õ²Ù×÷ - 65 1 - 66 1 if(TIM == Timer0) - 67 1 { - 68 2 Timer0_Stop(); //Í£Ö¹¼ÆÊý - 69 2 if(TIMx->TIM_Interrupt == ENABLE) Timer0_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - 70 2 else Timer0_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - 71 2 if(TIMx->TIM_Priority > Priority_3) return 2; //´íÎó - 72 2 Timer0_Priority(TIMx->TIM_Priority); //Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_ - -3 - 73 2 - 74 2 if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //´íÎó - 75 2 TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; //¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ×°, 3: - - ²»¿ÉÆÁ±Î16λ×Ô¶¯ÖØ×° - 76 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer0_12T(); //12T - 77 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer0_1T(); //1T - 78 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer0_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - 79 2 else Timer0_AsTimer(); //¶¨Ê± - 80 2 if(TIMx->TIM_ClkOut == ENABLE) Timer0_CLKO_Enable(); //Êä³öʱÖÓ - 81 2 else Timer0_CLKO_Disable(); //²»Êä³öʱÖÓ - 82 2 - 83 2 T0_Load(TIMx->TIM_Value); - 84 2 if(TIMx->TIM_Run == ENABLE) Timer0_Run(); //¿ªÊ¼ÔËÐÐ - 85 2 return 0; //³É¹¦ - 86 2 } - 87 1 - 88 1 if(TIM == Timer1) - 89 1 { - 90 2 Timer1_Stop(); //Í£Ö¹¼ÆÊý - 91 2 if(TIMx->TIM_Interrupt == ENABLE) Timer1_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - 92 2 else Timer1_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - 93 2 if(TIMx->TIM_Priority > Priority_3) return 2; //´íÎó - 94 2 Timer1_Priority(TIMx->TIM_Priority); //Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_ - -3 - 95 2 if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //´íÎó - 96 2 TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode<<4); //¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ× - -°, 3: Í£Ö¹¹¤×÷ - 97 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer1_12T(); //12T - 98 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer1_1T(); //1T - 99 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer1_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - 100 2 else Timer1_AsTimer(); //¶¨Ê± - 101 2 if(TIMx->TIM_ClkOut == ENABLE) Timer1_CLKO_Enable(); //Êä³öʱÖÓ - 102 2 else Timer1_CLKO_Disable(); //²»Êä³öʱÖÓ - 103 2 - 104 2 T1_Load(TIMx->TIM_Value); - 105 2 if(TIMx->TIM_Run == ENABLE) Timer1_Run(); //¿ªÊ¼ÔËÐÐ - 106 2 return 0; //³É¹¦ - 107 2 } - 108 1 - 109 1 if(TIM == Timer2) //Timer2,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - 110 1 { - 111 2 Timer2_Stop(); //Í£Ö¹¼ÆÊý - 112 2 if(TIMx->TIM_Interrupt == ENABLE) Timer2_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 3 + 64 1 } + 65 + 66 /********************* Timer4ÖжϺ¯Êý************************/ + 67 void timer4_int(void) interrupt TIMER4_VECTOR + 68 { + 69 1 } + 70 + 71 //======================================================================== + 72 // º¯Êý: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) + 73 // ÃèÊö: ¶¨Ê±Æ÷³õʼ»¯³ÌÐò. + 74 // ²ÎÊý: TIMx: ½á¹¹²ÎÊý,Çë²Î¿¼timer.hÀïµÄ¶¨Òå. + 75 // ·µ»Ø: ³É¹¦·µ»Ø0, ¿Õ²Ù×÷·µ»Ø1,´íÎó·µ»Ø2. + 76 // °æ±¾: V1.0, 2012-10-22 + 77 //======================================================================== + 78 u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) + 79 { + 80 1 if (TIM > Timer4) + 81 1 return 1; // ¿Õ²Ù×÷ + 82 1 + 83 1 if (TIM == Timer0) + 84 1 { + 85 2 Timer0_Stop(); // Í£Ö¹¼ÆÊý + 86 2 if (TIMx->TIM_Interrupt == ENABLE) + 87 2 Timer0_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + 88 2 else + 89 2 Timer0_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + 90 2 if (TIMx->TIM_Priority > Priority_3) + 91 2 return 2; // ´íÎó + 92 2 Timer0_Priority(TIMx->TIM_Priority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Pr + -iority_3 + 93 2 + 94 2 if (TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) + 95 2 return 2; // ´íÎó + 96 2 TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; // ¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯Ö + -Ø×°, 3: ²»¿ÉÆÁ±Î16λ×Ô¶¯ÖØ×° + 97 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + 98 2 Timer0_12T(); // 12T + 99 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + 100 2 Timer0_1T(); // 1T + 101 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + 102 2 Timer0_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + 103 2 else + 104 2 Timer0_AsTimer(); // ¶¨Ê± + 105 2 if (TIMx->TIM_ClkOut == ENABLE) + 106 2 Timer0_CLKO_Enable(); // Êä³öʱÖÓ + 107 2 else + 108 2 Timer0_CLKO_Disable(); // ²»Êä³öʱÖÓ + 109 2 + 110 2 T0_Load(TIMx->TIM_Value); + 111 2 if (TIMx->TIM_Run == ENABLE) + 112 2 Timer0_Run(); // ¿ªÊ¼ÔËÐÐ + 113 2 return 0; // ³É¹¦ + 114 2 } + C51 COMPILER V9.60.0.0 TIMER 04/11/2023 08:44:51 PAGE 3 - 113 2 else Timer2_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - 114 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - 115 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer2_12T(); //12T - 116 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer2_1T(); //1T - 117 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer2_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - 118 2 else Timer2_AsTimer(); //¶¨Ê± - 119 2 if(TIMx->TIM_ClkOut == ENABLE) Timer2_CLKO_Enable(); //Êä³öʱÖÓ - 120 2 else Timer2_CLKO_Disable(); //²»Êä³öʱÖÓ - 121 2 - 122 2 T2_Load(TIMx->TIM_Value); - 123 2 if(TIMx->TIM_Run == ENABLE) Timer2_Run(); //¿ªÊ¼ÔËÐÐ - 124 2 return 0; //³É¹¦ - 125 2 } - 126 1 - 127 1 if(TIM == Timer3) //Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - 128 1 { - 129 2 Timer3_Stop(); //Í£Ö¹¼ÆÊý - 130 2 if(TIMx->TIM_Interrupt == ENABLE) Timer3_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - 131 2 else Timer3_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - 132 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - 133 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer3_12T(); //12T - 134 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer3_1T(); //1T - 135 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer3_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - 136 2 else Timer3_AsTimer(); //¶¨Ê± - 137 2 if(TIMx->TIM_ClkOut == ENABLE) Timer3_CLKO_Enable(); //Êä³öʱÖÓ - 138 2 else Timer3_CLKO_Disable(); //²»Êä³öʱÖÓ - 139 2 - 140 2 T3_Load(TIMx->TIM_Value); - 141 2 if(TIMx->TIM_Run == ENABLE) Timer3_Run(); //¿ªÊ¼ÔËÐÐ - 142 2 return 0; //³É¹¦ - 143 2 } - 144 1 - 145 1 if(TIM == Timer4) //Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - 146 1 { - 147 2 Timer4_Stop(); //Í£Ö¹¼ÆÊý - 148 2 if(TIMx->TIM_Interrupt == ENABLE) Timer4_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - 149 2 else Timer4_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - 150 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - 151 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer4_12T(); //12T - 152 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer4_1T(); //1T - 153 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer4_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - 154 2 else Timer4_AsTimer(); //¶¨Ê± - 155 2 if(TIMx->TIM_ClkOut == ENABLE) Timer4_CLKO_Enable(); //Êä³öʱÖÓ - 156 2 else Timer4_CLKO_Disable(); //²»Êä³öʱÖÓ - 157 2 - 158 2 T4_Load(TIMx->TIM_Value); - 159 2 if(TIMx->TIM_Run == ENABLE) Timer4_Run(); //¿ªÊ¼ÔËÐÐ - 160 2 return 0; //³É¹¦ - 161 2 } - 162 1 return 2; //´íÎó - 163 1 } - 164 /************************ ?¡§?¡À?¡Â???? ****************************/ - 165 void Timer_config(void) - 166 { - 167 1 TIM_InitTypeDef TIM_InitStructure; - 168 1 TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; - 169 1 TIM_InitStructure.TIM_Priority = Priority_0; - 170 1 TIM_InitStructure.TIM_Interrupt = ENABLE; - 171 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; - 172 1 TIM_InitStructure.TIM_ClkOut = DISABLE; - 173 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL); - 174 1 TIM_InitStructure.TIM_Run = ENABLE; - C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 4 + 115 1 + 116 1 if (TIM == Timer1) + 117 1 { + 118 2 Timer1_Stop(); // Í£Ö¹¼ÆÊý + 119 2 if (TIMx->TIM_Interrupt == ENABLE) + 120 2 Timer1_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + 121 2 else + 122 2 Timer1_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + 123 2 if (TIMx->TIM_Priority > Priority_3) + 124 2 return 2; // ´íÎó + 125 2 Timer1_Priority(TIMx->TIM_Priority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Pr + -iority_3 + 126 2 if (TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) + 127 2 return 2; // ´íÎó + 128 2 TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode << 4); // ¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8 + -λ×Ô¶¯ÖØ×°, 3: Í£Ö¹¹¤×÷ + 129 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + 130 2 Timer1_12T(); // 12T + 131 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + 132 2 Timer1_1T(); // 1T + 133 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + 134 2 Timer1_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + 135 2 else + 136 2 Timer1_AsTimer(); // ¶¨Ê± + 137 2 if (TIMx->TIM_ClkOut == ENABLE) + 138 2 Timer1_CLKO_Enable(); // Êä³öʱÖÓ + 139 2 else + 140 2 Timer1_CLKO_Disable(); // ²»Êä³öʱÖÓ + 141 2 + 142 2 T1_Load(TIMx->TIM_Value); + 143 2 if (TIMx->TIM_Run == ENABLE) + 144 2 Timer1_Run(); // ¿ªÊ¼ÔËÐÐ + 145 2 return 0; // ³É¹¦ + 146 2 } + 147 1 + 148 1 if (TIM == Timer2) // Timer2,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + 149 1 { + 150 2 Timer2_Stop(); // Í£Ö¹¼ÆÊý + 151 2 if (TIMx->TIM_Interrupt == ENABLE) + 152 2 Timer2_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + 153 2 else + 154 2 Timer2_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + 155 2 if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + 156 2 return 2; + 157 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + 158 2 Timer2_12T(); // 12T + 159 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + 160 2 Timer2_1T(); // 1T + 161 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + 162 2 Timer2_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + 163 2 else + 164 2 Timer2_AsTimer(); // ¶¨Ê± + 165 2 if (TIMx->TIM_ClkOut == ENABLE) + 166 2 Timer2_CLKO_Enable(); // Êä³öʱÖÓ + 167 2 else + 168 2 Timer2_CLKO_Disable(); // ²»Êä³öʱÖÓ + 169 2 + 170 2 T2_Load(TIMx->TIM_Value); + 171 2 if (TIMx->TIM_Run == ENABLE) + 172 2 Timer2_Run(); // ¿ªÊ¼ÔËÐÐ + 173 2 return 0; // ³É¹¦ + 174 2 } + C51 COMPILER V9.60.0.0 TIMER 04/11/2023 08:44:51 PAGE 4 - 175 1 Timer_Inilize(Timer0,&TIM_InitStructure); - 176 1 } + 175 1 + 176 1 if (TIM == Timer3) // Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + 177 1 { + 178 2 Timer3_Stop(); // Í£Ö¹¼ÆÊý + 179 2 if (TIMx->TIM_Interrupt == ENABLE) + 180 2 Timer3_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + 181 2 else + 182 2 Timer3_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + 183 2 if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + 184 2 return 2; + 185 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + 186 2 Timer3_12T(); // 12T + 187 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + 188 2 Timer3_1T(); // 1T + 189 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + 190 2 Timer3_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + 191 2 else + 192 2 Timer3_AsTimer(); // ¶¨Ê± + 193 2 if (TIMx->TIM_ClkOut == ENABLE) + 194 2 Timer3_CLKO_Enable(); // Êä³öʱÖÓ + 195 2 else + 196 2 Timer3_CLKO_Disable(); // ²»Êä³öʱÖÓ + 197 2 + 198 2 T3_Load(TIMx->TIM_Value); + 199 2 if (TIMx->TIM_Run == ENABLE) + 200 2 Timer3_Run(); // ¿ªÊ¼ÔËÐÐ + 201 2 return 0; // ³É¹¦ + 202 2 } + 203 1 + 204 1 if (TIM == Timer4) // Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + 205 1 { + 206 2 Timer4_Stop(); // Í£Ö¹¼ÆÊý + 207 2 if (TIMx->TIM_Interrupt == ENABLE) + 208 2 Timer4_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + 209 2 else + 210 2 Timer4_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + 211 2 if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + 212 2 return 2; + 213 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + 214 2 Timer4_12T(); // 12T + 215 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + 216 2 Timer4_1T(); // 1T + 217 2 if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + 218 2 Timer4_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + 219 2 else + 220 2 Timer4_AsTimer(); // ¶¨Ê± + 221 2 if (TIMx->TIM_ClkOut == ENABLE) + 222 2 Timer4_CLKO_Enable(); // Êä³öʱÖÓ + 223 2 else + 224 2 Timer4_CLKO_Disable(); // ²»Êä³öʱÖÓ + 225 2 + 226 2 T4_Load(TIMx->TIM_Value); + 227 2 if (TIMx->TIM_Run == ENABLE) + 228 2 Timer4_Run(); // ¿ªÊ¼ÔËÐÐ + 229 2 return 0; // ³É¹¦ + 230 2 } + 231 1 return 2; // ´íÎó + 232 1 } + 233 /************************ ?¡§?¡À?¡Â???? ****************************/ + 234 void Timer_config(void) + 235 { + 236 1 TIM_InitTypeDef TIM_InitStructure; + C51 COMPILER V9.60.0.0 TIMER 04/11/2023 08:44:51 PAGE 5 + + 237 1 TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; + 238 1 TIM_InitStructure.TIM_Priority = Priority_0; + 239 1 TIM_InitStructure.TIM_Interrupt = ENABLE; + 240 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; + 241 1 TIM_InitStructure.TIM_ClkOut = DISABLE; + 242 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL); + 243 1 TIM_InitStructure.TIM_Run = ENABLE; + 244 1 Timer_Inilize(Timer0, &TIM_InitStructure); + 245 1 } MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 862 ---- + CODE SIZE = 920 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = 1 8 + DATA SIZE = 2 8 IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. diff --git a/Objects/Exti.obj b/Objects/Exti.obj index 7572ce6..a944fe2 100644 Binary files a/Objects/Exti.obj and b/Objects/Exti.obj differ diff --git a/Objects/GPIO.__i b/Objects/GPIO.__i deleted file mode 100644 index 13dec64..0000000 --- a/Objects/GPIO.__i +++ /dev/null @@ -1 +0,0 @@ -"mycode\GPIO.c" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\GPIO.lst) TABS (2) OBJECT(.\Objects\GPIO.obj) \ No newline at end of file diff --git a/Objects/GPIO.obj b/Objects/GPIO.obj index d203d77..5cb04f5 100644 Binary files a/Objects/GPIO.obj and b/Objects/GPIO.obj differ diff --git a/Objects/PWM.__i b/Objects/PWM.__i new file mode 100644 index 0000000..471f250 --- /dev/null +++ b/Objects/PWM.__i @@ -0,0 +1 @@ +"mycode\PWM.C" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\PWM.lst) TABS (2) OBJECT(.\Objects\PWM.obj) \ No newline at end of file diff --git a/Objects/PWM.obj b/Objects/PWM.obj new file mode 100644 index 0000000..9617844 Binary files /dev/null and b/Objects/PWM.obj differ diff --git a/Objects/STARTUP.obj b/Objects/STARTUP.obj index e0c8321..c4d796a 100644 Binary files a/Objects/STARTUP.obj and b/Objects/STARTUP.obj differ diff --git a/Objects/kill_control b/Objects/kill_control index ddc36b2..a713d71 100644 Binary files a/Objects/kill_control and b/Objects/kill_control differ diff --git a/Objects/kill_control.build_log.htm b/Objects/kill_control.build_log.htm index f4fa3cd..15bf701 100644 --- a/Objects/kill_control.build_log.htm +++ b/Objects/kill_control.build_log.htm @@ -23,12 +23,10 @@ Project File Date: 04/10/2023

Output:

Build target 'Target 1' -compiling Exti.c... -compiling GPIO.c... -compiling main.c... compiling timer.c... +compiling PWM.C... linking... -Program Size: data=18.0 xdata=0 code=2183 +Program Size: data=79.0 xdata=0 code=3749 creating hex file from ".\Objects\kill_control"... ".\Objects\kill_control" - 0 Error(s), 0 Warning(s). Build Time Elapsed: 00:00:00 diff --git a/Objects/kill_control.hex b/Objects/kill_control.hex index 7e28a31..4496c57 100644 --- a/Objects/kill_control.hex +++ b/Objects/kill_control.hex @@ -1,163 +1,264 @@ -:030000000207767E -:0C077600787FE4F6D8FD7581100207BD05 -:0300030002006692 -:10006600C0E030B20CE510700BB290B291B2928043 -:0700760003751032D0E032E7 -:0300130002000ADE +:03000000020D0EE0 +:0C0D0E00787FE4F6D8FD75814D020D558C +:03000300020EA446 +:100EA400C0E030B20CE54C700BB290B291B29280BB +:070EB40003754C32D0E0325F +:03001300020006E2 +:0100060032C7 +:03005300020007A1 +:0100070032C6 +:03005B0002000898 +:0100080032C5 +:030083000200096F +:0100090032C4 +:100B3D00EFD394047480948040037F0122EF7061A1 +:100B4D00C289900002120C7E64017004D2A880024A +:100B5D00C2A8900001120C7EFED394037480948081 +:100B6D0040037F0222EEFD7C00700553B7FEC2B834 +:100B7D00ED64014C700553B7FED2B8ED64024C70B4 +:100B8D000543B701C2B8ED64034C700543B701D2FC +:100B9D00B8120C6564017004D2888002C2887F008F +:100BAD0022EF64017061C28B900002120C7E640111 +:100BBD007004D2AA8002C2AA900001120C7EFED34C +:100BCD0094037480948040037F0222EEFD7C0070BC +:100BDD000553B7FBC2BAED64014C700553B7FBD298 +:100BED00BAED64024C700543B704C2BAED64034C10 +:100BFD00700543B704D2BA120C6564017004D28A31 +:100C0D008002C28A7F0022EF6402701590000212EA +:100C1D000C7E64017005438F108003538FEF7F00AE +:100C2D0022EF64037015900002120C7E64017005B2 +:100C3D00438F208003538FDF7F0022EF64047015F4 +:100C4D00900002120C7E64017005438F40800353A7 +:080C5D008FBF7F00227F0222FD +:10008600750A01E4F508F509FB7A007908FF020B09 +:010096003D2C +:1008C600EFD394077480948040037F0122120C6555 +:1008D600FED394037480948040037F0222EF704419 +:1008E600EE700B900001120C7EF452935294120C8F +:1008F600656401700B900001120C7E4293F45294D1 +:10090600120C65FE6402700A900001120C7E42937E +:100916004294EE6403700D900001120C7EFEF452B8 +:1009260093EE4294EF64017046120C65FE700B90D4 +:100936000001120C7EF452915292EE6401700B90FB +:100946000001120C7E4291F45292120C6564027000 +:100956000A900001120C7E42914292120C656403C9 +:10096600700D900001120C7EFEF45291EE4292EF51 +:1009760064027046120C65FE700B900001120C7E2C +:10098600F452955296EE6401700B900001120C7EA3 +:100996004295F45296120C656402700A9000011298 +:1009A6000C7E42954296120C656403700D90000110 +:1009B600120C7EFEF45295EE4296EF6403704612D8 +:1009C6000C65FE700B900001120C7EF452B152B20F +:1009D600EE6401700B900001120C7E42B1F452B22B +:1009E600120C656402700A900001120C7E42B1423C +:1009F600B2120C656403700D900001120C7EFEF4B9 +:100A060052B1EE42B2EF64047046120C65FE700BF2 +:100A1600900001120C7EF452B352B4EE6401700BD6 +:100A2600900001120C7E42B3F452B4120C656402BB +:100A3600700A900001120C7E42B342B4120C656437 +:100A460003700D900001120C7EFEF452B3EE42B418 +:100A5600EF64057046120C65FE700B900001120CD7 +:100A66007EF452C952CAEE6401700B900001120C5A +:100A76007E42C9F452CA120C656402700A900001E3 +:100A8600120C7E42C942CA120C656403700D9000B6 +:100A960001120C7EFEF452C9EE42CAEF640670469D +:100AA600120C65FE700B900001120C7EF452CB52B4 +:100AB600CCEE6401700B900001120C7E42CBF45216 +:100AC600CC120C656402700A900001120C7E42CBB7 +:100AD60042CC120C656403700D900001120C7EFE70 +:100AE600F452CBEE42CCEF64077049120C65FF7EE0 +:100AF60000700B900001120C7EF452E152E2EF649A +:100B0600014E700B900001120C7E42E1F452E2128B +:100B16000C656402700A900001120C7E42E142E20A +:100B2600120C656403700D900001120C7EFFF452E6 +:070B3600E1EF42E27F002223 +:100E6400750904E4F508FB7A0079087F031208C6C3 +:100E74007509077508037F011208C6C290C291C2A2 +:010E840092DB +:010E8500224A +:10006600120E64120086120E8612001ED2AF7B009C +:0B0076007A00793C7F02120D9A80F3A3 +:060EBB00014C00014D0096 +:03000B00020E1FC3 +:100E1F00C0E0C0D0E54C6002154C20922DE54D602E +:100E2F00160545E54570020544C394DCE544940579 +:100E3F00401E754D008019E545154570021544E5B6 +:100E4F00454544700B754D0180067544057545DCAD +:050E5F00D0D0D0E0320C +:03001B0002000AD6 :01000A0032C3 -:0300530002000E9A +:0300630002000E8A :01000E0032BF -:03005B0002000F91 +:03009B0002000F51 :01000F0032BE -:0300830002001068 +:0300A30002001048 :0100100032BD -:10064E00EFD394047480948040037F0122EF706195 -:10065E00C28990000212081B64017004D2A88002A5 -:10066E00C2A890000112081BFED3940374809480DC -:10067E0040037F0222EEFD7C00700553B7FEC2B828 -:10068E00ED64014C700553B7FED2B8ED64024C70A8 -:10069E000543B701C2B8ED64034C700543B701D2F0 -:1006AE00B812080264017004D2888002C2887F00EA -:1006BE0022EF64017061C28B90000212081B64016C -:1006CE007004D2AA8002C2AA90000112081BFED3A7 -:1006DE0094037480948040037F0222EEFD7C0070B0 -:1006EE000553B7FBC2BAED64014C700553B7FBD28C -:1006FE00BAED64024C700543B704C2BAED64034C04 -:10070E00700543B704D2BA12080264017004D28A8B -:10071E008002C28A7F0022EF6402701590000212DE -:10072E00081B64017005438F108003538FEF7F0009 -:10073E0022EF6403701590000212081B640170050D -:10074E00438F208003538FDF7F0022EF64047015E8 -:10075E0090000212081B64017005438F4080035302 -:08076E008FBF7F00227F0222F1 -:10004000750A01E4F508F509FB7A007908FF020654 -:010050004E61 -:1003D700EFD394077480948040037F0122120802B0 -:1003E700FED394037480948040037F0222EF70440D -:1003F700EE700B90000112081BF4529352941208EE -:10040700026401700B90000112081B4293F452948E -:10041700120802FE6402700A90000112081B429340 -:100427004294EE6403700D90000112081BFEF45213 -:1004370093EE4294EF64017046120802FE700B902F -:10044700000112081BF452915292EE6401700B9056 -:10045700000112081B4291F45292120802640270C2 -:100467000A90000112081B4291429212080264038B -:10047700700D90000112081BFEF45291EE4292EFAC -:1004870064027046120802FE700B90000112081BEE -:10049700F452955296EE6401700B90000112081BFE -:1004A7004295F452961208026402700A90000112F3 -:1004B700081B429542961208026403700D900001D2 -:1004C70012081BFEF45295EE4296EF640370461233 -:1004D7000802FE700B90000112081BF452B152B2D1 -:1004E700EE6401700B90000112081B42B1F452B286 -:1004F7001208026402700A90000112081B42B142FE -:10050700B21208026403700D90000112081BFEF47A -:1005170052B1EE42B2EF64047046120802FE700B4D -:1005270090000112081BF452B352B4EE6401700B31 -:1005370090000112081B42B3F452B412080264027D -:10054700700A90000112081B42B342B412080264F9 -:1005570003700D90000112081BFEF452B3EE42B473 -:10056700EF64057046120802FE700B900001120836 -:100577001BF452C952CAEE6401700B9000011208B5 -:100587001B42C9F452CA1208026402700A900001A1 -:1005970012081B42C942CA1208026403700D900078 -:1005A7000112081BFEF452C9EE42CAEF64067046F8 -:1005B700120802FE700B90000112081BF452CB5276 -:1005C700CCEE6401700B90000112081B42CBF45271 -:1005D700CC1208026402700A90000112081B42CB79 -:1005E70042CC1208026403700D90000112081BFE32 -:1005F700F452CBEE42CCEF64077049120802FF7E3B -:1006070000700B90000112081BF452E152E2EF64F4 -:10061700014E700B90000112081B42E1F452E212E6 -:1006270008026402700A90000112081B42E142E2CC -:100637001208026403700D90000112081BFFF452A8 -:07064700E1EF42E27F002217 -:10001E00750904E4F508FB7A0079087F031203D70B -:10002E007509077508037F011203D7C290C291C2EA -:01003E00922F -:01003F00229E -:0D00860012001E120040120880D2AF80FE52 -:03000600011000E6 -:03000B0002089E4A -:0B089E00C0E0E51060021510D0E03251 -:03001B00020011CF -:0100110032BC -:0300630002001286 -:0100120032BB -:03009B000200164A -:0100160032B7 -:0300A30002001741 -:0100170032B6 -:1000A600AD07EDD394047480948040037F0122ED64 -:1000B600600302017BC28C90000212081B6401706F -:1000C60004D2A98002C2A990000112081BFED39493 -:1000D600037480948040037F0222EEFF7E00700549 -:1000E60053B7FDC2B9EF64014E700553B7FDD2B9DF -:1000F600EF64024E700543B702C2B9EF64034E7057 -:100106000543B702D2B9120802FEC3940374809461 -:100116008040037F0222E58954FC4EF58990000356 -:1001260012081BFF7E0064017003538E7FEF4E7032 -:1001360003438E80EF64024E7005438904800353A7 -:1001460089FB90000412081B64017005438F01802F -:1001560003538FFE900005120848E5F0F58C9000D9 -:1001660005120848F58A90000712081B6401700200 -:10017600D28C7F0022ED64016003020248C28E9099 -:10018600000212081B64017004D2AB8002C2AB905D -:10019600000112081BFED394037480948040037FF1 -:1001A6000222EEFF7E00700553B7F7C2BBEF640173 -:1001B6004E700553B7F7D2BBEF64024E700543B7D6 -:1001C60008C2BBEF64034E700543B708D2BB1208E2 -:1001D60002FEC394037480948040037F0222EEC41F -:1001E60054F0FFE58954CF4FF58990000312081BA0 -:1001F600FF7E0064017003538EBFEF4E7003438E83 -:1002060040EF64024E700543894080035389BF90D6 -:10021600000412081B64017005438F028003538F8C -:10022600FD900005120848E5F0F58D9000051208CE -:1002360048F58B90000712081B64017002D28E7F6E -:100246000022ED6402707C538EEF90000212081BB0 -:100256006401700543AF04800353AFFB90000312A3 -:10026600081BFED394027480948040037F0222EE22 -:10027600FF7E0064017003538EFBEF4E7003438EC6 -:1002860004EF64024E7005438E088003538EF79088 -:10029600000412081B64017005438F048003538F0A -:1002A600FB900005120848E5F0F5D6900005120807 -:1002B60048F5D790000712081B64017003438E109F -:1002C6007F0022ED6403707C53D1F7900002120880 -:1002D6001B6401700543AF20800353AFDF9000031A -:1002E60012081BFED394027480948040037F02227E -:1002F600EEFF7E006401700353D1FDEF4E700343A1 -:10030600D102EF64024E700543D104800353D1FB42 -:1003160090000412081B6401700543D10180035349 -:10032600D1FE900005120848E5F0F5D490000512BC -:100336000848F5D590000712081B6401700343D1E5 -:10034600087F0022ED640460030203D453D17F903A -:10035600000212081B6401700543AF40800353AFCF -:10036600BF90000312081BFD7C00D3940274809496 -:100376008040037F0222ED64014C700353D1DF906D -:10038600000312081B700343D12090000312081BC0 -:100396006402700543D140800353D1BF900004121C -:1003A600081B6401700543D110800353D1EF900000 -:1003B60005120848FDACF0ECF5D2AF058FD39000DE -:1003C6000712081B6401700343D1807F00227F025D -:0103D6002204 -:10088000E4F508F509750A01F50BF50C750DD4753D -:0E0890000ECD750F01FB7A007908FF0200A65D -:10078200020086E493A3F8E493A34003F68001F207 -:1007920008DFF48029E493A3F85407240CC8C33378 -:1007A200C4540F4420C8834004F456800146F6DF47 -:1007B200E4800B0102040810204080900006E47ED1 -:1007C200019360BCA3FF543F30E509541FFEE4933C -:1007D200A360010ECF54C025E060A840B8E493A303 -:1007E200FAE493A3F8E493A3C8C582C8CAC583CA2E -:1007F200F0A3C8C582C8CAC583CADFE9DEE780BEE6 -:0100090000F6 -:10080200BB010689828A83E0225002E722BBFE02F4 -:09081200E32289828A83E4932227 -:10081B00BB010CE58229F582E5833AF583E0225092 -:10082B0006E92582F8E622BBFE06E92582F8E222DC -:0D083B00E58229F582E5833AF583E49322F6 -:10084800BB0110E58229F582E5833AF583E0F5F0EE -:10085800A3E0225009E92582F886F008E622BBFECB -:100868000AE92582F8E2F5F008E222E5832AF58311 -:08087800E993F5F0A3E99322D6 +:10059500AD07EDD394047480948040037F0122ED70 +:1005A500600302066AC28C900002120C7E64017020 +:1005B50004D2A98002C2A9900001120C7EFED39438 +:1005C500037480948040037F0222EEFF7E00700555 +:1005D50053B7FDC2B9EF64014E700553B7FDD2B9EB +:1005E500EF64024E700543B702C2B9EF64034E7063 +:1005F5000543B702D2B9120C65FEC3940374809407 +:100605008040037F0222E58954FC4EF58990000362 +:10061500120C7EFF7E0064017003538E7FEF4E70D7 +:1006250003438E80EF64024E7005438904800353B3 +:1006350089FB900004120C7E64017005438F0180D4 +:1006450003538FFE900005120CD6E5F0F58C900053 +:1006550005120CD6F58A900007120C7E6401700213 +:10066500D28C7F0022ED64016003020737C28E90B1 +:100675000002120C7E64017004D2AB8002C2AB9002 +:100685000001120C7EFED394037480948040037F96 +:100695000222EEFF7E00700553B7F7C2BBEF64017F +:1006A5004E700553B7F7D2BBEF64024E700543B7E2 +:1006B50008C2BBEF64034E700543B708D2BB120CEA +:1006C50065FEC394037480948040037F0222EEC4C8 +:1006D50054F0FFE58954CF4FF589900003120C7E45 +:1006E500FF7E0064017003538EBFEF4E7003438E8F +:1006F50040EF64024E700543894080035389BF90E3 +:100705000004120C7E64017005438F028003538F31 +:10071500FD900005120CD6E5F0F58D900005120C44 +:10072500D6F58B900007120C7E64017002D28E7F85 +:100735000022ED6402707C538EEF900002120C7E55 +:100745006401700543AF04800353AFFB90000312AF +:100755000C7EFED394027480948040037F0222EEC7 +:10076500FF7E0064017003538EFBEF4E7003438ED2 +:1007750004EF64024E7005438E088003538EF79094 +:100785000004120C7E64017005438F048003538FAF +:10079500FB900005120CD6E5F0F5D6900005120C7D +:1007A500D6F5D7900007120C7E64017003438E10B6 +:1007B5007F0022ED6403707C53D1F7900002120C88 +:1007C5007E6401700543AF20800353AFDF900003C3 +:1007D500120C7EFED394027480948040037F022223 +:1007E500EEFF7E006401700353D1FDEF4E700343AD +:1007F500D102EF64024E700543D104800353D1FB4F +:10080500900004120C7E6401700543D101800353EE +:10081500D1FE900005120CD6E5F0F5D49000051236 +:100825000CD6F5D5900007120C7E6401700343D1F8 +:10083500087F0022ED640460030208C353D17F9052 +:100845000002120C7E6401700543AF40800353AF74 +:10085500BF900003120C7EFD7C00D394027480943B +:100865008040037F0222ED64014C700353D1DF9079 +:100875000003120C7E700343D120900003120C7EFE +:100885006402700543D140800353D1BF9000041228 +:100895000C7E6401700543D110800353D1EF9000A5 +:1008A50005120CD6FDACF0ECF5D2AF058FD3900058 +:1008B50007120C7E6401700343D1807F00227F0202 +:0108C5002210 +:100E8600E4F508F509750A01F50BF50C750DD47531 +:0E0E96000ECD750F01FB7A007908FF0205955D +:1000A600EF640160030203A643BA80900029120C94 +:1000B6007EFD7C00D3940374809480502DED7006F1 +:1000C60053B6FB53B5FBED64014C700653B6FB43C8 +:1000D600B504ED64024C700643B60453B5FBED64FB +:1000E600034C700643B60443B50490002A120C7EF6 +:1000F600FD7C00D3940374809480502DED700653DC +:10010600B6F753B5F7ED64014C700653B6F743B531 +:1001160008ED64024C700643B60853B5F7ED640368 +:100126004C700643B60843B50890002B120C7EFDB2 +:100136007C00D3940374809480502DED700653EEAA +:10014600EF53DFEFED64014C700653EEEF43DF1023 +:10015600ED64024C700643EE1053DFEFED64034C82 +:10016600700643EE1043DF1090002C120C7EFD7CCF +:1001760000D3940374809480502DED700653EEDF07 +:1001860053DFDFED64014C700653EEDF43DF20EDF5 +:1001960064024C700643EE2053DFDFED64034C70BF +:1001A6000643EE2043DF2090FECCE4F0A3F0120CD1 +:1001B60065FE90FEC8E0548F4EF0900001120C7E52 +:1001C600FE90FEC9E0548F4EF0900002120C7EFEA7 +:1001D60090FECAE0548F4EF0900003120C7EFE9003 +:1001E600FECBE0548F4EF0900027120C7E640190F7 +:1001F600FEC87006E04408F08004E054F7F0900072 +:1002060028120C7E640190FEC87006E04404F0805B +:1002160004E054FBF090001B120C7E640190FECCAF +:100226007006E04401F08004E054FEF090001C12D9 +:100236000C7E640190FECC7006E04404F08004E07D +:1002460054FBF090001D120C7E640190FECC7006EB +:10025600E04410F08004E054EFF090001E120C7E93 +:10026600640190FECC7006E04440F08004E054BF88 +:10027600F090001F120C7E640190FECD7006E044E3 +:1002860001F08004E054FEF0900020120C7E640120 +:1002960090FECD7006E04404F08004E054FBF0903C +:1002A6000021120C7E640190FECD7006E04410F031 +:1002B6008004E054EFF0900022120C7E640190FE60 +:1002C600CD7006E04440F08004E054BFF090000892 +:1002D600120CD6FD90FED2E5F0F0A3EDF090000AE8 +:1002E600120CD6FD90FED5E5F0F0A3EDF090000CD3 +:1002F600120CD6FD90FED7E5F0F0A3EDF090000EBF +:10030600120CD6FD90FED9E5F0F0A3EDF0900010AA +:10031600120CD6FD90FEDBE5F0F0A3EDF090002F79 +:10032600120C7E90FEC17007E054FEFEF08005E0E0 +:100336004401FEF090FEC1EEF0900030120C7E906B +:10034600FEB2F090002E120C7E90FEB1F090001AD4 +:10035600120C7E90FEDEF0900032120C7E6401904C +:10036600FEDD7006E04410F08004E054EFF09000EB +:1003760033120C7E640190FEDD7006E04480F0804E +:1003860004E0547FF0900031120C7E640190FEC0B0 +:100396007007E04401F002058CE054FEF002058C83 +:1003A600EF6402600302059243BA8090002D120C9E +:1003B6007EFF7E00D3940374809480502DEF7006E8 +:1003C60053EEBF53DFBFEF64014E700653EEBF43DB +:1003D600DF40EF64024E700643EE4053DFBFEF642A +:1003E600034E700643EE4043DF4090FEECE4F0A37C +:1003F600F0900004120C7EFF90FEE8E0548F4FF060 +:10040600900005120C7EFF90FEE9E0548F4FF090AD +:100416000006120C7EFF90FEEAE0548F4FF090002B +:1004260007120C7EFF90FEEBE0548F4FF0900027F2 +:10043600120C7E640190FEE87006E04408F0800429 +:10044600E054F7F0900028120C7E640190FEE870EC +:1004560006E04404F08004E054FBF0900023120C04 +:100466007E640190FEEC7006E04401F08004E054E6 +:10047600FEF0900024120C7E640190FEEC7006E003 +:100486004410F08004E054EFF0900025120C7E64D6 +:100496000190FEED7006E04401F08004E054FEF0A9 +:1004A600900026120C7E640190FEED7006E044106A +:1004B600F08004E054EFF0900008120CD6FF90FE96 +:1004C600F2E5F0F0A3EFF0900012120CD6FF90FECA +:1004D600F5E5F0F0A3EFF0900014120CD6FF90FEB5 +:1004E600F7E5F0F0A3EFF0900016120CD6FF90FEA1 +:1004F600F9E5F0F0A3EFF0900018120CD6FF90FE8D +:10050600FBE5F0F0A3EFF090002F120C7E90FEC1F9 +:100516007007E054FEFFF08005E04401FFF090FE16 +:10052600C1EFF0900030120C7E90FEB6F090002ED7 +:10053600120C7E90FEB5F090001A120C7E90FEFE14 +:10054600F0900032120C7E640190FEFD7006E044CD +:1005560010F08004E054EFF0900033120C7E64013A +:1005660090FEFD7006E04480F08004E0547FF09039 +:100576000031120C7E640190FEE07006E04401F04A +:0F0586008004E054FEF053BA7F7F00227F0222F0 +:100D9A0043BA80EF64017039120CABFF90FED5E5BF +:100DAA00F0F0A3EFF0900002120CD6FF90FED7E508 +:100DBA00F0F0A3EFF0900004120CD6FF90FED9E5F4 +:100DCA00F0F0A3EFF0900006120CD6FF90FEDB8045 +:100DDA003A900008120CD6FF90FEF5E5F0F0A3EF6A +:100DEA00F090000A120CD6FF90FEF7E5F0F0A3EFA0 +:100DFA00F090000C120CD6FF90FEF9E5F0F0A3EF8C +:100E0A00F090000E120CD6FF90FEFBE5F0F0A3EF77 +:050E1A00F053BA7F2235 +:10001E00750C60E4F5357510057511DC85441A858F +:10002E00451BF522753601753801752B01753B019F +:10003E00753901FB7A0079087F021200A675440516 +:03004E007545DC19 +:01005100228C +:100D1A00020066E493A3F8E493A34003F68001F289 +:100D2A0008DFF48029E493A3F85407240CC8C333DA +:100D3A00C4540F4420C8834004F456800146F6DFA9 +:100D4A00E4800B0102040810204080900EBBE47E70 +:100D5A00019360BCA3FF543F30E509541FFEE4939E +:100D6A00A360010ECF54C025E060A840B8E493A365 +:100D7A00FAE493A3F8E493A3C8C582C8CAC583CA90 +:100D8A00F0A3C8C582C8CAC583CADFE9DEE780BE48 +:010EC1000030 +:100C6500BB010689828A83E0225002E722BBFE028D +:090C7500E32289828A83E49322C0 +:100C7E00BB010CE58229F582E5833AF583E022502B +:100C8E0006E92582F8E622BBFE06E92582F8E22275 +:0D0C9E00E58229F582E5833AF583E493228F +:100CAB00BB010A89828A83E0F5F0A3E02250068714 +:100CBB00F009E71922BBFE07E3F5F009E3192289D6 +:0B0CCB00828A83E493F5F07401932209 +:100CD600BB0110E58229F582E5833AF583E0F5F05C +:100CE600A3E0225009E92582F886F008E622BBFE39 +:100CF6000AE92582F8E2F5F008E222E5832AF5837F +:080D0600E993F5F0A3E9932243 :00000001FF diff --git a/Objects/kill_control.lnp b/Objects/kill_control.lnp index 6310e39..178373c 100644 --- a/Objects/kill_control.lnp +++ b/Objects/kill_control.lnp @@ -2,6 +2,7 @@ ".\Objects\Exti.obj", ".\Objects\GPIO.obj", ".\Objects\main.obj", -".\Objects\timer.obj" +".\Objects\timer.obj", +".\Objects\PWM.obj" TO ".\Objects\kill_control" PRINT(".\Listings\kill_control.m51") RAMSIZE(256) diff --git a/Objects/main.obj b/Objects/main.obj index 5f0af08..1dfd764 100644 Binary files a/Objects/main.obj and b/Objects/main.obj differ diff --git a/Objects/timer.obj b/Objects/timer.obj index f51be80..9cabd73 100644 Binary files a/Objects/timer.obj and b/Objects/timer.obj differ diff --git a/kill_control.uvgui.User b/kill_control.uvgui.User index 28b821c..a82d6ad 100644 --- a/kill_control.uvgui.User +++ b/kill_control.uvgui.User @@ -101,17 +101,17 @@ -1 - 60 - 770 - 2513 - 1107 + 234 + 389 + 2132 + 1281 0 - 575 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000030000000100000039443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF39443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C4750494F2E6300000000064750494F2E6300000000FFDC7800FFFFFFFF38443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C4750494F2E6800000000064750494F2E6800000000BECEA100FFFFFFFF39443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C457874692E630000000006457874692E6300000000F0A0A100FFFFFFFF38443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C457874692E680000000006457874692E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004E040000AA000000C90900009E020000 + 897 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000009000000070000000100000039443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF39443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C4750494F2E6300000000064750494F2E6300000000FFDC7800FFFFFFFF38443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C4750494F2E6800000000064750494F2E6800000000BECEA100FFFFFFFF39443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C457874692E630000000006457874692E6300000000F0A0A100FFFFFFFF38443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C457874692E680000000006457874692E6800000000BCA8E100FFFFFFFF38443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C50574D2E43000000000550574D2E43000000009CC1B600FFFFFFFF37443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C50574D2E68000000000550574D2E6800000000F7B88600FFFFFFFF3A443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79636F64655C74696D65722E63000000000774696D65722E6300000000D9ADC200FFFFFFFF39443A5C55736572735C557365725C446F63756D656E74735C7065656B3235306B696C6C20636F6E74726F6C5C6D79696E635C74696D65722E68000000000774696D65722E6800000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D1020000580100004C0800004C030000 @@ -134,7 +134,7 @@ 16 - 4E040000AA0000007A0A00006E010000 + D102000058010000FD0800001C020000 @@ -1360,7 +1360,7 @@ 50003 50003 - 0 + 1 0 0 0 @@ -1370,11 +1370,11 @@ 0 16 - 33060000660000006D070000E4020000 + 47010000660000006D07000081000000 16 - 3C000000530000007C01000064010000 + 0A0000000A0000006E0000006E000000 @@ -1799,7 +1799,7 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000130100007007000017010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000004E040000AA0000007A0A00006E010000440100004F00000070070000130100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F00000030060000FD020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000003A090000AA0000007A0A000058030000300600004F00000070070000FD02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000043020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000A030000AA0000004A0400009E020000000000004F00000040010000430200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E902000070070000ED02000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000000A030000480300007A0A00002004000000000000ED02000070070000C503000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000ED020000BC030000C503000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000043020000BF06000047020000010000000100001004000000010000006DFDFFFF59020000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000A030000A2020000C9090000380400000000000047020000BF060000DD0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000130100007007000017010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D102000058010000FD0800001C020000440100004F00000070070000130100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F00000030060000FD020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000BD07000058010000FD08000006040000300600004F00000070070000FD02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000043020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000008D01000058010000CD0200004C030000000000004F00000040010000430200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E902000070070000ED02000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000008D010000F6030000FD080000CE04000000000000ED02000070070000C503000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000ED020000BC030000C503000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000043020000BF06000047020000010000000100001004000000010000006DFDFFFF59020000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000008D010000500300004C080000E60400000000000047020000BF060000DD0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1862,12 +1862,12 @@ 0 100 - 3 + 7 .\mycode\main.c - 15 - 1 - 21 + 16 + 3 + 17 1 0 @@ -1875,17 +1875,17 @@ .\mycode\GPIO.c 0 - 76 - 100 + 1 + 19 1 0 \Users\User\Documents\peek250kill control\myinc\GPIO.h - 0 - 27 - 42 + 8 + 28 + 44 1 0 @@ -1902,12 +1902,48 @@ .\myinc\Exti.h 17 - 11 + 12 17 1 0 + + .\mycode\PWM.C + 2 + 144 + 169 + 1 + + 0 + + + \Users\User\Documents\peek250kill control\myinc\PWM.h + 6 + 115 + 140 + 1 + + 0 + + + .\mycode\timer.c + 25 + 10 + 36 + 1 + + 0 + + + \Users\User\Documents\peek250kill control\myinc\timer.h + 10 + 22 + 47 + 1 + + 0 + diff --git a/kill_control.uvopt b/kill_control.uvopt index 77c4d96..afcf2cd 100644 --- a/kill_control.uvopt +++ b/kill_control.uvopt @@ -236,6 +236,18 @@ 0 0 + + 2 + 6 + 1 + 0 + 0 + 0 + .\mycode\PWM.C + PWM.C + 0 + 0 + diff --git a/kill_control.uvproj b/kill_control.uvproj index 8d02049..903b7b3 100644 --- a/kill_control.uvproj +++ b/kill_control.uvproj @@ -406,6 +406,11 @@ 1 .\mycode\timer.c + + PWM.C + 1 + .\mycode\PWM.C + diff --git a/mycode/PWM.C b/mycode/PWM.C new file mode 100644 index 0000000..a5e95cd --- /dev/null +++ b/mycode/PWM.C @@ -0,0 +1,217 @@ +/*---------------------------------------------------------------------*/ +/* --- STC MCU Limited ------------------------------------------------*/ +/* --- STC 1T Series MCU Demo Programme -------------------------------*/ +/* --- Mobile: (86)13922805190 ----------------------------------------*/ +/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/ +/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/ +/* --- Web: www.STCMCU.com --------------------------------------------*/ +/* --- Web: www.STCMCUDATA.com ---------------------------------------*/ +/* --- QQ: 800003751 -------------------------------------------------*/ +/* Èç¹ûÒªÔÚ³ÌÐòÖÐʹÓô˴úÂë,ÇëÔÚ³ÌÐòÖÐ×¢Ã÷ʹÓÃÁËSTCµÄ×ÊÁϼ°³ÌÐò */ +/*---------------------------------------------------------------------*/ + +#include "PWM.h" +PWMx_Duty PWMB_Duty; +u8 PWM_Configuration(u8 PWM, PWMx_InitDefine *PWMx) +{ + if (PWM == PWMA) + { + EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + + if (PWMx->PWM1_SetPriority <= Priority_3) + PWM1_Priority(PWMx->PWM1_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + if (PWMx->PWM2_SetPriority <= Priority_3) + PWM2_Priority(PWMx->PWM2_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + if (PWMx->PWM3_SetPriority <= Priority_3) + PWM3_Priority(PWMx->PWM3_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + if (PWMx->PWM4_SetPriority <= Priority_3) + PWM4_Priority(PWMx->PWM4_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + + PWMA_CCER1_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + PWMA_CCER2_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + PWMA_OC1ModeSet(PWMx->PWM1_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMA_OC2ModeSet(PWMx->PWM2_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMA_OC3ModeSet(PWMx->PWM3_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMA_OC4ModeSet(PWMx->PWM4_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + if (PWMx->PWM_Reload == ENABLE) + PWMA_OC1_ReloadEnable(); // Êä³ö±È½ÏµÄÔ¤×°ÔØÊ¹ÄÜ + else + PWMA_OC1_RelosdDisable(); // ½ûÖ¹Êä³ö±È½ÏµÄÔ¤×°ÔØ + if (PWMx->PWM_Fast == ENABLE) + PWMA_OC1_FastEnable(); // Êä³ö±È½Ï¿ìËÙ¹¦ÄÜʹÄÜ + else + PWMA_OC1_FastDisable(); // ½ûÖ¹Êä³ö±È½Ï¿ìËÙ¹¦ÄÜ + + if (PWMx->PWM_CC1Enable == ENABLE) + PWMA_CC1E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC1E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC1NEnable == ENABLE) + PWMA_CC1NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC1NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC2Enable == ENABLE) + PWMA_CC2E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC2E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC2NEnable == ENABLE) + PWMA_CC2NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC2NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC3Enable == ENABLE) + PWMA_CC3E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC3E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC3NEnable == ENABLE) + PWMA_CC3NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC3NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC4Enable == ENABLE) + PWMA_CC4E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC4E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC4NEnable == ENABLE) + PWMA_CC4NE_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMA_CC4NE_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + + PWMA_AutoReload(PWMx->PWM_Period); + PWMA_Duty1(PWMx->PWM1_Duty); + PWMA_Duty2(PWMx->PWM2_Duty); + PWMA_Duty3(PWMx->PWM3_Duty); + PWMA_Duty4(PWMx->PWM4_Duty); + + PWMA_CCPCAPreloaded(PWMx->PWM_PreLoad); // ²¶»ñ/±È½ÏÔ¤×°ÔØ¿ØÖÆÎ»(¸Ãλֻ¶Ô¾ßÓл¥²¹Êä³öµÄͨµÀÆð×÷ÓÃ) + PWMA_PS = PWMx->PWM_PS_SW; // Çл»IO + PWMA_ENO = PWMx->PWM_EnoSelect; // Êä³öͨµÀÑ¡Ôñ + PWMA_DeadTime(PWMx->PWM_DeadTime); // ËÀÇø·¢ÉúÆ÷ÉèÖà + + if (PWMx->PWM_BrakeEnable == ENABLE) + PWMA_BrakeEnable(); // ¿ªÆôɲ³µÊäÈë + else + PWMA_BrakeDisable(); // ½ûֹɲ³µÊäÈë + if (PWMx->PWM_MainOutEnable == ENABLE) + PWMA_BrakeOutputEnable(); // Ö÷Êä³öʹÄÜ + else + PWMA_BrakeOutputDisable(); // Ö÷Êä³ö½ûÖ¹ + if (PWMx->PWM_CEN_Enable == ENABLE) + PWMA_CEN_Enable(); // ʹÄܼÆÊýÆ÷ + else + PWMA_CEN_Disable(); // ½ûÖ¹¼ÆÊýÆ÷ + + EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ + return 0; + } + + if (PWM == PWMB) + { + EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + + if (PWMx->PWM5_SetPriority <= Priority_3) + PWM5_Priority(PWMx->PWM5_SetPriority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + + PWMB_CCER1_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + PWMB_CCER2_Disable(); // ¹Ø±ÕËùÓÐÊäÈë²¶»ñ/±È½ÏÊä³ö + PWMB_OC5ModeSet(PWMx->PWM5_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMB_OC6ModeSet(PWMx->PWM6_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMB_OC7ModeSet(PWMx->PWM7_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + PWMB_OC8ModeSet(PWMx->PWM8_Mode); // ÉèÖÃÊä³ö±È½Ïģʽ + if (PWMx->PWM_Reload == ENABLE) + PWMB_OC5_ReloadEnable(); // Êä³ö±È½ÏµÄÔ¤×°ÔØÊ¹ÄÜ + else + PWMB_OC5_RelosdDisable(); // ½ûÖ¹Êä³ö±È½ÏµÄÔ¤×°ÔØ + if (PWMx->PWM_Fast == ENABLE) + PWMB_OC5_FastEnable(); // Êä³ö±È½Ï¿ìËÙ¹¦ÄÜʹÄÜ + else + PWMB_OC5_FastDisable(); // ½ûÖ¹Êä³ö±È½Ï¿ìËÙ¹¦ÄÜ + + if (PWMx->PWM_CC5Enable == ENABLE) + PWMB_CC5E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMB_CC5E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC6Enable == ENABLE) + PWMB_CC6E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMB_CC6E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC7Enable == ENABLE) + PWMB_CC7E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMB_CC7E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + if (PWMx->PWM_CC8Enable == ENABLE) + PWMB_CC8E_Enable(); // ¿ªÆôÊäÈë²¶»ñ/±È½ÏÊä³ö + else + PWMB_CC8E_Disable(); // ¹Ø±ÕÊäÈë²¶»ñ/±È½ÏÊä³ö + + PWMB_AutoReload(PWMx->PWM_Period); + PWMB_Duty5(PWMx->PWM5_Duty); + PWMB_Duty6(PWMx->PWM6_Duty); + PWMB_Duty7(PWMx->PWM7_Duty); + PWMB_Duty8(PWMx->PWM8_Duty); + + PWMB_CCPCBPreloaded(PWMx->PWM_PreLoad); // ²¶»ñ/±È½ÏÔ¤×°ÔØ¿ØÖÆÎ»(¸Ãλֻ¶Ô¾ßÓл¥²¹Êä³öµÄͨµÀÆð×÷ÓÃ) + PWMB_PS = PWMx->PWM_PS_SW; // Çл»IO + PWMB_ENO = PWMx->PWM_EnoSelect; // Êä³öͨµÀÑ¡Ôñ + PWMB_DeadTime(PWMx->PWM_DeadTime); // ËÀÇø·¢ÉúÆ÷ÉèÖà + + if (PWMx->PWM_BrakeEnable == ENABLE) + PWMB_BrakeEnable(); // ¿ªÆôɲ³µÊäÈë + else + PWMB_BrakeDisable(); // ½ûֹɲ³µÊäÈë + if (PWMx->PWM_MainOutEnable == ENABLE) + PWMB_BrakeOutputEnable(); // Ö÷Êä³öʹÄÜ + else + PWMB_BrakeOutputDisable(); // Ö÷Êä³ö½ûÖ¹ + if (PWMx->PWM_CEN_Enable == ENABLE) + PWMB_CEN_Enable(); // ʹÄܼÆÊýÆ÷ + else + PWMB_CEN_Disable(); // ½ûÖ¹¼ÆÊýÆ÷ + + EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ + return 0; + } + + return 2; // ´íÎó +} + +/*********************************************************/ + +/******************* PWM Õ¼¿Õ±ÈÉèÖú¯Êý *******************/ +void UpdatePwm(u8 PWM, PWMx_Duty *PWMx) +{ + EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹SFR(XSFR) */ + + if (PWM == PWMA) + { + PWMA_Duty1(PWMx->PWM1_Duty); + PWMA_Duty2(PWMx->PWM2_Duty); + PWMA_Duty3(PWMx->PWM3_Duty); + PWMA_Duty4(PWMx->PWM4_Duty); + } + else + { + PWMB_Duty5(PWMx->PWM5_Duty); + PWMB_Duty6(PWMx->PWM6_Duty); + PWMB_Duty7(PWMx->PWM7_Duty); + PWMB_Duty8(PWMx->PWM8_Duty); + } + + EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,AÖ¸ÁîµÄ²Ù×÷¶ÔÏóΪÀ©Õ¹RAM(XRAM) */ +} + +/*********************************************************/ +void PWM_config(void) +{ + PWMx_InitDefine PWMx_InitStructure; + PWMx_InitStructure.PWM5_Mode = CCMRn_PWM_MODE1; + PWMx_InitStructure.PWM5_SetPriority = Priority_0; + PWMx_InitStructure.PWM_Period = 1500; + PWMx_InitStructure.PWM5_Duty = PWMB_Duty.PWM5_Duty; + PWMx_InitStructure.PWM_DeadTime = 0; + PWMx_InitStructure.PWM_EnoSelect = ENO5P; + PWMx_InitStructure.PWM_PS_SW = PWM5_SW_P17; + PWMx_InitStructure.PWM_CC5Enable = ENABLE; + PWMx_InitStructure.PWM_MainOutEnable = ENABLE; // ?¡Â????????, ENABLE,DISABLE + PWMx_InitStructure.PWM_CEN_Enable = ENABLE; // ?????????¡Â, ENABLE,DISABLE + PWM_Configuration(PWMB, &PWMx_InitStructure); // ??????PWM, PWMA,PWMB + PWMB_Duty.PWM5_Duty = 1500; +} \ No newline at end of file diff --git a/mycode/main.c b/mycode/main.c index a4d0816..60b7cd3 100644 --- a/mycode/main.c +++ b/mycode/main.c @@ -14,15 +14,17 @@ #include "GPIO.h" #include "Exti.h" #include "timer.h" - +#include "PWM.h" /******************** Ö÷º¯Êý***********************/ void main(void) { GPIO_config(); Exti_config(); Timer_config(); + PWM_config(); EA = 1; while (1) { + UpdatePwm(PWMB, &PWMB_Duty); } } diff --git a/mycode/timer.c b/mycode/timer.c index 292aa47..2a83b69 100644 --- a/mycode/timer.c +++ b/mycode/timer.c @@ -16,42 +16,58 @@ ******************************************/ -#include "timer.h" +#include "timer.h" +#include "PWM.h" +#include "GPIO.h" u8 KILL_time = 0; +u8 pwm_direction = 0; + /********************* Timer0ÖжϺ¯Êý************************/ -void timer0_int (void) interrupt TIMER0_VECTOR +void timer0_int(void) interrupt TIMER0_VECTOR { if (KILL_time) + KILL_time--; + if (!power3_gpio) { - KILL_time--; + if (pwm_direction) + { + PWMB_Duty.PWM5_Duty++; + if (PWMB_Duty.PWM5_Duty >= 1500) + pwm_direction = 0; + } + else + { + PWMB_Duty.PWM5_Duty--; + if (!PWMB_Duty.PWM5_Duty) + pwm_direction = 1; + } + } + else + { + PWMB_Duty.PWM5_Duty = 1500; } } /********************* Timer1ÖжϺ¯Êý************************/ -void timer1_int (void) interrupt TIMER1_VECTOR +void timer1_int(void) interrupt TIMER1_VECTOR { - } /********************* Timer2ÖжϺ¯Êý************************/ -void timer2_int (void) interrupt TIMER2_VECTOR +void timer2_int(void) interrupt TIMER2_VECTOR { - } /********************* Timer3ÖжϺ¯Êý************************/ -void timer3_int (void) interrupt TIMER3_VECTOR +void timer3_int(void) interrupt TIMER3_VECTOR { - } /********************* Timer4ÖжϺ¯Êý************************/ -void timer4_int (void) interrupt TIMER4_VECTOR +void timer4_int(void) interrupt TIMER4_VECTOR { - } - //======================================================================== // º¯Êý: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) // ÃèÊö: ¶¨Ê±Æ÷³õʼ»¯³ÌÐò. @@ -59,118 +75,171 @@ void timer4_int (void) interrupt TIMER4_VECTOR // ·µ»Ø: ³É¹¦·µ»Ø0, ¿Õ²Ù×÷·µ»Ø1,´íÎó·µ»Ø2. // °æ±¾: V1.0, 2012-10-22 //======================================================================== -u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) +u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx) { - if(TIM > Timer4) return 1; //¿Õ²Ù×÷ + if (TIM > Timer4) + return 1; // ¿Õ²Ù×÷ - if(TIM == Timer0) - { - Timer0_Stop(); //Í£Ö¹¼ÆÊý - if(TIMx->TIM_Interrupt == ENABLE) Timer0_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - else Timer0_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - if(TIMx->TIM_Priority > Priority_3) return 2; //´íÎó - Timer0_Priority(TIMx->TIM_Priority); //Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + if (TIM == Timer0) + { + Timer0_Stop(); // Í£Ö¹¼ÆÊý + if (TIMx->TIM_Interrupt == ENABLE) + Timer0_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + else + Timer0_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + if (TIMx->TIM_Priority > Priority_3) + return 2; // ´íÎó + Timer0_Priority(TIMx->TIM_Priority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 - if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //´íÎó - TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; //¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ×°, 3: ²»¿ÉÆÁ±Î16λ×Ô¶¯ÖØ×° - if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer0_12T(); //12T - if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer0_1T(); //1T - if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer0_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - else Timer0_AsTimer(); //¶¨Ê± - if(TIMx->TIM_ClkOut == ENABLE) Timer0_CLKO_Enable(); //Êä³öʱÖÓ - else Timer0_CLKO_Disable(); //²»Êä³öʱÖÓ - - T0_Load(TIMx->TIM_Value); - if(TIMx->TIM_Run == ENABLE) Timer0_Run(); //¿ªÊ¼ÔËÐÐ - return 0; //³É¹¦ - } + if (TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) + return 2; // ´íÎó + TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; // ¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ×°, 3: ²»¿ÉÆÁ±Î16λ×Ô¶¯ÖØ×° + if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + Timer0_12T(); // 12T + if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + Timer0_1T(); // 1T + if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + Timer0_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + else + Timer0_AsTimer(); // ¶¨Ê± + if (TIMx->TIM_ClkOut == ENABLE) + Timer0_CLKO_Enable(); // Êä³öʱÖÓ + else + Timer0_CLKO_Disable(); // ²»Êä³öʱÖÓ - if(TIM == Timer1) - { - Timer1_Stop(); //Í£Ö¹¼ÆÊý - if(TIMx->TIM_Interrupt == ENABLE) Timer1_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - else Timer1_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - if(TIMx->TIM_Priority > Priority_3) return 2; //´íÎó - Timer1_Priority(TIMx->TIM_Priority); //Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 - if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //´íÎó - TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode<<4); //¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ×°, 3: Í£Ö¹¹¤×÷ - if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer1_12T(); //12T - if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer1_1T(); //1T - if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer1_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - else Timer1_AsTimer(); //¶¨Ê± - if(TIMx->TIM_ClkOut == ENABLE) Timer1_CLKO_Enable(); //Êä³öʱÖÓ - else Timer1_CLKO_Disable(); //²»Êä³öʱÖÓ - - T1_Load(TIMx->TIM_Value); - if(TIMx->TIM_Run == ENABLE) Timer1_Run(); //¿ªÊ¼ÔËÐÐ - return 0; //³É¹¦ - } + T0_Load(TIMx->TIM_Value); + if (TIMx->TIM_Run == ENABLE) + Timer0_Run(); // ¿ªÊ¼ÔËÐÐ + return 0; // ³É¹¦ + } - if(TIM == Timer2) //Timer2,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - { - Timer2_Stop(); //Í£Ö¹¼ÆÊý - if(TIMx->TIM_Interrupt == ENABLE) Timer2_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - else Timer2_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer2_12T(); //12T - if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer2_1T(); //1T - if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer2_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - else Timer2_AsTimer(); //¶¨Ê± - if(TIMx->TIM_ClkOut == ENABLE) Timer2_CLKO_Enable(); //Êä³öʱÖÓ - else Timer2_CLKO_Disable(); //²»Êä³öʱÖÓ + if (TIM == Timer1) + { + Timer1_Stop(); // Í£Ö¹¼ÆÊý + if (TIMx->TIM_Interrupt == ENABLE) + Timer1_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + else + Timer1_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + if (TIMx->TIM_Priority > Priority_3) + return 2; // ´íÎó + Timer1_Priority(TIMx->TIM_Priority); // Ö¸¶¨ÖжÏÓÅÏȼ¶(µÍµ½¸ß) Priority_0,Priority_1,Priority_2,Priority_3 + if (TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) + return 2; // ´íÎó + TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode << 4); // ¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×°, 1: 16λ¶¨Ê±/¼ÆÊý, 2: 8λ×Ô¶¯ÖØ×°, 3: Í£Ö¹¹¤×÷ + if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + Timer1_12T(); // 12T + if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + Timer1_1T(); // 1T + if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + Timer1_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + else + Timer1_AsTimer(); // ¶¨Ê± + if (TIMx->TIM_ClkOut == ENABLE) + Timer1_CLKO_Enable(); // Êä³öʱÖÓ + else + Timer1_CLKO_Disable(); // ²»Êä³öʱÖÓ - T2_Load(TIMx->TIM_Value); - if(TIMx->TIM_Run == ENABLE) Timer2_Run(); //¿ªÊ¼ÔËÐÐ - return 0; //³É¹¦ - } + T1_Load(TIMx->TIM_Value); + if (TIMx->TIM_Run == ENABLE) + Timer1_Run(); // ¿ªÊ¼ÔËÐÐ + return 0; // ³É¹¦ + } - if(TIM == Timer3) //Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - { - Timer3_Stop(); //Í£Ö¹¼ÆÊý - if(TIMx->TIM_Interrupt == ENABLE) Timer3_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - else Timer3_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer3_12T(); //12T - if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer3_1T(); //1T - if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer3_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - else Timer3_AsTimer(); //¶¨Ê± - if(TIMx->TIM_ClkOut == ENABLE) Timer3_CLKO_Enable(); //Êä³öʱÖÓ - else Timer3_CLKO_Disable(); //²»Êä³öʱÖÓ + if (TIM == Timer2) // Timer2,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + { + Timer2_Stop(); // Í£Ö¹¼ÆÊý + if (TIMx->TIM_Interrupt == ENABLE) + Timer2_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + else + Timer2_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + return 2; + if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + Timer2_12T(); // 12T + if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + Timer2_1T(); // 1T + if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + Timer2_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + else + Timer2_AsTimer(); // ¶¨Ê± + if (TIMx->TIM_ClkOut == ENABLE) + Timer2_CLKO_Enable(); // Êä³öʱÖÓ + else + Timer2_CLKO_Disable(); // ²»Êä³öʱÖÓ - T3_Load(TIMx->TIM_Value); - if(TIMx->TIM_Run == ENABLE) Timer3_Run(); //¿ªÊ¼ÔËÐÐ - return 0; //³É¹¦ - } + T2_Load(TIMx->TIM_Value); + if (TIMx->TIM_Run == ENABLE) + Timer2_Run(); // ¿ªÊ¼ÔËÐÐ + return 0; // ³É¹¦ + } - if(TIM == Timer4) //Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ - { - Timer4_Stop(); //Í£Ö¹¼ÆÊý - if(TIMx->TIM_Interrupt == ENABLE) Timer4_InterruptEnable(); //ÔÊÐíÖÐ¶Ï - else Timer4_InterruptDisable(); //½ûÖ¹ÖÐ¶Ï - if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2; - if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer4_12T(); //12T - if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer4_1T(); //1T - if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer4_AsCounter(); //¶ÔÍâ¼ÆÊý»ò·ÖƵ - else Timer4_AsTimer(); //¶¨Ê± - if(TIMx->TIM_ClkOut == ENABLE) Timer4_CLKO_Enable(); //Êä³öʱÖÓ - else Timer4_CLKO_Disable(); //²»Êä³öʱÖÓ + if (TIM == Timer3) // Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + { + Timer3_Stop(); // Í£Ö¹¼ÆÊý + if (TIMx->TIM_Interrupt == ENABLE) + Timer3_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + else + Timer3_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + return 2; + if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + Timer3_12T(); // 12T + if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + Timer3_1T(); // 1T + if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + Timer3_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + else + Timer3_AsTimer(); // ¶¨Ê± + if (TIMx->TIM_ClkOut == ENABLE) + Timer3_CLKO_Enable(); // Êä³öʱÖÓ + else + Timer3_CLKO_Disable(); // ²»Êä³öʱÖÓ - T4_Load(TIMx->TIM_Value); - if(TIMx->TIM_Run == ENABLE) Timer4_Run(); //¿ªÊ¼ÔËÐÐ - return 0; //³É¹¦ - } - return 2; //´íÎó + T3_Load(TIMx->TIM_Value); + if (TIMx->TIM_Run == ENABLE) + Timer3_Run(); // ¿ªÊ¼ÔËÐÐ + return 0; // ³É¹¦ + } + + if (TIM == Timer4) // Timer3,¹Ì¶¨Îª16λ×Ô¶¯ÖØ×°, ÖжÏÎÞÓÅÏȼ¶ + { + Timer4_Stop(); // Í£Ö¹¼ÆÊý + if (TIMx->TIM_Interrupt == ENABLE) + Timer4_InterruptEnable(); // ÔÊÐíÖÐ¶Ï + else + Timer4_InterruptDisable(); // ½ûÖ¹ÖÐ¶Ï + if (TIMx->TIM_ClkSource > TIM_CLOCK_Ext) + return 2; + if (TIMx->TIM_ClkSource == TIM_CLOCK_12T) + Timer4_12T(); // 12T + if (TIMx->TIM_ClkSource == TIM_CLOCK_1T) + Timer4_1T(); // 1T + if (TIMx->TIM_ClkSource == TIM_CLOCK_Ext) + Timer4_AsCounter(); // ¶ÔÍâ¼ÆÊý»ò·ÖƵ + else + Timer4_AsTimer(); // ¶¨Ê± + if (TIMx->TIM_ClkOut == ENABLE) + Timer4_CLKO_Enable(); // Êä³öʱÖÓ + else + Timer4_CLKO_Disable(); // ²»Êä³öʱÖÓ + + T4_Load(TIMx->TIM_Value); + if (TIMx->TIM_Run == ENABLE) + Timer4_Run(); // ¿ªÊ¼ÔËÐÐ + return 0; // ³É¹¦ + } + return 2; // ´íÎó } /************************ ?¡§?¡À?¡Â???? ****************************/ -void Timer_config(void) +void Timer_config(void) { - TIM_InitTypeDef TIM_InitStructure; - TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; - TIM_InitStructure.TIM_Priority = Priority_0; - TIM_InitStructure.TIM_Interrupt = ENABLE; - TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; - TIM_InitStructure.TIM_ClkOut = DISABLE; - TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL); - TIM_InitStructure.TIM_Run = ENABLE; - Timer_Inilize(Timer0,&TIM_InitStructure); + TIM_InitTypeDef TIM_InitStructure; + TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; + TIM_InitStructure.TIM_Priority = Priority_0; + TIM_InitStructure.TIM_Interrupt = ENABLE; + TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; + TIM_InitStructure.TIM_ClkOut = DISABLE; + TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL); + TIM_InitStructure.TIM_Run = ENABLE; + Timer_Inilize(Timer0, &TIM_InitStructure); } \ No newline at end of file diff --git a/myinc/GPIO.h b/myinc/GPIO.h index f1d9c72..6593857 100644 --- a/myinc/GPIO.h +++ b/myinc/GPIO.h @@ -42,6 +42,7 @@ #define power1_gpio P10 #define power2_gpio P11 #define power3_gpio P12 +#define led P17 typedef struct { u8 Mode; //IOģʽ, GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP diff --git a/myinc/PWM.h b/myinc/PWM.h new file mode 100644 index 0000000..c216c7f --- /dev/null +++ b/myinc/PWM.h @@ -0,0 +1,140 @@ +/*---------------------------------------------------------------------*/ +/* --- STC MCU Limited ------------------------------------------------*/ +/* --- STC 1T Series MCU Demo Programme -------------------------------*/ +/* --- Mobile: (86)13922805190 ----------------------------------------*/ +/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/ +/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/ +/* --- Web: www.STCMCU.com --------------------------------------------*/ +/* --- Web: www.STCMCUDATA.com ---------------------------------------*/ +/* --- QQ: 800003751 -------------------------------------------------*/ +/* ���Ҫ�ڳ�����ʹ�ô˴���,���ڳ�����ע��ʹ����STC�����ϼ����� */ +/*---------------------------------------------------------------------*/ + +#ifndef __PWM_H +#define __PWM_H + +#include "config.h" + +#define ENO1P 0x01 +#define ENO1N 0x02 +#define ENO2P 0x04 +#define ENO2N 0x08 +#define ENO3P 0x10 +#define ENO3N 0x20 +#define ENO4P 0x40 +#define ENO4N 0x80 + +#define ENO5P 0x01 +#define ENO6P 0x04 +#define ENO7P 0x10 +#define ENO8P 0x40 + +#define PWMA 1 +#define PWMB 2 + +#define PWM1_SW_P10_P11 0 +#define PWM1_SW_P20_P21 1 +#define PWM1_SW_P60_P61 2 + +#define PWM2_SW_P12_P13 0 +#define PWM2_SW_P22_P23 (1 << 2) +#define PWM2_SW_P62_P63 (2 << 2) + +#define PWM3_SW_P14_P15 0 +#define PWM3_SW_P24_P25 (1 << 4) +#define PWM3_SW_P64_P65 (2 << 4) + +#define PWM4_SW_P16_P17 0 +#define PWM4_SW_P26_P27 (1 << 6) +#define PWM4_SW_P66_P67 (2 << 6) +#define PWM4_SW_P34_P33 (3 << 6) + +#define PWM5_SW_P20 0 +#define PWM5_SW_P17 1 +#define PWM5_SW_P00 2 +#define PWM5_SW_P74 3 + +#define PWM6_SW_P21 0 +#define PWM6_SW_P54 (1 << 2) +#define PWM6_SW_P01 (2 << 2) +#define PWM6_SW_P75 (3 << 2) + +#define PWM7_SW_P22 0 +#define PWM7_SW_P33 (1 << 4) +#define PWM7_SW_P02 (2 << 4) +#define PWM7_SW_P76 (3 << 4) + +#define PWM8_SW_P23 0 +#define PWM8_SW_P34 (1 << 6) +#define PWM8_SW_P03 (2 << 6) +#define PWM8_SW_P77 (3 << 6) + +typedef struct +{ + u8 PWM1_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM2_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM3_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM4_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM5_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM6_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM7_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + u8 PWM8_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2 + + u16 PWM_Period; // ����ʱ��, 0~65535 + u16 PWM1_Duty; // PWM1ռ�ձ�ʱ��, 0~Period + u16 PWM2_Duty; // PWM2ռ�ձ�ʱ��, 0~Period + u16 PWM3_Duty; // PWM3ռ�ձ�ʱ��, 0~Period + u16 PWM4_Duty; // PWM4ռ�ձ�ʱ��, 0~Period + u16 PWM5_Duty; // PWM5ռ�ձ�ʱ��, 0~Period + u16 PWM6_Duty; // PWM6ռ�ձ�ʱ��, 0~Period + u16 PWM7_Duty; // PWM7ռ�ձ�ʱ��, 0~Period + u16 PWM8_Duty; // PWM8ռ�ձ�ʱ��, 0~Period + u8 PWM_DeadTime; // ��������������, 0~255 + + u8 PWM_CC1Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC1NEnable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC2Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC2NEnable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC3Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC3NEnable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC4Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC4NEnable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC5Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC6Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC7Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + u8 PWM_CC8Enable; // �������벶��/�Ƚ����, ENABLE,DISABLE + + u8 PWM_Reload; // ����Ƚϵ�Ԥװ��ʹ��, ENABLE,DISABLE + u8 PWM_Fast; // ����ȽϿ��ٹ���ʹ��, ENABLE,DISABLE + + u8 PWM1_SetPriority; // ����PWM1���ȼ�, Priority_0,Priority_1,Priority_2,Priority_3 + u8 PWM2_SetPriority; // ����PWM2���ȼ�, Priority_0,Priority_1,Priority_2,Priority_3 + u8 PWM3_SetPriority; // ����PWM3���ȼ�, Priority_0,Priority_1,Priority_2,Priority_3 + u8 PWM4_SetPriority; // ����PWM4���ȼ�, Priority_0,Priority_1,Priority_2,Priority_3 + u8 PWM5_SetPriority; // ����PWM4���ȼ�, Priority_0,Priority_1,Priority_2,Priority_3 + + u8 PWM_EnoSelect; // ���ͨ��ѡ��, ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P + u8 PWM_PreLoad; // Ԥװ��, ENABLE,DISABLE + u8 PWM_PS_SW; // �л��˿�, PWM1_SW_P10_P11,PWM1_SW_P20_P21,PWM1_SW_P60_P61 + u8 PWM_CEN_Enable; // ʹ�ܼ�����, ENABLE,DISABLE + + u8 PWM_BrakeEnable; // ɲ������ʹ��, ENABLE,DISABLE + u8 PWM_MainOutEnable; // �����ʹ��, ENABLE,DISABLE +} PWMx_InitDefine; + +typedef struct +{ + u16 PWM1_Duty; // PWM1ռ�ձ�ʱ��, 0~Period + u16 PWM2_Duty; // PWM2ռ�ձ�ʱ��, 0~Period + u16 PWM3_Duty; // PWM3ռ�ձ�ʱ��, 0~Period + u16 PWM4_Duty; // PWM4ռ�ձ�ʱ��, 0~Period + u16 PWM5_Duty; // PWM5ռ�ձ�ʱ��, 0~Period + u16 PWM6_Duty; // PWM6ռ�ձ�ʱ��, 0~Period + u16 PWM7_Duty; // PWM7ռ�ձ�ʱ��, 0~Period + u16 PWM8_Duty; // PWM8ռ�ձ�ʱ��, 0~Period +} PWMx_Duty; +extern PWMx_Duty PWMB_Duty; +u8 PWM_Configuration(u8 PWM, PWMx_InitDefine *PWMx); +void UpdatePwm(u8 PWM, PWMx_Duty *PWMx); +void PWM_config(void); +#endif