新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430+nRF24L01程序

        MSP430+nRF24L01程序

        作者: 時間:2016-11-30 來源:網絡 收藏
        **************************************************
        來源:網上
        改寫:bluefeel
        時間:10-03-13
        單位:桂林理工大學
        /**************************************************/
        #include
        #include
        #define uchar unsigned char
        /***************************************************/
        #define TX_ADR_WIDTH 5 // 5字節寬度的發送/接收地址
        #define TX_PLOAD_WIDTH 4 // 數據通道有效數據寬度
        #define LED P2
        uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定義一個靜態發送地址
        uchar RX_BUF[TX_PLOAD_WIDTH];
        uchar TX_BUF[TX_PLOAD_WIDTH];
        ucharflag;
        uchar DATA = 0x01;
        uchar bdatasta;
        sbit RX_DR = sta^6;
        sbit TX_DS = sta^5;
        sbit MAX_RT =sta^4;
        /**************************************************/
        /**************************************************
        函數: init_io()
        描述:
        初始化IO
        /**************************************************/
        void init_io(void)
        {
        CE = 0; // 待機
        CSN = 1; // SPI禁止
        SCK = 0; // SPI時鐘置低
        IRQ = 1; // 中斷復位
        LED = 0xff; // 關閉指示燈
        }
        /**************************************************/
        /**************************************************
        函數:delay_ms()
        描述:
        延遲x毫秒
        /**************************************************/
        void delay_ms(uchar x)
        {
        uchar i, j;
        i = 0;
        for(i=0; i {
        j = 250;
        while(--j);
        j = 250;
        while(--j);
        }
        }
        /**************************************************/
        /**************************************************
        函數:SPI_RW()
        描述:
        根據SPI協議,寫一字節數據到nRF24L01,同時從nRF24L01
        讀出一字節
        /**************************************************/
        uchar SPI_RW(uchar byte)
        {
        uchar i;
        for(i=0; i<8; i++) // 循環8次
        {
        MOSI = (byte & 0x80); // byte最高位輸出到MOSI
        byte <<= 1; // 低一位移位到最高位
        SCK = 1; // 拉高SCK,nRF24L01從MOSI讀入1位數據,同時從MISO輸出1位數據
        byte |= MISO; // 讀MISO到byte最低位
        SCK = 0; // SCK置低
        }
        return(byte); // 返回讀出的一字節
        }
        /**************************************************/
        /**************************************************
        函數:SPI_RW_Reg()
        描述:
        寫數據value到reg寄存器
        /**************************************************/
        uchar SPI_RW_Reg(uchar reg, uchar value)
        {
        uchar status;
        CSN = 0; // CSN置低,開始傳輸數據
        status = SPI_RW(reg); // 選擇寄存器,同時返回狀態字
        SPI_RW(value); // 然后寫數據到該寄存器
        CSN = 1; // CSN拉高,結束數據傳輸
        return(status); // 返回狀態寄存器
        }
        /**************************************************/
        /**************************************************
        函數:SPI_Read()
        描述:
        從reg寄存器讀一字節
        /**************************************************/
        uchar SPI_Read(uchar reg)
        {
        uchar reg_val;
        CSN = 0; // CSN置低,開始傳輸數據
        SPI_RW(reg); // 選擇寄存器
        reg_val = SPI_RW(0); // 然后從該寄存器讀數據
        CSN = 1; // CSN拉高,結束數據傳輸
        return(reg_val); // 返回寄存器數據
        }
        /**************************************************/
        /**************************************************
        函數:SPI_Read_Buf()
        描述:
        從reg寄存器讀出bytes個字節,通常用來讀取接收通道
        數據或接收/發送地址
        /**************************************************/
        uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
        {
        uchar status, i;
        CSN = 0; // CSN置低,開始傳輸數據
        status = SPI_RW(reg); // 選擇寄存器,同時返回狀態字
        for(i=0; i pBuf[i] = SPI_RW(0); // 逐個字節從nRF24L01讀出
        CSN = 1; // CSN拉高,結束數據傳輸
        return(status); // 返回狀態寄存器
        }
        上一頁 1 2 下一頁

        關鍵詞: MSP430nRF24L0

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 察隅县| 冕宁县| 邵阳县| 辰溪县| 景洪市| 岑溪市| 铜川市| 怀安县| 乳山市| 石首市| 佛山市| 同心县| 斗六市| 新平| 阿拉善盟| 郎溪县| 许昌县| 彰武县| 和林格尔县| 江山市| 夏津县| 敖汉旗| 绥江县| 长葛市| 始兴县| 岳西县| 长海县| 连南| 太和县| 新绛县| 井研县| 桃园市| 汉寿县| 平利县| 黄浦区| 长岛县| 嘉鱼县| 高安市| 射阳县| 漳州市| 丰镇市|