/*
-----------------------------------------------------------------------------------------
工程:
Test系列工程
环境:
AVR Studio4.17 + WinAVR2010
设备:
Atmega16
作者:
遥远的海
日期:
2015-07-01
说明:
4相5线步进电机驱动
-----------------------------------------------------------------------------------------
*/
#include "inc.h"
//公共端接地,八拍方式驱动,顺序为A AB B BC C CD D DA
//static U8 m_ucCodeTable[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
//公共端接5V,八拍方式驱动,顺序为A AB B BC C CD D DA
static U8 m_ucCodeTable[8]={0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07,0x06};
/*
-----------------------------------------------------------------------------------------
16MHz系统时钟下实现延时 n 微秒
-----------------------------------------------------------------------------------------
*/
void Delay_US(U16 n)
{
while(n--)
{
NOP();NOP();NOP();NOP();NOP();
NOP();NOP();NOP();NOP();NOP();
NOP();NOP();NOP();
}
}
/*
-----------------------------------------------------------------------------------------
复位初始化函数,初始化那些急需初始化的功能。
-----------------------------------------------------------------------------------------
*/
void ResetInit(void)
{
}
/*
-----------------------------------------------------------------------------------------
板级初始化函数
-----------------------------------------------------------------------------------------
*/
void BoardInit(void)
{
DDRA |= 0x0F; //PA[0-3] 输出
}
/*
-----------------------------------------------------------------------------------------
函数:
main
功能:
C 语言主函数
入口:
void
出口:
int
备注:
无
-----------------------------------------------------------------------------------------
*/
#define DELAY_CNT 1000
int main(void)
{
U16 n=DELAY_CNT;
ResetInit();
BoardInit();
while(1)
{
/* //顺时针转动
PORTA=m_ucCodeTable[0];
Delay_US(n);
PORTA=m_ucCodeTable[1];
Delay_US(n);
PORTA=m_ucCodeTable[2];
Delay_US(n);
PORTA=m_ucCodeTable[3];
Delay_US(n);
PORTA=m_ucCodeTable[4];
Delay_US(n);
PORTA=m_ucCodeTable[5];
Delay_US(n);
PORTA=m_ucCodeTable[6];
Delay_US(n);
PORTA=m_ucCodeTable[7];
Delay_US(n);
//逐渐提高频率使电机加速
if(n>550)
n--;
*/
//逆时针转动
PORTA=m_ucCodeTable[7];
Delay_US(n);
PORTA=m_ucCodeTable[6];
Delay_US(n);
PORTA=m_ucCodeTable[5];
Delay_US(n);
PORTA=m_ucCodeTable[4];
Delay_US(n);
PORTA=m_ucCodeTable[3];
Delay_US(n);
PORTA=m_ucCodeTable[2];
Delay_US(n);
PORTA=m_ucCodeTable[1];
Delay_US(n);
PORTA=m_ucCodeTable[0];
Delay_US(n);
//逐渐提高频率使电机加速
if(n>550)
n--;
}
return 0;
}
/*
-----------------------------------------------------------------------------------------
end of file
-----------------------------------------------------------------------------------------
*/