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

利用定时/计数器,产生使P1.0引脚上输出周期为20ms的方波,占空比为50%,采用中断方式,设系统时钟频率为12MHz。要用C语言编写程序……我是新手希望程序里带着注释... 利用定时/计数器,产生使P1.0引脚上输出周期为20ms的方波,占空比为50%,采用中断方式,设系统时钟频率为12 MHz。要用C语言编写程序……
我是新手 希望程序里带着注释 越详细越好 分值可以追加
如果占空比是20%,怎么改程序
展开
 我来答
百度网友ba4ffee
2012-03-21 · TA获得超过425个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:96.8万
展开全部
#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++;
}
百度网友28b23af
2012-03-22 · TA获得超过212个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:165万
展开全部
我写了,周期和占空比都可以调的
频率:1-200HZ
占空比:1%-99%
按键改变频率和占空比哦~~
追问
你写的程序呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式