MSP430的485通信程序(接收字符串指令)
程序功能:通過(guò)RS485端口一次一次地收發(fā)數(shù)據(jù)
---------------------------------------------------------------
測(cè)試說(shuō)明:用示波器觀察RS485端口A、B信號(hào)線
上的波形或者用RS485接收器接收發(fā)回
的字符,在串口助手上顯示。
***************************************************************/
#include <msp430x14x.h>
#define DRE_out P3DIR |= BIT3 //連接485芯片的DE,RE端口的IO設(shè)置為輸出狀態(tài)
#define DE P3OUT |= BIT3 //設(shè)置485芯片處于發(fā)送狀態(tài)
#define RE P3OUT &= ~BIT3 //設(shè)置485芯片處于接收狀態(tài)
typedef unsigned char uchar;
unsigned char string[8] ;
uchar RX_flag;
void Set_UART1(void);
void PutString0(uchar *ptr);
void Send1Char(uchar sendchar);
void PutString(uchar *ptr);
/****************主函數(shù)****************/
void main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門(mén)狗
P6DIR |= BIT2;P6OUT |= BIT2; //關(guān)閉電平轉(zhuǎn)換
DRE_out;
RE;
Set_UART1();
_EINT();
while (1)
{
while( IFG2 & URXIFG1 ); //等待收到test命令字符
if(RX_flag==1)
{
RX_flag=0;
if(string[1]==a)
{
DE;
for(i=0;i<3200;i++);
PutString0("a11.5522.33e ");
Send1Char(n);
for(i=0;i<3200;i++);
RE;
//LPM3;
}
}
}
}
/*******************************************
函數(shù)名稱:Set_UART1
功 能:設(shè)置MCU的UART1對(duì)應(yīng)的寄存器
參 數(shù):無(wú)
返回值 :無(wú)
********************************************/
void Set_UART1(void)
{
P3SEL |= 0xC0; //將P3.6,P3.7選做UART1的通信端口
ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD
UCTL1 |= CHAR; //選擇8-bit字符
UTCTL1 |= SSEL0; //驅(qū)動(dòng)時(shí)鐘選擇ACLK
UBR01 = 0x03; //波特率9600
UBR11 = 0x00;
UMCTL1 = 0x4a; //調(diào)整
UCTL1 &= ~SWRST; //初始化UART狀態(tài)機(jī)
IE2 |= URXIE1 ; // 中斷允許寄存器設(shè)置,接收中斷允許
}
//串口接收中斷,接收字符串指令.
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx (void)
{
static uchar rxcount = 0;
// LPM3_EXIT;
if(RXBUF1 == e)
{
RX_flag =1;
rxcount = 0;
}
else
{
string[rxcount++] = RXBUF1;
}
}
/*******************************************
函數(shù)名稱:Send1Char
功 能:向PC機(jī)發(fā)送一個(gè)字符
參 數(shù):sendchar--要發(fā)送的字符
返回值 :無(wú)
********************************************/
void Send1Char(uchar sendchar)
{
while (!(IFG2 & UTXIFG1)); //等待發(fā)送寄存器為空
TXBUF1 = sendchar;
}
/*******************************************
函數(shù)名稱:PutSting
功 能:向PC機(jī)發(fā)送字符串并換行指令
參 數(shù):ptr--指向發(fā)送字符串的指針
返回值 :無(wú)
********************************************/
void PutString(uchar *ptr)
{
while(*ptr !=