?? step_motor1.c
字號:
/*============================================================
File Name :Step_Motor1.c
說明 :
1. 以單極 1相磁化方式使步進電機正向旋轉
2. 按中斷開關的話,正-〉逆,逆-〉正 旋轉。
=============================================================*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
const unsigned char one_phase[]={0x01,0x04,0x08,0x02,0x02,0x08,0x04,0x01};
volatile unsigned char phase_pnt,dir;
void delay(unsigned int d1,unsigned int d2);
void go_step_1phase(unsigned int time);
void initialize(void);
SIGNAL(SIG_INTERRUPT0) // 外部中斷
{
dir=~dir;
}
int main(void)
{
DDRD=0xf0; // 端口D 高4位=輸出, 低4位=輸入
initialize();
while(1)
{
go_step_1phase(700);
}
}
void delay(unsigned int d1,unsigned int d2)
{
unsigned int i,j;
for(i=0;i<d1;i++)
{
for(j=0;j<d2;j++);
}
}
void go_step_1phase(unsigned int time)
{
if(!dir)
PORTD=(one_phase[phase_pnt++]<<4);
else // 逆向旋轉
PORTD=(one_phase[phase_pnt--]<<4);
phase_pnt&0x0f; // 若phase_pnt=(4,0xff),phase_pnt=(0,3)
delay(time,100);
}
void initialize(void)
{
EIMSK=0x01; // 使用外部中斷0
EICRA=0x02; // 下降沿中斷請求
sei(); // 使能所有中斷
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -