求高手 用51单片机输出产生方波的程序

利用定时/计数器,产生使P1.0引脚上输出周期为20ms的方波,占空比为50%,采用中断方式,设系统时钟频率为12 MHz。要用C语言编写程序……
我是新手 希望程序里带着注释 越详细越好 分值可以追加
如果占空比是20%,怎么改程序

#include"reg52.h"
sbit PWM=P1^0;//定义输出脚
void main()
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1);

}
//中断函数,启动后每10MS进入一次中断
void T0_time(void) interrupt 1
{
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
if(PWM)PWM=0; //输出脚取反
else PWM=1;
}追问

如果占空比是20%,怎么改程序

追答

#include"reg52.h"
sbit PWM=P1^0;//定义输出脚
unsigned char i=0;
void main()
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-4000)/256; //12M晶振4MS计时常数
TL0=(65536-4000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
PWM=0;
while(1);

}
//中断函数,启动后每10MS进入一次中断
void T0_time(void) interrupt 1
{
TH0=(65536-4000)/256; //12M晶振4MS计时常数
TL0=(65536-4000)%256;
if(i==0)PWM=1;
if(i==4){PWM=0;i=0;}
else i++;
}

追问

非常感谢 能加你为QQ好友吗 我的Q号619145498

追答

+了我叫守着窗儿

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-22
我写了,周期和占空比都可以调的
频率:1-200HZ
占空比:1%-99%
按键改变频率和占空比哦~~追问

你写的程序呢

相似回答