找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

2路PWM的C语言程序,为何占空比到0.5时无法下降了?

[复制链接]
admin 发表于 2012-9-2 10:40:28 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如题,程序如下

占空比在0.5 以上时可以减小,但减小到0.5时不能继续减。
再三看过,没什么问题。特来请教这里的高手指点。
先感谢!


#include<reg51.h>
#include<stdio.h> //PWM调制
#include<math.h>
sbit P32=P3^2; //端口设置
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P10=P1^0;
sbit P11=P1^1;
unsigned int j;
unsigned int k;
void delay(unsigned int m) //延时m*1ms子程序
{
unsigned int r;
for(;m>0;m--)
{
for(r=0;r<80;r++)
{;}
}
}
void OutputPWM(void)
{
P10=!P10;
delay(500-j);
P10=!P10;
delay(j);

}
void OutputPWM1(void)
{
P11=!P11;
delay(500-k);
P11=!P11;
delay(k);

}

//****************************//
//主程序//
void main(void)
{
j=200;
k=200;
while(1)
{
if (P32==0) //可调并且按键去抖
{
delay(10);//延时10ms
if(P32==0)
{
j=j+50;
} //步长是50ms
}
if(P33==0)
{
delay(10); //延时10ms
if (P33==0)
{
j=j-50;
}
}
if (j<0)j=500;
if (j>500)j=0;
if(P34==0)
{
delay(10);
if(P34==0)
k=k+50;
}
if(P35==0)
{
delay(10);
if(P35==0)
k=k-50;
}
if (j<0)j=500;
if (j>500)j=0;
if (k<0)k=500;
if (k>500)k=0;
OutputPWM();
OutputPWM1();
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 17:23 , Processed in 0.054712 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表