在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430的485通信程序(接收字符串指令)

            MSP430的485通信程序(接收字符串指令)

            作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
            /**************************************************************

            程序功能:通過RS485端口一次一次地收發(fā)數(shù)據(jù)
            ---------------------------------------------------------------
            測試說明:用示波器觀察RS485端口A、B信號線

            本文引用地址:http://www.biyoush.com/article/201611/316427.htm

            上的波形或者用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)閉看門狗
            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對應(yīng)的寄存器
            參 數(shù):無
            返回值 :無
            ********************************************/
            void Set_UART1(void)
            {
            P3SEL |= 0xC0; //將P3.6,P3.7選做UART1的通信端口
            ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD
            UCTL1 |= CHAR; //選擇8-bit字符
            UTCTL1 |= SSEL0; //驅(qū)動時鐘選擇ACLK
            UBR01 = 0x03; //波特率9600
            UBR11 = 0x00;
            UMCTL1 = 0x4a; //調(diào)整
            UCTL1 &= ~SWRST; //初始化UART狀態(tài)機
            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機發(fā)送一個字符
            參 數(shù):sendchar--要發(fā)送的字符
            返回值 :無
            ********************************************/
            void Send1Char(uchar sendchar)
            {
            while (!(IFG2 & UTXIFG1)); //等待發(fā)送寄存器為空
            TXBUF1 = sendchar;

            }
            /*******************************************
            函數(shù)名稱:PutSting
            功 能:向PC機發(fā)送字符串并換行指令
            參 數(shù):ptr--指向發(fā)送字符串的指針
            返回值 :無
            ********************************************/
            void PutString(uchar *ptr)
            {
            while(*ptr !=