coody_sz 发表于 2023-8-28 10:37 谢谢大佬 |
coody_sz 发表于 2023-8-28 10:37 写的很好 ,应该是逻辑问题, |
PWM操作是马上起作用的,不会出现延时的,有延时是你的额程序操作逻辑问题。 STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例): 1、使用PWMx_ENO禁止输出PWM,对应IO成为普通IO,禁止PWM输出后,由这个IO直接输出高或低电平。 PWMA_ENO |= 0x01; // 允许PWM1P输出 delay_ms(5); // P1.0输出PWM 5ms P10 = 1; // P1.0输出高电平 PWMA_ENO &= ~0x01; // 关闭PWM输出 delay_ms(5); // P1.0输出高电平5ms PWMA_ENO |= 0x01; // 允许PWM1P输出 delay_ms(5); // P1.0输出PWM 5ms P10 = 0; // P1.0输出低电平 PWMA_ENO &= ~0x01; // 关闭PWM输出 delay_ms(5); // P1.0输出高电平5ms 2、设置PWMx_CCMRn,强制PWM输出有效(高)电平/无效(低)电平。 PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60; // PWM正常输出 delay_ms(5); // PWM输出5ms PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x40; // 强制PWM输出无效(低)电平 delay_ms(5); // PWM输出低电平5ms PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60; // PWM正常输出 delay_ms(5); // PWM输出5ms PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x50; //强制PWM输出有效(高)电平 delay_ms(5); // PWM输出高电平5ms |
代码不全 你是如何定时的? 为啥不截行数? |