msp430f149单片机控制步进电机C语言程序
2017-06-15 18:02
211 查看
#include <msp430x14x.h>
typedef unsigned int uint;
typedef unsigned char uchar;
#define PWM BIT2
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++)
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
IFG1&=~OFIFG;
}
void int_pwm()
{
P1SEL|=PWM;//选择P12作为PWM输出
P1DIR|=PWM;
TACCR0=800;//PWM信号周期10KHz
TACCR1=400;//占空比1:1
TACCTL1=OUTMOD0+OUTMOD1+OUTMOD2; //输出模式选择
TACTL|=TASSEL1+MC0;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
int_clk(); //初始化时钟
int_pwm(); //初始化PWM
while(1);//结束
}
本例程是以msp430f149单片机的PWM控制步进电机的转动,以P1.2口为PWM输出端口,PWM信号周期为10KHZ,占空比为1:1。
typedef unsigned int uint;
typedef unsigned char uchar;
#define PWM BIT2
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++)
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
IFG1&=~OFIFG;
}
void int_pwm()
{
P1SEL|=PWM;//选择P12作为PWM输出
P1DIR|=PWM;
TACCR0=800;//PWM信号周期10KHz
TACCR1=400;//占空比1:1
TACCTL1=OUTMOD0+OUTMOD1+OUTMOD2; //输出模式选择
TACTL|=TASSEL1+MC0;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
int_clk(); //初始化时钟
int_pwm(); //初始化PWM
while(1);//结束
}
本例程是以msp430f149单片机的PWM控制步进电机的转动,以P1.2口为PWM输出端口,PWM信号周期为10KHZ,占空比为1:1。
相关文章推荐
- msp430f149单片机控制步进电机C语言程序
- 第01课 了解单片机的原理控制一个LED灯的亮和灭-----51单片机C语言试验教程
- 单片机“位”控制一个发光二级管闪烁
- 51单片机中,print打印控制字,unsigned char %bx
- 手机与单片机通过蓝牙通信----手机控制灯
- 通过ESP8266手机或电脑浏览器网页能控制远程任意组任意路继电器开关并收发单片机指令 测试OK
- 用单片机控制继电器
- 引脚太少,想多接几个按键控制怎么办?-----谈单片机AD检测法实现简单实用的按键
- C8051F005单片机的比例电磁铁控制技术
- 单片机控制DS18B20自制简易电子温度计(测试通过)(一)
- android客服端+eps8266+单片机+路由器之远程控制系统
- 单片机控制继电器
- 单片机控制的数码管显示
- 单片机控制雷达测距模块HC-SR04测量距离(通过测试)
- 一天:51单片机从入门到一个动态数码管显示数字控制
- 单片机控制气压海拔模块BMP180之模块化编程(持续更新中)
- 另外两个单片机控制的超声波测距仪原理图
- 51单片机复习004 -- HD44780控制的1602LCD
- VB控制单片机LED之最简单上位机
- 单片机控制气压海拔模块BMP180之模块化编程(持续更新中)