怎么用延时实现输出pwm波
我想用延时方法实现输出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仿真的,是哪里出问题了,为什么没波形输出呢?请各位大侠看看应该怎么改呢?小妹是个菜鸟,求高手指点迷津。