需要个51单片机产生方波的程序

频率为50hz高电平持续时间为1.5msP1^1口输出测试能用马上采纳我要程序不要理论... 频率为50hz 高电平持续时间为1.5ms P1^1口输出 测试能用 马上采纳
我要程序 不要理论
展开
 我来答
微管档2号
2015-08-01 · TA获得超过109个赞
知道小有建树答主
回答量:55
采纳率:0%
帮助的人:51.2万
展开全部
#include<reg51.h>

int X ;       //  PWM的周期   
int duty;     //占空比变量
int jishu;
void SystemInit(void)
{
TMOD = 0x01;
TH0 = (65536 - 1000) / 256;    //晶振:12MHZ
TL0 = (65536 - 1000) % 256;
ET0 = 1;
TR0 = 1;
EA  = 1;
}

void main()
{

X=20;         //周期
duty=8; //占空比 

SystemInit(void);
jishu = 0;
while(1) 
;

}

void timer0_isr() interrupt 1  //定时器0;改变占空比
{
TH0 = (65536 - 1000) / 256;    //晶振:12MHZ
TL0 = (65536 - 1000) % 256;

jishu++;

if(jishu <= duty)
P0 = 1;
else if(jishu < X)
P0 = 1;
else 
jishu = 0;

}


露珠,这些太简单了, 你应该自己学着弄。(没调试,直接写上的,有问题追问)

如果满意,请点赞采纳

更多追问追答
追问
第22句在keil上显示是错误  而且我自己写的在示波器上无法显示方波
追答
露珠,把22行 viod删除就可以了啊

显示的是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NJGQZF
推荐于2017-09-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:1244万
展开全部
#include "reg51.h"
unsigned char YSJS=0;
sbit OUT=P1^1;
void Timer1Init(void) //500微妙@12.000MHz
{
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x0C; //设置定时初值
TH0 = 0xFE; //设置定时初值
ET0 = 1; //使能定时器0中断
TR0=1; //定时器0开始计时
EA =1; //开总中断
}
void main(void)
{
Timer1Init();
OUT=1;
while(1)
{
}
}

void TIMER1(void) interrupt 1 //定时器0中断函数使用默认寄存器组
{
TL0 = 0x0C; //设置定时初值
TH0 = 0xFE; //设置定时初值
YSJS++;
if(YSJS<3)
{
OUT=1;
}
else
{
if(YSJS<39)
{
OUT=0;
}
else
{
YSJS=0;
OUT=1;
}
}
}
追问
不行 在示波器上 无法显示出方波
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2015-08-03 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
方波,频率为50hz 高电平持续时间为1.5ms...
----
这不是方波,只是一个矩形波。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
六道小王子
2015-08-01
知道答主
回答量:16
采纳率:0%
帮助的人:3.8万
展开全部
定时器模拟产生
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式