|
485通信 430可以给PC发数,但PC给430发总调不通,帮忙看看
[复制链接]
这是1611 485 发送的程序,但是下边的接收程序在接受缓冲器总读不到数呢?
#include <msp430x16x.h>
void Set_UART0(void);
void Set_UART0(void)
{
P3SEL |= 0x30; // P3.4,5选择为UART收发端口
ME1 |= UTXE0 + URXE0; // 模块允许寄存器设置,使能USART0 TXD/RXD
UCTL0 |= CHAR; // 串口控制寄存器,设为8位字符格式
UTCTL0 |= SSEL0; // 串口控制寄存器所使用的时钟,选择UCLK = ACLK
UBR00 = 0x0D;
UBR10 = 0x00; //波特率设置为ACLK的频率/波特率换算为十六进制即可
UMCTL0 = 0x6B; // 波特率调整器设置
UCTL0 &= ~SWRST; // 初始化UART0状态机
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
Set_UART0(); //异步通信 采用串口0设置
P4DIR |= BIT2 ; //方向寄存器为输出状态
P4OUT |= BIT2 ; //p4.2 发送
P5DIR |=BIT4; //LED指示
for (;;)
{
TXBUF0 = 0x33; //不断发送数据0x33
while(!(IFG1 & UTXIFG0)); //等待发送结束 USART0发送UTXIFG0=1,表示 UTXBUF准备好发送一个字符
IFG1 &= ~UTXIFG0;
P5OUT ^=BIT4; //取反,led灯闪烁
volatile unsigned int i; //延时
i =10000;
do i--;
while (i != 0);
}
}
接收程序
#include <msp430x16x.h>
char data;
void Set_UART0(void);
void Set_UART0(void)
{
P3SEL |= 0x30; // P3.4,5选择为UART收发端口
ME1 |= UTXE0 + URXE0; // 模块允许寄存器设置,使能USART0 TXD/RXD
UCTL0 |= CHAR; // 串口控制寄存器,设为8位字符格式
UTCTL0 |= SSEL0; // 串口控制寄存器所使用的时钟,选择UCLK = ACLK
UBR00 = 0x0D;
UBR10 = 0x00; //波特率设置为ACLK的频率/波特率换算为十六进制即
UMCTL0 = 0x6B; // 波特率调整器设置
UCTL0 &= ~SWRST; // 初始化UART0状态机
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
Set_UART0(); //异步通信 采用串口0设置
P4OUT &= ~ BIT2 ; //控制接收端
P5DIR |=BIT6; //LED指示
for (;;)
{
while(!(IFG1 & URXIFG0)); //等待接收结束
IFG1|= URXIFG0; //清除中断标志
P5OUT ^=BIT6; //取反,led灯闪烁
data = RXBUF0;
}
}
大侠帮忙看看吧
|
|