标题:
单片机PWM变加速小车程序调不通,小灯或者电机没有反应
[打印本页]
作者:
13523613293
时间:
2021-1-19 17:52
标题:
单片机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--);
}
}
}
作者:
人人学会单片机
时间:
2021-1-20 09:54
STC89单片机 定时器做PWM程序
www.51hei.com/bbs/dpj-200820-1.html
作者:
龙千校
时间:
2021-1-20 10:34
本帖最后由 龙千校 于 2021-1-20 10:38 编辑
1.你这个电路图贴出看看,没有电路我只能做下猜测
2.你这个SUB和ADD是接了上拉再接个按键,按键按下就把IO口低压拉低,是这样的吗?
3.你这个不应该没有现象把,如果接LED的话应该是,SUB和ADD按下其中一个灯灭,按另一个灯亮
4.在PWM做加减的时候做一个只进来一次的标志,在加上按键放开检测,思路大致:按键按下只做一次加键,标志位竖起,等按键放开重置标志位.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1