你的代码从哪里找来的?根本编译不了
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;
}
|