其实只要这样就是占空比50%了 while(1) { P1=~P1; DELAYUS(100); } |
我在上面的解答,仍有个bug: void Time1(void) interrupt 3 using 0 //“interrupt” 应改正为: void Time0(void) interrupt 3 using 0 //“interrupt” { WO =~ WO //输出引脚电平取反 TH0=(65536-50000)/256; TL0=(65536-50000)%256; } |
人人学会单片机,PWM程序 http://www.51hei.com/bbs/dpj-200820-1.html |
Kxuan163 发表于 2021-4-15 16:16 好的谢谢 |
建议试用用定时器中断方式: //主函数: void main(void) { EA=1; ET0=1; TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) //无限循环等待中断 ; } // T0中断服务函数: void Time1(void) interrupt 3 using 0 //“interrupt” WO =~ WO //输出引脚电平取反 TH0=(65536-50000)/256; TL0=(65536-50000)%256; } |
[code]void timer0() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(dang==0){w0=0;} if(dang==1){count1++;if(count1<=1){w0=1;}if(count1>1){w0=0;}if(count1==4){count1=0;}} if(dang==2){w0=1;} 我是这样写的 |
程序呢? |