程序欲实现功能,PC端向MCU发字符串,然后在1602上显示
错误:只能显示首位两个字符。
调试:将波特率改为2400,仍然失败;
主频调到8mhz.也不行,
说明;液晶模块调试没问题,求指教
下面是主要代码:
#include <msp430.h>
#include"cry1602.c"
#include "cry1602.h“
void InitUART(void);
void PutString(uchar *ptr);
/***************主函数************/
void main( void )
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF1OUT = 0XFF;
P2DIR = 0XFF2OUT = 0XFF;
P3DIR = 0XFF3OUT = 0XFF;
P4DIR = 0XFF4OUT = 0XFF;
P5DIR = 0XFF5OUT = 0XFF;
P6DIR = 0XFF6OUT = 0XFF;
uchar pX=0,pY=0;
uchar *tishi = "Send data to MCU”;
WDTCTL = WDTPW + WDTHOLD; //关狗
P6DIR |= BIT26OUT |= BIT2; //关闭电平转换
InitUART(); //初始化UART
LcdReset(); //初始化LCD
PutString(tishi);
while(1)
{
while(IFG1 & URXIFG0) //如果收到字符
{
Disp1Char(pX++,pY,U0RXBUF);
if(pX == 16)
{
pX = 0;
pY ^= 1;
}
}
}
}
/*******************************************
函数名称:PutSting
功 能:向PC机发送字符串
参 数:ptr--指向发送字符串的指针
返回值 :无
********************************************/
void PutString(uchar *ptr)
{
while(*ptr != '\0')
{
while (!(IFG1 & UTXIFG0)); // TX缓存空闲?
TXBUF0 = *ptr++; // 发送数据
}
while (!(IFG1 & UTXIFG0));
TXBUF0 = '\n';
}
/*******************************************
函数名称:InitUART
功 能:初始化UART端口
参 数:无
返回值 :无
********************************************/
void InitUART(void)
{
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
ME1 |= URXE0 + UTXE0; // Enable USART0 T/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0d; // 32k/9600 - 3.41
UBR10 = 0x00; //
UMCTL0 = 0x6b; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
} |