#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
void delays(uint);
void delay(uint, uint);
void mc(uint);
void mc1(uint);
fangdoudong() ;
int p;
void main(void)
{
TCON = 0x05; //外部中断0、1均设置为下降沿触发
TMOD = 0x66; //定时/计数器0设置为计数器模式,计数脉冲由引脚T0(即P3.4)输入,模式2(8位自动再加载型计数器)
EA=1; //开中断
EX1 = 1; //外部中断1使能
EX0 = 1; //外部中断0使能
ET0 = 1; //计数器中断0使能
ET1 = 1; //计数器中断1使能
TH0 = 0xff; //计数器装载初值(高位)
TL0 = 0xff; //计数器装载初值(低位)
TH1 = 0xff; //计数器装载初值(高位)
TL1 = 0xff;
TR0 = 1; //计数器0开
TR1 = 1; //计数器1开
P0_1 =1;
p=50;
while(1)
{
mc(500);
}
}
void mc(uint n)
{
uint i;
for(i=n;i>0;i--)
{
P0_0=0;
delays(13);
P0_0=1;
delay(25,p);
}
}
void mc1(uint m)
{
uint j;
for(j=m;j>0;j--)
{
P0_0=0;
delays(13);
P0_0=1;
delay(25,50);
}
}
void delay(uint a, uint b)
{ uint i,j;
for(i=a;i>0;i--)
{
for(j=b;j>0;j--);
}
}
fangdoudong() //防抖动
{
delays(60);
if(P3_2&&P3_3&&P3_4&&P3_5==0)
{
return 1;
}
else
{
return 0;
}
}
void delays(uint m)
{
uint i;
for(i=m; i>0; i--);
}
void Intsvr0(void) interrupt 0 using 1 //外部中断0
{
if(fangdoudong())
p=p+10;
return;
}
void Intsvr1(void) interrupt 2 using 1 //外部中断1
{
if(fangdoudong())
p=p-10;
return;
}
void Intsvr2(void) interrupt 1 using 1 //计数器T0中断
{
if(fangdoudong())
P0_1=!P0_1;
return;
}
void Intsvr3(void) interrupt 3 using 1 //计数器T1中断
{
if(fangdoudong())
mc1(2000);
P0_0=1;
return;
}
没有合适的资源?快使用搜索试试~ 我知道了~
step-motor-control-accurately.zip_step motor
共1个文件
c:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 144 浏览量
2022-07-15
03:32:14
上传
评论
收藏 1KB ZIP 举报
温馨提示
C语言编的步进电机精确控制程序,包括防抖动等
资源推荐
资源详情
资源评论
收起资源包目录
step-motor-control-accurately.zip (1个子文件)
step-motor control accurately
step-motor control accurately.c 2KB
共 1 条
- 1
资源评论
- NIGUANG19832024-01-11总算找到了自己想要的资源,对自己的启发很大,感谢分享~
林当时
- 粉丝: 100
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功