欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 為什么產生的pwm波頻率不是1khz呢? [打印本頁]

作者: 笑笑劉    時間: 2022-5-20 14:09
標題: 為什么產生的pwm波頻率不是1khz呢?
#include <reg52.h>
#define uchar unsigned char

sbit output = P2^0;        //
uchar period = 250;
uchar high = 50;
uchar tcount = 0;

void main()
{
        TMOD = 0x01; // set Timer1, working at mode 1(16 bit timer)
        
        TH0 = (65536 - 10000) / 256; // 10ms定時時間
        TL0 = (65536 - 10000) % 256;
        
        EA = 1; // open global interrupt
        ET0 = 1; // open Timer0 interrupt
        TR0 = 1; // start Timer0
        while(1);
}

void timer0() interrupt 1 using 1
{
        TH0 = (65536 - 10000) / 256;
        TL0 = (65536 - 10000) % 256;
        tcount++;
        if(tcount == high)        //關鍵兩步:高電平時間high,之后輸出0
        {
                output = 0;
        }else if(tcount == period){
                tcount = 0;
                output = 1;           //一周期結束后重新高電平
        }
}


作者: wufa1986    時間: 2022-5-20 14:55
那為什么10ms中斷能產生1KHz呢
作者: 188610329    時間: 2022-5-20 15:09
按你 代碼的上半部分看, 你打算產生  1/250 精度的PWM, 如果在這個前提下,你要產生 1KHz的頻率,定時器中斷 必須控制在 4us 一次。
按你 頭文件,以及 定時器的設置 TMOD = 0x01 來看, 你的單片機應該是 12T 的單片機, 別說你4us 一次中斷,就算 10us 一次中斷,都夠嗆。
假如,你的確是 12T 的單片機,建議 用TMOD = 0x02, 8位自動重載模式, 20us 一次中斷, 產生1KHz 的,精度為 1/50 的PWM 相對比較合理一點。
作者: 兩人鵬34    時間: 2022-5-20 16:19
中斷時間設置不合適
作者: 君工創    時間: 2022-5-20 21:32
1KHZ頻率的脈沖,每周=1mS,半周就是0,5ms=500uS,設置數據和單片機的時鐘頻率對應了嗎?
作者: yaoyao2022    時間: 2022-5-20 21:41
設置的初值有問題
作者: hy47566398    時間: 2022-5-20 21:58
去掉 else
作者: hy47566398    時間: 2022-5-20 22:14
直接點:
void timer0() interrupt 1 using 1
{
        TH0 = (65536 - 5000) / 256;
        TL0 = (65536 - 5000) % 256;
        //tcount++;
                output=~output;
}
作者: hhh402    時間: 2022-5-20 22:42
89c52太慢不要玩PWM,1T單片機才可以玩PWM,PWM有專用模塊。用定時器模仿不好。
作者: anjianguo    時間: 2022-7-7 22:13
hhh402 發表于 2022-5-20 22:42
89c52太慢不要玩PWM,1T單片機才可以玩PWM,PWM有專用模塊。用定時器模仿不好。

我剛剛通過試驗發現,用89c52的定時器100us以下,PWM輸出不穩定,80us以下,PWM無輸出!!!
作者: hhh402    時間: 2022-7-7 22:50
anjianguo 發表于 2022-7-7 22:13
我剛剛通過試驗發現,用89c52的定時器100us以下,PWM輸出不穩定,80us以下,PWM無輸出!!!

正常,80us 89C52才運行80周期,如果你的中斷程序復雜一點根本不夠時間運行。1T單片機才可以玩PWM。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1