最好是封装好了的函数,可以任意改变pwm;如果不行那就封装成5个pwm为具体值的函数;能否看出我的程序有问题;还希望你能告诉我,为什么外部中断节约单片机资源,使用定时器能否节约资源还是非要定时中断才能节约资源。
谢谢啦^-^,给的分不多
这是我写的,只是用延时函数写的,比较浪费单片机资源,而且用仿真软件只有lpwm可以符合要求,而rpwm不能改变
#include <reg52.h>
sbit IN1=P2^1;
sbit IN2=P2^0;
sbit IN3=P2^3;
sbit IN4=P2^4;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit lpwm=P2^2; //ENA
sbit rpwm=P2^5; //ENB
#define uchar unsigned char
uchar i;
void delay (uchar m);
void lpwmout(uchar q);
void rpwmout(uchar p);
main()
{
IN1=1;IN2=0;IN3=1;IN4=0;
while(1)
{
//lpwmout(0.1);rpwmout(0.1);delay(5);
lpwmout(8);rpwmout(2);//delay(5);
//lpwmout(0);rpwmout(0);delay(5);
}
}
void delay (uchar m)
{
unsigned char a;
while(m--)
for(a=130;a>0;a--);
}
void lpwmout(uchar q) //产生pwm ENA的
{
lpwm=1;
delay(q);
lpwm=0;
delay(10-q);
}
void rpwmout(uchar p) //产生pwm ENB的
{
rpwm=1;
delay(p);
rpwm=0;
delay(10-p);
}
这程序思路蛮清晰的,我试了,可以产生pwm,谢啦……
我还想问下,程序在寻迹小车上需要大概5个pwm,这个程序可以实现,但是能不能设计个一个函数,可以改变函数输入值而改变pwm,使程序更加优化?
很简单了,你再设置一个变量a,比如设置按键D0改变pwm
这样写
void main()
{
if(N1<a)pwm_out1=1;
else pwm_out1=0;
if(D0==0)
{
a=200; //数随意
}
}