新手求助,用51单片机编写pwm控制电机的程序,需要键盘控制和lcd1602显示的,希望给予指导。大家看看我的这个程序怎么改进?#include
#define uchar unsigned char
#define uint unsigned int
sbit lamp=P2^0;//输出
sbit k1=P3^3;//加键
sbit k2=P3^2;//减键
sbit k3=P3^4;//停止
uchar a=10;
void delay(uint x)//延时函数
{
uchar i;
while(x--)
for(i=0;i<110;i++);
}
void init()
{
TMOD=0X01;//晶振11.0592,定时器定时方式1
TH0=0XFF;//100us定时
TL0=0XA4;
EA=1;//开总中断
ET0=1;//开定时器中断
TR0=1;//开定时器
}
void key()
{
if(!k1)
{
delay(10);
if(!k1)
{
a++;
if(a==99)
a=1;
}
} while(!k1);
if(!k2)
{
delay(10);
if(!k2)
{
a--;
if(a==1)
a=99;
}
}
while(!k2);
if(!k3)
{
delay(10);
if(!k3)
{
TR0=~TR0;//开定时器
}
}
while(!k3);
}
void main()
{
init();
while(1)
{
key();
}
}
void timer0() interrupt 1 using 3
{
uchar count; /*中断次数计数器变量*/
TH0=0xFF; /*恢复定时器初始值*/
TL0=0xA4;
count++;
if (count>=100)
count=0;
if (count<=a) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
lamp=0;
else
lamp=1;
}
先谢谢大家了啊。
key函数中 a从1变到99或者99变到1不太合理