怎么用延时实现输出pwm波

sammy2010baby sammy2010baby 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想用延时方法实现输出pwm波,在一个IO口分别输出的占空比为80%,50%,20%的波形。有3个按键,按下按键1输出80%的方波,按下按键2输出50%的方波,按下按键3输出20%的方波,用的芯片为at89c51,程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit anjian=P1^1;
sbit anjian1=P1^2;
sbit anjian2=P1^3;
sbit zhankongbi=P0^0;
void delay();
void delay(int z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=110;y>0;y--);
}

void main()
{


while(1)
{

if(anjian==0)


{ while(anjian==0)

{
zhankongbi=1;
delay(100);
zhankongbi=0;
delay(400);
}

}

else if(anjian1==0)

{
while(anjian1==0)
{
zhankongbi=1;
delay(250);
zhankongbi=0;
delay(250);

}
}
else if(anjian2==0)

{
while(anjian2==0)
{
zhankongbi=1;
delay(400);
zhankongbi=0;
delay(100);

}
}
}
}
现在出现的问题是,没有波形输出,我使用protues仿真的,是哪里出问题了,为什么没波形输出呢?请各位大侠看看应该怎么改呢?小妹是个菜鸟,求高手指点迷津。
...全文
评论 6
收藏 已收藏
分享
返回顶部
sammy2010baby
单片机/工控 27,522 成员 28,796 内容