📄 c语言写的一个驱动步进电机的程序.txt
字号:
/******************************************************************
* 芯片: PIC16F73 *
* 晶振: 4MHz *
* *
* 使用PICC8.05编译器,MPLAB v7.50调试。 *
* *
******************************************************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
const uchar FFW[4]={0xf1,0xf2,0xf4,0xf8};
const uchar REV[4]={0xf8,0xf4,0xf2,0xf1};
#define left_key RB5
#define right_key RB4
/**********************************************************
初始化函数:初始化个端口
**********************************************************/
void ioint()
{
INTCON = 0X00;
TRISB = 0xff;
OPTION = 0X7F;
GIE = 1;
RBIE = 1;
PORTB = PORTB;
}
/**********************************************************
k*1ms延时函数
**********************************************************/
void delay(uint k){
uint t;
for(;k!=0;k--)
for(t=110;t!=0;t--);
}
/********************************************************
步进电机正转函数
********************************************************/
void motor_ffw()
{
uchar i;
uint j;
for (j=0; j<10; j++) //一个周期转90度
{
for (i=0; i<4; i++)
{
PORTC = FFW[i]; //取数据
delay(20); //调节转速
}
PORTC = FFW[1]; //取数据
delay(20); //调节转速
}
}
/********************************************************
步进电机反转函数
********************************************************/
void motor_rev()
{
uchar i;
uint j;
for (j=0; j<10; j++) //一个周期转90度
{
for (i=0; i<4; i++)
{
PORTC = REV[i]; //取数据
delay(15); //调节转速
}
PORTC = REV[1]; //取数据
delay(15); //调节转速
}
}
/********************************************************
停止运行函数
*********************************************************/
void stop_run()
{
PORTC=0x00;
delay(1000); //延时
}
/**********************************************************
中断函数
**********************************************************/
void interrupt HI_ISR()
{
GIE =0;
if((RBIE)&&(RBIF))
{
delay(10);
PORTB = PORTB;
if(left_key == 0){motor_ffw();}
if(right_key == 0){motor_rev();}
stop_run();
RBIF = 0;
}
GIE =1;
}
/********************************************************
主函数
*********************************************************/
main()
{
ioint();
TRISC = 0xF0; //设置RC4-RC7为输入,RC0-RC3为输出。
while(1)
{
;
}
}
/********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -