#include<reg52.h> //头文件
#include<intrins.h> //头文件
#define uchar unsigned char //宏定义,后面uchar代表无符号字符
#define uint unsigned int //宏定义,后面int代表无符号整形
sbit MOTOR_A_1=P1^0; //电机控制脚
sbit k5=P3^1; //开始
sbit k6=P3^0; //加速
uchar T=0; //定时标记
uchar W=50; //脉宽值
uint i,j;
//**************毫秒*******************
void delayxms(uint ms) //延时 x ms
{
uint a,j;
for(a=0;a<ms;a++)
for(j=0;j<110;j++);
}
/**********************************************************************
定时器变量定义
**********************************************************************/
void init(void)//定时器初始化
{
//启动中断
TMOD=0x11; //定时器模式设置
EA=1; //开中断
ET0=1; //开定时器0
TR0=0;
TH0=0xf8; //定时器0初始值
TL0=0xcc; //定时器0初始值
}
void timer0() interrupt 1 //定时0中断处理函数
{
//重置定时器时间
TH0=0xf8;
TL0=0xcc;
T++; //定时标记加1
if(T>W)
MOTOR_A_1 =0;
else
MOTOR_A_1 =1;
if(T==100)
T=0;
}
/**********************************************************************
独立按键检测
**********************************************************************/
void key(void) //按键判断程序
{
if(k5==0) //启动暂停
{
delayxms(10);
if(k5==0)
{
while(k5==0);
i++;
if(i==1)
TR0=1;
if(i==2)
{
TR0=0;
i=0;
MOTOR_A_1 =0;
}
}
}
else if(k6==0) //加速,减速
{
delayxms(10);
{
while(k6==0);
j++;
if(j==1)
{
W=95;
}
if(j==2)
{
W=10;
j=0;
}
}
}
}
void main(void)
{
init(); /////////系统初始化
MOTOR_A_1=0;
while(1)
{
key(); //查询按键
}
}