步进电动机程序
扫描二维码
随时随地手机看文章
#include
#define SYSCLK 2000000
#define Motol_Run PCA0CN=0x40 // :允许PCA0 计数器/定时器
#define Motol_stop PCA0CN=0x00
//sbit Motol_dir=P3^0;
void PORT_Init(void)
{
//P0MDOUT&=0xfe;
P0MDOUT=0x00; // 端口引脚的输出方式为漏极开路
XBR0=0x08; // CEX0 连到端口引脚。
XBR2|=0x40;
}
void SYSCLK_Init(void)
{
// unsigned char i;
WDTCN=0xde;
WDTCN=0xad; //关看门狗,默认使能默认内部时钟2M
/* OSCXCN="0x67"; //
for(i=0;i<255;i++);
while(!(OSCXCN&0x80));
OSCICN=0x88; //22.1184Mhz */
}
void PCA_Init(unsigned char fre)
{
PCA0CN=0x00;
PCA0MD=0x82; //系统时钟的4 分频,空闲方式时,PCA0 停止工作
PCA0CPM0&=0xc7; //16 位PWM 11000111
PCA0CPM0|=0x4e; //频率输出方式01001110 x100111x
PCA0CPL0=fre;
PCA0CPH0=fre;
PCA0L=0x00;
//PCA0CN|=0x40;
}
main()
{
unsigned int i="0";
SYSCLK_Init();
PORT_Init();
PCA_Init(SYSCLK/4/2/2000);
Motol_Run;
while(1)
{
// Motol_dir=0;
if(CCF0==1)
{i++;
CCF0=0;
}
if(i==200)
Motol_stop;
}
}