📄 复件 timercom_step.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit opt=P0^3; //驱动器使能//
sbit sp=P0^2; //脉冲
sbit dir=P0^1; //方向
sbit ena=P0^0; //步进机使能
sbit S2=P3^2; //启动键//
sbit S3=P3^3; //正转键//
sbit S4=P3^4; //反转键//
sbit S5=P3^5; //加速键//
sbit S6=P3^6; //减速键//
sbit S7=P3^7; //停止键//
uchar width=0xb3; //脉冲速度定值
void delay(unsigned int i) //延时
{
while(i--);
}
void timer0() interrupt 1 using 1 //定时0
{
sp=~sp;
TL0=width;
TH0=0x72;
}
void jiasu()
{
if(width-20>0)
width=width-20;
}
void jiansu()
{
if(width+20<255)
width=width+25;
}
//键盘扫描//
void keyscan(void)
{
if(S2==0)
{
delay(10000);
if(S2==0)
{
while(S2==0) {ena=1; opt=1;} //启动
}
}
else if(S5==0)
{
delay(10000);
if(S5==0)
{
while(S5==0) {ena=0; opt=0;} //停止
}
}
else if(S3==0)
{
delay(10000);
if(S3==0)
{
while(S3==0) {jiasu(); } //速度 1
}
}
else if(S6==0)
{
delay(10000);
if(S6==0)
{
while(S6==0) {jiansu();} //速度 2
}
}
else if (S4==0)
{
delay(10000);
if(S4==0)
{
while(S4==0) {jiansu();} //速度 3
}
}
else if (S7==0)
{
delay(10000);
if(S7==0)
{
while(S7==0) {tingzhi();} //速度 4
}
}
}
//主函数//
void main(void)
{
opt=1;ena=0;sp=0;dir=0; //初状态//
TMOD=0x01; //定时器
IE=0x9a; //中断
//TL0=width; //定时器0
//TH0=0xfe;
TR0=1; //启动定时器0
while(1)
{
keyscan();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -