单片机PWM变加速小车程序调不通,小灯或者电机没有反应,求各位大神帮忙看一下,看哪里不对,程序调不通,小灯或者电机没有反应,看看到底是哪里的问题
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADD=P1^0;
sbit SUB=P1^1;
sbit PWM=P2^1;
bit DIR=0;
uint count,value,timer0;
void time0config();
void delay(uint c);
void main(void)
{
time0config();
while(1)
{
if(ADD==0)
{
delay(10);
if(ADD==0)
{
if(count>100)
{
count=0;
value++;
}
if(value>=1000)
{
value=1000;
}
if(timer0>1000)
{
timer0=0;
}
if(timer0<value)
{
PWM=1;
}
else
{
PWM=0;
}
}
break;
}
if(SUB==0)
{
delay(10);
if(SUB==0)
{
if(count>100)
{
count=0;
value–;
}
if(value>=1000)
{
value=1000;
}
if(timer0>1000)
{
timer0=0;
}
if(timer0<value)
{
PWM=1;
}
else
{
PWM=0;
}
}
break;
}
}
}
/*******************************************************************************
* 函 数 名 : Time1Config
* 函数功能 : 设置定时器
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//–定时器赋初始值,12MHZ下定时1us–//
TH1 = 0xFF;
TL1 = 0xff;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time0(void) interrupt 1 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFF; //重新赋初值
TL1 = 0xFf;
timer0++;
count++;
}
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void delay(uint c) //误差 0us
{
uchar a, b;
//–c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了–//
for (;c>0;c–)
{
for (b=38;b>0;b–)
{
for (a=130;a>0;a–);
}
}
}