久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2376|回復: 0
打印 上一主題 下一主題
收起左側(cè)

兩塊430單片機間的485通信

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85021 發(fā)表于 2015-7-7 18:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
要求:用按鍵將一個msp430單片機上的信息通過單片機自帶的485模塊將信息傳送到另一塊單片機上,并顯示在1602液晶屏上。求發(fā)送和接收的代碼。下面的時我自己參考其他代碼修改的,并不能進行485通訊。本人新手,望大家指點。謝謝!
/***********************************************
程序功能:通過RS485端口不停地發(fā)送數(shù)據(jù)
------------------------------------------------
測試說明:用示波器觀察RS485端口A、B信號線上的波形
          或者用RS485接收器接收發(fā)送的字符。
************************************************/
#include  <msp430x14x.h>

#define keyin (P1IN & 0xff)
#define DRE_out     P3DIR |= BIT3     //連接485芯片的DE,RE端口的IO設置為輸出狀態(tài)
#define DE          P3OUT |= BIT3     //設置485芯片處于發(fā)送狀態(tài)
#define RE          P3OUT &= ~BIT3    //設置485芯片處于接收狀態(tài)

void Set_UART1(void);
void delay(void);

/****************主函數(shù)****************/
void main(void)
{
    unsigned char temp;
    WDTCTL = WDTPW + WDTHOLD;                 //關(guān)閉看門狗
    P6DIR |= BIT2;P6OUT |= BIT2;              //關(guān)閉電平轉(zhuǎn)換
    DRE_out;
    DE;
    Set_UART1();

    while (1)
    {
        if(keyin != 0xff)       //如果檢測按鍵被按下
        {
            delay();      //延時消抖
            if(keyin != 0xff)         //如果再次檢測到按鍵被按下
            {
                temp=keyin;
                switch(temp)        //0~9、A~F
                {
                case 0xee:
                    TXBUF1 = 0x31;break;
                case 0xed:
                    TXBUF1 = 0x32;break;
                case 0xeb:
                    TXBUF1 = 0x33;break;
                case 0xe7:
                    TXBUF1 = 0x34;break;
                case 0xde:
                    TXBUF1 = 0x35;break;
                case 0xdd:
                    TXBUF1 = 0x36;break;
                case 0xdb:
                    TXBUF1 = 0x37;break;
                case 0xd7:
                    TXBUF1 = 0x38;break;
                case 0xbe:
                    TXBUF1 = 0x39;break;
                case 0xbd:
                    TXBUF1 = 0x30;break;
                case 0xbb:
                    TXBUF1 = 0x41;break;
                case 0xb7:
                    TXBUF1 = 0x42;break;
                case 0x7e:
                    TXBUF1 = 0x43;break;
                case 0x7d:
                    TXBUF1 = 0x44;break;
                case 0x7b:
                    TXBUF1 = 0x45;break;
                case 0x77:
                    TXBUF1 = 0x46;break;
                default:
                    break;
                }
            }
        }
        while(!(IFG2 & UTXIFG1));               //等待發(fā)送結(jié)束
        IFG2 &= ~UTXIFG1;
    }
}

/*******************************************
函數(shù)名稱:Set_UART1
功    能:設置MCU的UART1對應的寄存器
參    數(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 = 0x0D;                             //波特率2400
    UBR11 = 0x00;
    UMCTL1 = 0x6B;                            //調(diào)整
    UCTL1 &= ~SWRST;                          //初始化UART狀態(tài)機
}

/*******************************************
函數(shù)名稱:delay
功    能:延時約15ms,完成消抖功能
參    數(shù):無
返回值  :無
********************************************/
void delay()
{
    unsigned int tmp;   
    for(tmp = 12000;tmp > 0;tmp--);
}


/******************************
上面是接收的代碼,下面是發(fā)送的代碼。
******************************/


/*************************************************
程序功能:通過RS485端口接收字符并在1602液晶上顯示
--------------------------------------------------
測試方法:用另一個RS485發(fā)射器,通過RS485總線向?qū)W習板
          發(fā)送數(shù)據(jù)(必須是可顯示字符對應的ASCII碼),
          觀察液晶顯示
**************************************************/
#include  <msp430x14x.h>
#include  "BoardConfig.h"
#include  "cry1602.h"


#define DRE_out     P3DIR |= BIT3     //連接485芯片的DE,RE端口的IO設置為輸出狀態(tài)
#define DE          P3OUT |= BIT3     //設置485芯片處于發(fā)送狀態(tài)
#define RE          P3OUT &= ~BIT3    //設置485芯片處于接收狀態(tài)


uchar pX = 0,pY = 0;


void Set_UART1(void);


/****************主函數(shù)****************/
void main(void)
{
    P6DIR = 0XFF;P6OUT = 0XFF;
  
    WDTCTL = WDTPW + WDTHOLD;            //關(guān)閉看門狗
    BoardConfig(0xbf);
   
    DRE_out;
    RE;
    Set_UART1();  
    LcdReset();             //出示化液晶
    LPM3;
}


/*******************************************
函數(shù)名稱:UART0_RX
功    能:UART0的中斷服務函數(shù)
參    數(shù):無
返回值  :無
********************************************/
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX (void)
{
    Disp1Char(pX++,pY,RXBUF0);
    if(pX == 16)
    {
        pX = 0;
        pY ^= 1;
    }
}


/*******************************************
函數(shù)名稱:Set_UART1
功    能:設置MCU的UART1對應的寄存器
參    數(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 = 0x0D;                             //波特率2400
    UBR11 = 0x00;
    UMCTL1 = 0x6B;                            //調(diào)整
    UCTL1 &= ~SWRST;                          //初始化UART狀態(tài)機
    IE2 |= URXIE1;                            //使能UART1接收中斷
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品在线视频 | 亚洲国产精品99久久久久久久久 | 国产一区二区三区 | 99re在线视频免费观看 | 做a视频 | 日韩精品视频一区二区三区 | 亚洲国产精品久久久 | 亚洲精品资源 | 一区二区三区四区在线视频 | 欧美一级在线观看 | 久久国产欧美日韩精品 | 天天操欧美 | 色综合99| 久久久久国产成人精品亚洲午夜 | 国产一区二区免费 | 欧美成人二区 | 狠狠色狠狠色综合系列 | 亚洲一区免费在线 | 亚洲最色网站 | 日韩亚洲欧美一区 | 精品91久久 | 久久久久成人精品免费播放动漫 | 久久成人精品一区二区三区 | 91精品久久久久久综合五月天 | 在线观看中文字幕视频 | 国产精品一区二区精品 | 中文字幕日韩专区 | 夜夜精品浪潮av一区二区三区 | 欧美日韩在线观看一区 | 精品国产伦一区二区三区观看体验 | 国产精品久久网 | 免费黄色特级片 | 免费观看羞羞视频网站 | 在线亚洲一区二区 | 99re6在线视频 | 国产精品福利一区二区三区 | 久久久久成人精品免费播放动漫 | 黄色片视频 | 久久国产一区二区三区 | 欧美区在线观看 | 亚洲影音先锋 |