📄 motor.c
字号:
/***************************************************************
步进电机控制实验
网址:http://www.wejay.com.cn
功能:C:控制电机正转
D:控制电机反转
E:停止
****************************************************************/
#include "msp430x14x.h"
#define uint unsigned int
#define uchar unsigned char
uchar KeyValue=0xFF;
//键值编码表
uchar KeyCode[16]={0x77,0x7B,0x7D,0x7E,//0,1,2,3
0xB7,0xBB,0xBD,0xBE,//4,5,6,7
0xD7,0xDB,0xDD,0xDE,//8,9,A,b
0xE7,0xEB,0xED,0xEE};//C,d,E,F
uchar RunData[2]={0x1F,0x2F};
uchar DeRunData[2]={0x4F,0x8F};
uchar Flag=0;//0停止,1正转,2反转
//时钟初始化函数
void InitClock(void){
BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频 最高的标称频率
DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率
do{
IFG1&=~OFIFG;//清除振荡器失效标志
for(uint i=255;i>0;i--);
}while(IFG1&OFIFG);//判断XT2是否起振
BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频
}
//端口初始化函数
void InitPort(void){
P1SEL=0x00;//P1口所有引脚设置为一般的IO口
P1DIR=0x0F;//P1.0 P1.1 P1.2 P1.3设置为输出方向
P1OUT=0x00;//P1口先输出低电平
P1IE=0xF0;//P1.4 P1.5 P1.6 P1.7中断允许
P1IES=0xF0;//P1.4 P1.5 P1.6 P1.7下降沿触发中断
P6SEL=0x00;//P6口所有引脚设置为一般的IO口
P6DIR=0xFF;//P6口所有引脚设置为输出方向
P6OUT=0x00;//P6口初值为0
}
//延时子函数
void Delay(void){
for(uchar i=255;i>0;i--);
}
//按键分析程序
void KeyProcess(void){
uchar OutData=0x07;
for(uchar i=0;i<4;i++){//扫描4列
OutData|=0xF0;
P1OUT=OutData;
if(P1IN!=OutData) KeyValue=P1IN;
OutData>>=1;
}
P1OUT=0x00;//恢复原来的值
}
//端口1中断处理程序
#pragma vector=PORT1_VECTOR
__interrupt void Port1INT(void){
Delay();
KeyProcess();
P1IFG=0x00;//清除中断标志位
}
//延时子程序
void DelayMs(uint ms){
while(ms--){
for(uint i=0;i<800;i++);
}
}
//按钮功能函数
void KeyFun(){
if(KeyValue!=0xFF){//判断有新的键值
if(KeyValue==0xE7){
Flag=1;
}else if(KeyValue==0xEB){
Flag=2;
}else if(KeyValue==0xED){
Flag=0;
}
KeyValue=0xFF;
}
}
//电机操作函数
void Run(){
uchar i;
switch(Flag){
case 1:{
for(i=0;i<2;i++) {P6OUT=RunData[i];DelayMs(100);}
break;
}
case 2:{
for(i=0;i<2;i++) {P6OUT=DeRunData[i];DelayMs(100);}
break;
}
case 0:{
P6OUT=0x00;
break;
}
}
}
//主函数
main(){
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
InitClock();
InitPort();
_EINT();//打开中断
while(1){
KeyFun(); //键盘处理程序
Run(); //电机操作函数
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -