📄 stemp_motor.c
字号:
/*******************************************************************/
#include "exp1_2407.h"
#define PHASE0 0x000A;
#define PHASE1 0x0006;
#define PHASE2 0x0005;
#define PHASE3 0x0009;
/*******************************************************************/
ioport unsigned port8001; //定义输出io端口地址为8001h
void delay_f() //相延时子程序
{
unsigned int i;
for(i=1;i<1000;i++); //修改i的值,可以改变电机旋转的速度(大于800)
//for(i=1;i<8000;i++);
}
void delay_s() //步延时子程序
{
unsigned int j;
for(j=1;j<3000;j++);
//for(j=1;j<10000;j++);
}
void sysini() //系统初始化子程序
{
asm(" setc INTM"); //禁止所有中断
asm(" setc SXM"); //抑制符号位扩展
asm(" clrc OVM"); //累加器中结果正常溢出
* SCSR1=0x81FE; //配置时钟锁相为4倍频CLKOUT=4*7.3728=29.4912M
* WDCR=0x0E8; //禁止看门狗
* IFR=0xFFFF; //清除所有中断标志,"写1清0"
}
void nothing() //空中断子程序
{
asm(" clrc INTM"); //开总中断
}
void main()
{ unsigned int j;
sysini();
for(;;)
{
for(j=0;j<60;j++) //正向旋转
{
delay_s();
port8001=PHASE0;
delay_f();
port8001=PHASE1;
delay_f();
port8001=PHASE2;
delay_f();
port8001=PHASE3;
delay_f();
}
for(j=0;j<60;j++) //反相旋转
{
delay_s();
port8001=PHASE2;
delay_f();
port8001=PHASE1;
delay_f();
port8001=PHASE0;
delay_f();
port8001=PHASE3;
delay_f();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -