msp430F149串口UART结合舵机控制板来控制机器人动作的模版

4 篇文章 0 订阅
2 篇文章 0 订阅

/*************************main()函数*********************/

#include <msp430x14x.h>
#include"uart.h"
#include"BoardConfig.h"

void delay(int xms)
{
  uint i,j;
  for( i=0;i<xms;i++)
  for(j=0;j<1141;j++);//
}

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;//关狗
  BoardConfig(0xb8);   //关数码管,流水灯和电平转换
 
  InitUart();
  _EINT();
 
  while(1)
  {
    PutString("#1P500#2P2056T2500\r\n");
    delay(1000);
    PutString("#1P1056#2P2056T2500\r\n");
    delay(1000);
    PutString("#1P1500#2P2056T2500\r\n");
    delay(1000);

    ..........//将你在软件上生成的动作代码组按以上方式重复即可
  }
}
/***************************main()完********************************/

 

/**************************UART配置程序块*************************/

#include<msp430x14x.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

/************************************
函数名称:InitUart()
功    能:初始化UART端口
参    数:无
返回值:无
************************************/
void InitUart(void)
{
  P3SEL |= BIT4 + BIT5;//开启P3.4 3.5的第二功能作为收发管脚
  ME1 |= UTXE0 + URXE0;//开启串口0收发模式
  UCTL0 |= CHAR;//8—bit模式
  UTCTL0 |= SSEL0;//选择ACLK作为串口波特率的时钟源
  UBR00 = 0X03;
  UBR10 = 0X00;
  UMCTL0 = 0X4A;//选择波特率为9600
  UCTL0 &= ~SWRST;//取消软件复位端
  
}
/******************完********************/
/*****************************************
函数名:Send1char()
功能:向pc机发送一个字符
参数:sendchar——要发送的字符
返回值:无
*****************************************/
void Send1Char(uchar sendchar)
{
  while(!(IFG1 & UTXIFG0));//等待发送寄存器为空
  TXBUF0 = sendchar;
}
/***********************************************
函数名称:putsting()
功能:向pc机发送字符串并换行指令
参数:ptr——指向发送字符串的指针
返回值:无
***********************************************/
void PutString(uchar *ptr)
{
    while(*ptr != '\0')
    {
      Send1Char(*ptr++);  
    }  
}

 

/**************************UART配置程序块完*************************/

 

 

/**************************程序模块化,外部声明*************************/

typedef unsigned char uchar;
typedef unsigned int  uint;

void InitUart(void);
void PutString(uchar *ptr);
void Send1Char(uchar sendchar);

/**************************程序模块化,外部声明  完*************************/

 

/***********************************由于用的是学习板,这部分是学习板的配置文件,参考使用***********************/

//typedef unsigned char uchar;
//typedef unsigned int  uint;

//控制位的宏定义
#define Ctrl_Out  P3DIR |= BIT3 + BIT6 + BIT7;
#define Ctrl_0    P3OUT &= ~(BIT3 + BIT6 + BIT7)
#define SRCLK_1   P3OUT |= BIT7
#define SRCLK_0   P3OUT &= ~BIT7
#define SER_1     P3OUT |= BIT6
#define SER_0     P3OUT &= ~BIT6
#define RCLK_1    P3OUT |= BIT3
#define RCLK_0    P3OUT &= ~BIT3

//板上资源配置函数
void BoardConfig(uchar cmd)
{
    uchar i;
   
    Ctrl_Out;
    Ctrl_0;
   
    for(i = 0; i < 8; i++)
    {
        SRCLK_0;
        if(cmd & 0x80)  SER_1;
        else            SER_0;
        SRCLK_1;
        cmd <<= 1;
    }
    RCLK_1;
    _NOP();
    RCLK_0;
}

 


 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值