求高手 用51单片机输出产生方波的程序
利用定时/计数器,产生使P1.0引脚上输出周期为20ms的方波,占空比为50%,采用中断方式,设系统时钟频率为12MHz。要用C语言编写程序……我是新手希望程序里带着注释...
利用定时/计数器,产生使P1.0引脚上输出周期为20ms的方波,占空比为50%,采用中断方式,设系统时钟频率为12 MHz。要用C语言编写程序……
我是新手 希望程序里带着注释 越详细越好 分值可以追加
如果占空比是20%,怎么改程序 展开
我是新手 希望程序里带着注释 越详细越好 分值可以追加
如果占空比是20%,怎么改程序 展开
2个回答
展开全部
#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;
}
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++;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询