![]() |
發(fā)布時間: 2023-8-27 17:14
正文摘要:想做一個開1秒關(guān)0.5秒效果 這是代碼。 現(xiàn)在狀態(tài)是,時間是對的,但是pwm輸出好像有延時一樣,做不到開1關(guān)0.5,要么就開一下關(guān)一下(迅速的)或者開兩三秒關(guān)一下 |
coody_sz 發(fā)表于 2023-8-28 10:37 謝謝大佬 |
coody_sz 發(fā)表于 2023-8-28 10:37 寫的很好 ,應(yīng)該是邏輯問題, |
PWM操作是馬上起作用的,不會出現(xiàn)延時的,有延時是你的額程序操作邏輯問題。 STC8H系列的高級PWM,連續(xù)輸出0或1有2種方法(以PWM1P為例): 1、使用PWMx_ENO禁止輸出PWM,對應(yīng)IO成為普通IO,禁止PWM輸出后,由這個IO直接輸出高或低電平。 PWMA_ENO |= 0x01; // 允許PWM1P輸出 delay_ms(5); // P1.0輸出PWM 5ms P10 = 1; // P1.0輸出高電平 PWMA_ENO &= ~0x01; // 關(guān)閉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; // 關(guān)閉PWM輸出 delay_ms(5); // P1.0輸出高電平5ms 2、設(shè)置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 |
代碼不全 你是如何定時的? 為啥不截行數(shù)? |
Powered by 單片機教程網(wǎng)