怎么把51单片机的程序改成msp430f5529的程序

2019-07-15 15:38发布

有没有好心人帮忙把下面这个程序改一下,改成msp430f5529的,谢谢了#include <STC12C5A60S2.h>
//#include <STC89C51.h>
//#include <STC12C2052AD.h>
#define uint unsigned int
#define uchar unsigned char
#include <string.h>
sbit qd=P2^0;
void delay(unsigned int cnt);
void UART_init (void)
{ EA = 1;
ES = 1;
  PCON |= 0x80;  //使能波特率倍速位SMOD
  SCON = 0x50;  //8位数据,可变波特率
   AUXR |= 0x40;  //定时器1时钟为Fosc,即1T
   AUXR &= 0xfe;  //串口1选择定时器1为波特率发生器
   TMOD &= 0x0f;  //清除定时器1模式位
   TMOD |= 0x20;  //设定定时器1为8位自动重装方式
   TL1 = 0xFA;  //设定定时初值
   TH1 = 0xFA;  //设定定时器重装值
   ET1 = 0;  //禁止定时器1中断
   TR1 = 1;  //启动定时器1
   }          //设置串口通讯的波特率,这里设置的是115200,11.0592晶振
void UART_R (void) interrupt 4  using 1
{   
unsigned char UART_data;  
RI = 0;     
UART_data = SBUF;
  }
  //设置串口中断函数
  void UART_T (unsigned char UART_data)
  {
     SBUF = UART_data;
            while(ti == 0);  
                TI = 0;
   }//串口发送字符函数
void UART_TC (unsigned char *str)
{
  while(*str != '')
{  
   UART_T(*str);
     *str++;
}
          *str = 0;
}        //串口发送字符串函数
void main (void)
{
   UART_init();
   while(1)
   {
  // if(qd==0)
   //{
   //delay(10000);
   //if(qd==0)
   UART_TC("pl0 sq1 sm100 ");
  // UART_TC(" ");

   delay(90000000000000000000000000000);
   //UART_TC("#0P1500 ");
   //UART_TC("#0P1500T500 ");
   //delay(9000000000000000000000000000);
   }
}//,***表示需要发送的字符串,
void delay(unsigned int cnt)
{
while(--cnt);
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
zjs10
2019-07-16 13:09
michael_llh 发表于 2016-8-11 23:12
什么意思,说具体一点,不是很懂你的意思,发一条语句命令??

这是uart模块的历程,想像程序中 UCA0TXBUF="#15 P1600 T500 "这样发送一条语句指令给一个控制板,但是这样好像是不行,就不知道怎么实现
#include <msp430f5529.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P3SEL |= BIT3+BIT4;                       // P3.3,4 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 9;                              // 1MHz 115200 (see User's Guide)
  UCA0BR1 = 0;                              // 1MHz 115200
  UCA0MCTL |= UCBRS_1 + UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCTXIE;                         // 使USCI_A0 RX中断

  __bis_SR_register(LPM0_bits + GIE);       // 输入LPM0, 启用中断
  __no_operation();                         // For debugger
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A0 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                 // TX -> RXed character
    break;
  case 4:
          UCA0TXBUF="#15 P1600 T500 ";
          break;                             // Vector 4 - TXIFG
  default: break;
  }
}

一周热门 更多>