📄 main.c
字号:
#include <reg52.h>
#include "absacc.h"
//定义每分钟的最大和最小的转速
#define max_speed 240
#define min_speed 20
//按键对应的值
#define START 0xFE
#define STOP 0xFD
#define TURN 0xFC
#define UP 0xFB
#define DOWN 0xFA
//电机用变量和常量
int index_speed=100;
int time_inteval=0;
unsigned int current_times=0;
char current_step=0; //从水平位置开始
char code motor_step[]={0x05,0x07,0x06,0x0e,0x0a,0x0b,0x09,0x0d};
//================================================================
//================================================================
unsigned char method=STOP;//按键参数,初值为停止
unsigned char expect_speed;//预想速度
bit dir=0;//方向 0为顺时针 1为逆逆时针
//================================================================
//=================================================================
main()
{
expect_speed=index_speed;
time_inteval=60000/8;
time_inteval=time_inteval/index_speed;
EA=1;
ET0=1;
TMOD=0x01;//定时器0工作在方式1
//设置定时器0的参数
TH0=0xFC;
TL0=0x17;
TR0=0;
//开启外部中断
EX0=1;
IT0=1; //设置为低电平触发
P2=0xff;
P1=motor_step[current_step];
while(1)
{
};
}
void timeon() interrupt 1
{
TH0=0xFC;//重新载入频率
TL0=0x17;
if (current_times<time_inteval)
current_times++;
else
{
if(dir==0)
{
if(current_step==0)current_step=7;
else current_step--;
}
else if(dir==1)
{
if(current_step==7)current_step=0;
else current_step++;
}
P1=motor_step[current_step];
current_times=0;
}
}
void intter() interrupt 0
{
method=P2;//扫描端口P2的值
if(method==TURN)
{
dir=~dir;//方向变反
}
//加速设置
else if(method==UP)
{
if(expect_speed<=(max_speed-20))
{
expect_speed=expect_speed+20;
time_inteval=60000/8;
time_inteval=time_inteval/expect_speed;
}
}
//减速设置
else if(method==DOWN)
{
if(expect_speed>=(min_speed+20))
{
expect_speed=expect_speed-20;
time_inteval=60000/8;
time_inteval=time_inteval/expect_speed;
}
}
//停止中断
else if(method==STOP)//不是STOP键,则启动时钟中断
TR0=0;
//启动中断
else if(method==START)
{
current_step=0;//重新初始化初值
current_times=0;
time_inteval=60000/8;
time_inteval=time_inteval/index_speed;
expect_speed=index_speed;
TR0=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -