你的代碼從哪里找來的?根本編譯不了
uchar是什么?(我知道是unsigned char, 但編譯器不知道啊!)
sbit pwm=p1^0;中p1的p要大寫
main()后面的"{"去哪了?
TMOD=0X02;是8位自動重裝,中斷中的TH0=0xF6;TL0=0XF6;可以不要
TL0=0xF6; 的中斷時間是10us(12T 12Mhz),20步PWM的頻率最多到5kHz
高頻PWM的輸出很考驗單片機的速度
4.5%占空比當作5%來算就是1:19, 要20步
17kHz X 20 = 340kHz, 每一步就要2.9us
對于12Mhz 12T 51單片機來說
一句t++就要1us
看看你中斷中有多少句
TH0=0xF6;
TL0=0XF6;
tt++;
if(tt==zkb)
pwm=0;
if(tt==peri)
{
pwm=1;
tt=0;
}
|