?? stepmotor.c
字號:
//-----------------------------------------------------------------------------
// 版權歸新華龍電子公司所有
//-----------------------------------------------------------------------------
//
//文件名: StepMotor.c
//
//編寫人: LC
//
//編寫時間:2005/03/10
//
//目標器件: C8051F02x
//
//編譯工具: Silicon Laboratories IDE
//
//程序說明: 此程序通過I/O口驅動步進電機
//P50--STEPA P51--STEPB P52--STEPC P53--STEPD
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include <c8051f020.h> // SFR declarations
#include <intrins.h>
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
/***************************************************************************************
函數名稱: void sleep_ms(WORD count)
功能描述: 延時
輸入: WORD count(所要延時的長度)
輸出: 無
全局變量: 無
調用模塊: _nop_()
***************************************************************************************/
void sleep_ms(unsigned char count)
{
unsigned char ii,jj;
for(ii=0;ii<count;ii++)
{
for(jj=0;jj<250;jj++)
_nop_();
}
}
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
unsigned char k;
unsigned char SendData;
/*無效看門狗*/
WDTCN = 0xde;
WDTCN = 0xad;
PORT_Init ();
SendData=0xff; /*4相線圈都截止*/
while(1)
{
/*步進電機正轉*/
for(k=0;k<10;k++){
SendData=0x0e; /*A相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x0c; /*AB相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x0d; /*B相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x09; /*BC相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x0b; /*C相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x03; /*CD相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x07; /*D相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
SendData=0x06; /*DA相通電*/
P5=SendData;
sleep_ms(250);
sleep_ms(250);
sleep_ms(250);
}
/*步進電機反轉*/
for(k=0;k<10;k++){
SendData=0x06;
P5=SendData;
sleep_ms(250);
sleep_ms(250);
SendData=0x03;
P5=SendData;
sleep_ms(250);
sleep_ms(250);
SendData=0x09;
P5=SendData;
sleep_ms(250);
sleep_ms(250);
SendData=0x0c;
P5=SendData;
sleep_ms(250);
sleep_ms(250);
}
}
}
/***************************************************************************************
函數名稱: void PORT_Init(void)
功能描述: 初始化I/O
輸入: 無
輸出: 無
全局變量: XBR2,P74OUT
調用模塊: 無
***************************************************************************************/
void PORT_Init (void)
{
XBR2 = 0x40; /*使能交叉開關和弱上拉*/
P74OUT |= 0x0f; /*P5低4位為推挽輸出,其余口為開漏輸出*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -