導航:首頁 > 操作系統 > 單片機spi

單片機spi

發布時間:2022-01-11 17:56:17

Ⅰ 51單片機SPI介面是什麼

SPI介面,串列外設介面(Serial Peripheral Interface),一種同步外設介面,它可以便單片機與各種外圍設備以串列方式進行通信以交換信息。外圍設備包括Flash RAM,網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。

一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只佔用四根線,節約了晶元的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,越來越多的晶元集成了這種通信協議,比如AT91RM9200。




(1)單片機spi擴展閱讀

利用SPI可以在軟體的控制下構成各種系統。如一個主控制器和幾個從控制器、幾個從控制器相互連接構成多主機系統(分布式系統)、一個主控制器和一個或幾個從I/O設備所構成的各種系統等。

在大多數應用場合,可以使用一個主控制器作為主控機來控制數據,並向一個或幾個從外圍器件傳送該數據。從器件只有在主控機發命令時才能接收或發送數據,其數據的傳輸格式是高位(MSB)在前,低位(LSB)在後。

Ⅱ 單片機模擬SPI協議和單片機自帶SPI介面的區別使用起來會有差別嗎,會不會影響最終效果

如果你模擬的好
就不會影響效果
以前我就是用io直接模擬的

首先你一定要徹底弄清時序圖
然後模擬
就好了
祝你成功

Ⅲ 單片機的sci模塊和spi模塊分別指的什麼啊

SPI(Serial Peripheral Interface--串列外設介面)匯流排系統是一種同步串列外設介面,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。
串列通信介面SCI(serial communication interface)由Motorola公司推出。它是 sci串口連接
一種通用非同步通信介面UART,與MCS-51的非同步通信功能基本相同。
簡單說一個同步一個非同步。

SCI是串口就是rs232,主要用來和其他的MCU或則電腦進行通信

spi是串列通信匯流排,主要和串列的外設進行數據交流,比如說串列的DA轉換器

SCI是非同步串列口,也就是UART,最高速度也不超1Mbps,SPI是同步串列口,速度可以到幾Mbps

Ⅳ 各位大神單片機中的SPI是什麼意思應該怎樣理解

SPI是串列外設介面,串列傳輸數據。分為主從2部分設備。一般控制字晶元datasheet會有說明。
(1)SDI – SerialData In,串列數據輸入;
(2)SDO – SerialDataOut,串列數據輸出;
(3)SCLK – Serial Clock,時鍾信號,由主設備產生;
(4)CS – Chip Select,從設備使能信號,由主設備控制。
很多晶元控制用這種介面方式,
還有另一種IIC介面

Ⅳ 51單片機怎樣實現SPI通訊

用傳統的51單片機實現SPI通訊,需要用I/O腳來模擬SPI協議,這比較麻煩。
選用STC8系列單片機,就具有了SPI介面了
,只需要對寄存器操作就行了。方便了很多了。如下圖,這是STC8系列中的4個子系列,還有其它的子系列,就不再列舉了。

Ⅵ 單片機中ISP和SPI的區別是什麼

ISP:全稱為InternetServiceProvider,其實ISP全稱即"互聯網服務提供商",即向廣大用戶綜合提供互聯網接入業務、信息業務、和增值業務的電信運營商。能提供撥號上網服務、網上瀏覽、下載文件、收發電子郵件等服務,是網路最終用戶進入Internet的入口和橋梁。它包括Internet接入服務和Internet內容提供服務。這里主要是Internet接入服務,即通過電話線把你的計算機或其他終端設備連入Internet。
從事以下增值電信業務需辦理ISP許可證?
1、為互聯網信息服務業務經營者等利用互聯網從事信息內容提供網上交易、在線應用等提供接入互聯網的服務,即網站接入;
2、為普通上網用戶等需要上網獲得相關服務的用戶提供接入網際網路的服務,即小區、寫字樓、個人網路(寬頻)接入等。
只要是涉及到上述兩種業務的公司就必須要辦理ISP許可證!
自行辦理有困難的話也可以向相關有經驗的代理機構像阿里雲等這些平台咨詢或者委託其辦理都可以。
ISP許可證備案流程
1、備案申請人向局行政服務窗口提交申請資料;
2、由局行政服務窗口負責查對所報材料的完整性進行初審把關;
3、申請ISP許可證備案材料齊全、符合法定形式的,省、自治區、直轄市通信管理局予以受理,並發出受理通知書;對不予受理的,應當向申請人者發出不予受理申請通知書,並說明理由;對申請材料不齊全或者不符合法定形式的,在5個工作日內一次性書面告知申請人需要補正的全部內容。
4、受理申請的,對申請資料交相關業務處室進行內容審核;
5、審核過程中,業務處室對申請材料內容不符合法定形式要求的,說明理由並交行政服務窗口一次告知申請人需要補正的全部內容;
6、相關業務處室將處室意見交局長或分管局長作出是否同意的行政許可決定後,及時將行政許可文書或不予許可決定交行政服務窗口,由服務窗口送達辦理ISP許可證備案申請人。

Ⅶ spi介面如何跟單片機連接

這要看你用的是硬體SPI還是軟體模擬SPI,如果是硬體SPI,也就是單片機自帶SPI模塊,只要寫相應的寄存器就可以,單片機應該有確定的SPI口,與從機(或主機)一一相連就可以了。如果是軟體模擬SPI,也就是通過IO口模擬SPI時序,隨便四個可以輸入輸出的IO口就可以。

Ⅷ 單片機的SPI通信怎麼用

一個前提,就是時鍾線始終是主機來產生的如果你是使用單片機內部SPI模塊的話只要往主機的發送寄存器裡面放入一個位元組,主機會在時鍾線自動產生8個脈沖,當主機的時鍾線,產生8個脈沖的時候,那麼此時 主機 從機發送寄存器發出一個位元組 接收寄存器接收到主機發送的位元組接收寄存器接收從機發送的一個位元組 發送寄存器發出一個位元組至於哪些數據是你要的,哪些數據是不要的,這個就根據你的數據通訊規范來選取了一般來說,主機在發送給從機的命令的時候,此時主機接收寄存器的接收到的數據是沒有用的,那就不去出來,如果要讓從機發送一個數據回來,那就隨便往發送寄存器裡面寫入一個數據,讓時鍾線自動產生8個脈沖,從而讓從機把他發送寄存器的數據移動主機的接收寄存器來

Ⅸ 怎麼實現單片機和PC機進行SPI通訊

實現單片機和PC機進行SPI通訊方法:
1:電路設計
設計的電路,利用兩片AT89C52晶元,一片做為發送模塊,一片做為接收模塊。分別編寫發送和接收程序,實現數據的發送和接受。通過LED顯示接收到的數據。通過示波器觀察輸出的波形。
2:編寫程序
根據設計好的電路及題目要求分別編寫數據發送程序和數據接收程序。 ①:數據發送程序 #define
uchar unsigned char
#define uint unsigned int

#define ulong unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //時鍾信號 sbit MOSI = P1^1; //主器件數據輸出,從器件數據輸入 sbit MISO = P1^2; //主器件數據輸入,從器件數據輸出
sbit SS = P1^3; //從器件使能信號
void Dat_Transmit(uchar dat) //發送數據程序
{ uchar i,datbuf;
datbuf=dat;
SS=1; while(SS){;} for(i=0;i<8;i++) {
while(SPICLK){;} if(datbuf&0x80) MISO=1; else
MISO=0;
datbuf=(datbuf<<1); while(~SPICLK){;}
}
}
void main(void)
{ uchar i; while(1) {
for(i=0;i<10;i++) {
Dat_Transmit(i);
}
}
}
②:數據接收程序 #define uchar unsigned char
#define uint unsigned int #define ulong
unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //時鍾信號 sbit MOSI = P1^1; //主器件數據輸出,從器件數據輸入 sbit MISO = P1^2; //主器件數據輸入,從器件數據輸出 sbit SS = P1^3; //從器件使能信號

//--------------------------- void Nop(void)
{ ;
}
void Delay(uchar t) { while(t--){;}
}

uchar Data_Receive(void) //數據接收程序
{ uchar i,dat=0,temp; bit
bt;

SPICLK=1; MISO=1; SS=0;
//選中器件
Nop(); Nop();
for(i=0;i<8;i++) { SPICLK=1;
Nop()
Nop(); Nop(); SPICLK=0; Nop(); Nop();
bt=MISO; if(bt)
temp=0x01;
else
temp=0x00;
dat=(dat<<1);

dat=(dat|temp);
}
SS=1; SPICLK=1;
return dat;

}
void main(void)
{ uchar exdat; uchar i=0;

uchar code
table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F}; P2=0;
while(1) { exdat=Data_Receive(); P0=table[exdat];
for(i=0;i<200;i++)
Delay(200);
}
}
3:電路模擬
將數據發送程序生成的HEX文件載入到發送數據的模塊,將數據接收程序生成的HEX文件載入到接收數據的模塊。在輸出埠連接LED燈等到輸出信息,利用示波器觀察輸出波形。
4:SPI匯流排簡介
SPI ( Serial Peripheral Interface ——串列外設介面) 匯流排是Motorola公司推出的一種同步串列介面技術。SPI匯流排系統是一種同步串列外設介面,允許MCU(微控制器)與各種外圍設備以串列方式進行通信、數據交換。外圍設備包括FLASHRAM、A/ D 轉換器、網路控制器、MCU 等。SPI,是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只佔用四根線,節約了晶元的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的晶元集成了這種通信協議。其工作模式有兩種:主模式和從模式。SPI是一種允許一個主設備啟動一個從設備的同步通訊的協議,從而完成數據的交換。也就是SPI是一種規定好的通訊方式。這種通信方式的優點是佔用埠較少,一般4根就夠基本通訊了(不算電源線)。同時傳輸速度也很高。一般來說要求主設備要有SPI控制器(也可用模擬方式),就可以與基於SPI的晶元通訊了。
利用SPI匯流排可在軟體的控制下構成各種系統。如1個主MCU和幾個從MCU、幾個從MCU相互連接構成多主機系統(分布式系統)、1個主MCU和1個或幾個從I/O設備所構成的各種系統等。在大多數應用場合,可使用1個MCU作為主控機來控制數據,並向1個或幾個從外圍器件傳送該數據。從器件只有在主機發命令時才能接收或發送數據。其數據的傳輸格式是高位(MSB)在前,低位(LSB)在後。
當一個主控機通過SPI與幾種不同的串列I/O晶元相連時,必須使用每片的允許控制端,這可通過MCU的I/O埠輸出線來實現。但應特別注意這些串列I/O晶元的輸入輸出特性:首先是輸入晶元的串列數據輸出是否有三態控制端。平時未選中晶元時,輸出端應處於高阻態。
若沒有三態控制端,則應外加三態門。否則MCU的MISO端只能連接1個輸入晶元。其次是輸出晶元的串列數據輸入是否有允許控制端。因為只有在此晶元允許時,SCK脈沖才把串列數據移入該晶元;在禁止時,SCK對晶元無影響。若沒有允許控制端,則應在外圍用門電路對SCK進行控制,然後再加到晶元的時鍾輸入端;當然,也可以只在SPI匯流排上連接1個晶元,而不再連接其它輸入或輸出晶元。
SPI介面是在CPU和外圍低速器件之間進行同步串列數據傳輸,在主器件的移位脈沖下,數據按位傳輸,高位在前,低位在後,為全雙工通信,數據傳輸速度總體來說比I2C匯流排要快,速度可達到幾Mbps。
5:SPI匯流排工作原理
SPI匯流排系統是一種同步串列外設介面,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。SPI有三個寄存器分別為:控制寄存器SPCR,狀態寄存器SPSR,數據寄存器。外圍設備、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。
介麵包括以下四種信號:
(1)MOSI – 主器件數據輸出,從器件數據輸入;

(2)MISO – 主器件數據輸入,從器件數據輸出;

(3)SCLK – 時鍾信號,由主器件產生;
(4) SS –從器件使能信號,由主器件控制,有的IC會標注為CS(Chip select)。 在點對點的通信中,SPI介面不需要進行定址操作,且為全雙工通信,顯得簡單高效。

Ⅹ 51單片機控制SPI介面晶元都是模擬SPI吧

恩,是的,51單片機沒有帶SPI控制器。給你模擬SPI控制nRF24L01程序參考,我的聯系方式看我名字

#include <reg52.h>
#include <intrins.h>

typedef unsigned char uchar;
typedef unsigned char uint;

//****************************************IO埠定義***************************************
sbit CSN =P2^0; //SPI 片選使能,低電平使能
sbit MOSI =P2^1; //SPI串列輸入
sbit IRQ =P2^2; //中斷.低電平使能
sbit MISO =P2^3; //SPI串列輸出
sbit SCK =P2^4; //SPI時鍾
sbit CE =P2^5; //晶元使能,高電平使能

//***********************************數碼管0-9編碼*******************************************
uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段碼
uchar TxBuf[32]=
{ /*
0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,
0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
*/
0x00
}; //
//************************************按鍵**********************************************
sbit KEY1=P3^6;
sbit KEY2=P3^7;
//***********************************數碼管位選**************************************************
sbit led1=P2^1;
sbit led0=P2^0;
sbit led2=P2^2;
sbit led3=P2^3;
//*********************************************NRF24L01*************************************
#define TX_ADR_WIDTH 5 // 5 uints TX address width
#define RX_ADR_WIDTH 5 // 5 uints RX address width
#define TX_PLOAD_WIDTH 32 // 20 uints TX payload
#define RX_PLOAD_WIDTH 32 // 20 uints TX payload
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址
uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址
//***************************************NRF24L01寄存器指令*******************************************************
#define READ_REG 0x00 // 讀寄存器指令
#define WRITE_REG 0x20 // 寫寄存器指令
#define RD_RX_PLOAD 0x61 // 讀取接收數據指令
#define WR_TX_PLOAD 0xA0 // 寫待發數據指令
#define FLUSH_TX 0xE1 // 沖洗發送 FIFO指令
#define FLUSH_RX 0xE2 // 沖洗接收 FIFO指令
#define REUSE_TX_PL 0xE3 // 定義重復裝載數據指令
#define NOP 0xFF // 保留
//*************************************SPI(nRF24L01)寄存器地址****************************************************
#define CONFIG 0x00 // 配置收發狀態,CRC校驗模式以及收發狀態響應方式
#define EN_AA 0x01 // 自動應答功能設置
#define EN_RXADDR 0x02 // 可用信道設置
#define SETUP_AW 0x03 // 收發地址寬度設置
#define SETUP_RETR 0x04 // 自動重發功能設置
#define RF_CH 0x05 // 工作頻率設置
#define RF_SETUP 0x06 // 發射速率、功耗功能設置
#define STATUS 0x07 // 狀態寄存器
#define OBSERVE_TX 0x08 // 發送監測功能
#define CD 0x09 // 地址檢測
#define RX_ADDR_P0 0x0A // 頻道0接收數據地址
#define RX_ADDR_P1 0x0B // 頻道1接收數據地址
#define RX_ADDR_P2 0x0C // 頻道2接收數據地址
#define RX_ADDR_P3 0x0D // 頻道3接收數據地址
#define RX_ADDR_P4 0x0E // 頻道4接收數據地址
#define RX_ADDR_P5 0x0F // 頻道5接收數據地址
#define TX_ADDR 0x10 // 發送地址寄存器
#define RX_PW_P0 0x11 // 接收頻道0接收數據長度
#define RX_PW_P1 0x12 // 接收頻道0接收數據長度
#define RX_PW_P2 0x13 // 接收頻道0接收數據長度
#define RX_PW_P3 0x14 // 接收頻道0接收數據長度
#define RX_PW_P4 0x15 // 接收頻道0接收數據長度
#define RX_PW_P5 0x16 // 接收頻道0接收數據長度
#define FIFO_STATUS 0x17 // FIFO棧入棧出狀態寄存器設置
//**************************************************************************************
void Delay(unsigned int s);
void inerDelay_us(unsigned char n);
void init_NRF24L01(void);
uint SPI_RW(uint uchar);
uchar SPI_Read(uchar reg);
void SetRX_Mode(void);
uint SPI_RW_Reg(uchar reg, uchar value);
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);
void nRF24L01_TxPacket(unsigned char * tx_buf);
//*****************************************長延時*****************************************
void Delay(unsigned int s)
{
unsigned int i;
for(i=0; i<s; i++);
for(i=0; i<s; i++);
}
//******************************************************************************************
uint bdata sta; //狀態標志
sbit RX_DR =sta^6;
sbit TX_DS =sta^5;
sbit MAX_RT =sta^4;
/******************************************************************************************
/*延時函數
/******************************************************************************************/
void inerDelay_us(unsigned char n)
{
for(;n>0;n--)
_nop_();
}
//****************************************************************************************
/*NRF24L01初始化
//***************************************************************************************/
void init_NRF24L01(void)
{
inerDelay_us(100);
CE=0; // chip enable
CSN=1; // Spi disable
SCK=0; // Spi clock line init high
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 寫本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 寫接收端地址
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 頻道0自動 ACK應答允許
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允許接收地址只有頻道0,如果需要多頻道可以參考Page21
SPI_RW_Reg(WRITE_REG + RF_CH, 0); // 設置信道工作為2.4GHZ,收發必須一致
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //設置接收數據長度,本次設置為32位元組
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //設置發射速率為1MHZ,發射功率為最大值0dB
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收發完成中斷響應,16位CRC,主發送
}
/****************************************************************************************************
/*函數:uint SPI_RW(uint uchar)
/*功能:NRF24L01的SPI寫時序
/****************************************************************************************************/
uint SPI_RW(uint uchar)
{
uint bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI
uchar = (uchar << 1); // shift next bit into MSB..
SCK = 1; // Set SCK high..
uchar |= MISO; // capture current MISO bit
SCK = 0; // ..then set SCK low again
}
return(uchar); // return read uchar
}
/****************************************************************************************************
/*函數:uchar SPI_Read(uchar reg)
/*功能:NRF24L01的SPI時序
/****************************************************************************************************/
uchar SPI_Read(uchar reg)
{
uchar reg_val;

CSN = 0; // CSN low, initialize SPI communication...
SPI_RW(reg); // Select register to read from..
reg_val = SPI_RW(0); // ..then read registervalue
CSN = 1; // CSN high, terminate SPI communication

return(reg_val); // return register value
}
/****************************************************************************************************/
/*功能:NRF24L01讀寫寄存器函數
/****************************************************************************************************/
uint SPI_RW_Reg(uchar reg, uchar value)
{
uint status;

CSN = 0; // CSN low, init SPI transaction
status = SPI_RW(reg); // select register
SPI_RW(value); // ..and write value to it..
CSN = 1; // CSN high again

return(status); // return nRF24L01 status uchar
}
/****************************************************************************************************/
/*函數:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*功能: 用於讀數據,reg:為寄存器地址,pBuf:為待讀出數據地址,uchars:讀出數據的個數
/****************************************************************************************************/
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
uint status,uchar_ctr;

CSN = 0; // Set CSN low, init SPI tranaction
status = SPI_RW(reg); // Select register to write to and read status uchar

for(uchar_ctr=0;uchar_ctr<uchars;uchar_ctr++)
pBuf[uchar_ctr] = SPI_RW(0); //

CSN = 1;

return(status); // return nRF24L01 status uchar
}
/*********************************************************************************************************
/*函數:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*功能: 用於寫數據:為寄存器地址,pBuf:為待寫入數據地址,uchars:寫入數據的個數
/*********************************************************************************************************/
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
uint status,uchar_ctr;

CSN = 0; //SPI使能
status = SPI_RW(reg);
for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) //
SPI_RW(*pBuf++);
CSN = 1; //關閉SPI
return(status); //
}
/****************************************************************************************************/
/*函數:void SetRX_Mode(void)
/*功能:數據接收配置
/****************************************************************************************************/
void SetRX_Mode(void)
{
CE=0;
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收發完成中斷響應,16位CRC ,主接收
CE = 1;
inerDelay_us(130);
}
/******************************************************************************************************/
/*函數:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
/*功能:數據讀取後放如rx_buf接收緩沖區中
/******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
sta=SPI_Read(STATUS); // 讀取狀態寄存其來判斷數據接收狀況
if(RX_DR) // 判斷是否接收到數據
{
CE = 0; //SPI使能
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
revale =1; //讀取數據完成標志
}
SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到數據後RX_DR,TX_DS,MAX_PT都置高為1,通過寫1來清楚中斷標志
return revale;
}
/***********************************************************************************************************
/*函數:void nRF24L01_TxPacket(unsigned char * tx_buf)
/*功能:發送 tx_buf中數據
/**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
CE=0; //StandBy I模式
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 裝載接收端地址
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 裝載數據
// SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收發完成中斷響應,16位CRC,主發送
CE=1; //置高CE,激發數據發送
inerDelay_us(10);
}

/***********************************************************************************************************
/*函數:init_uart(void)
/*功能:初始化串口;波特率4800bps
/**********************************************************************************************************/
void init_uart(void)
{
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFA;
TL1 = 0xFA;
PCON = 0x00;
TR1 = 1;
}

//************************************通過串口將接收到數據發送給PC端**************************************
void R_S_Byte(uchar R_Byte)
{
SBUF = R_Byte;
while( TI == 0 ); //查詢法
TI = 0;
}

//************************************工作指示燈**************************************
void power_on(void)
{
P0 = 0xfd;
Delay(6000);

P0 = 0xff;
Delay(6000);
}

//************************************主函數************************************************************
void main(void)
{
uchar i;
uchar temp =0;

init_uart();
init_NRF24L01();

nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data

Delay(6000);

//CE = 1;
while(1)
{
power_on();
nRF24L01_TxPacket(TxBuf);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
Delay(100);
//Delay(6000);
TxBuf[31] = TxBuf[31] + 1;
}
}

閱讀全文

與單片機spi相關的資料

熱點內容
微商授權查詢系統源碼 瀏覽:980
安卓什麼情況沒法建立新工程 瀏覽:219
氣球解壓社區活動 瀏覽:924
話費會員充值源碼 瀏覽:319
郵件接收伺服器叫什麼 瀏覽:529
代理伺服器被限制怎麼辦 瀏覽:234
atompython環境變數 瀏覽:911
記錄程序員 瀏覽:996
javabbs源代碼 瀏覽:231
文件夾命名帶什麼符 瀏覽:966
黑馬程序員全棧 瀏覽:225
萍鄉溯源碼魚膠零售 瀏覽:440
倖存者pdf 瀏覽:556
中國人壽保險app怎麼變更銀行卡號 瀏覽:118
node服務啟動命令 瀏覽:548
自編寶塔線源碼 瀏覽:139
電腦桌面解壓視頻教程 瀏覽:846
安卓手機玩三國戰略為什麼會卡 瀏覽:536
浪潮伺服器怎麼進入啟動項 瀏覽:156
華為當前手機壁紙放在哪個文件夾 瀏覽:446