STC15系列微控制器SPI使用教程(三)

2021-10-09 23:12:03 字數 2114 閱讀 3509

stc15系列微控制器spi使用教程(一)

//資料型別重定義

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

//io埠定義

sbit miso = p2^2;

//主機讀從裝置(主入從出)

sbit mosi = p2^3;

//主機寫從裝置(主出從入)

sbit sck = p2^1;

//時鐘訊號

sbit ce = p2^5;

sbit cs = p2^4;

//片選訊號(控制晶元是否被選中)

sbit irq = p3^2;

//int0

uchar spi_rw

(uchar byte)

return byte;

//最後返回從miso讀出的資料

}

//nrf24l01相關巨集定義

#define nop 0xff

//空操作

#define read_reg 0x00

#define write_reg 0x20

#define tx_addr 0x10

//spi寫暫存器

//reg:指定暫存器位址

//value:寫入的值

uchar spi_rw_reg

(uchar reg, uchar value)

//讀取spi暫存器值

//reg:要讀的暫存器

uchar spi_read

(uchar reg)

//在指定位置寫指定長度的資料

//reg:暫存器(位置)

//*pbuf:資料指標

//bytes:資料長度

//返回值,此次讀到的狀態暫存器值

uchar spi_write_buf

(uchar reg, uchar *pbuf, uchar bytes)

cs =1;

//關閉spi傳輸

return status;

// 返回讀到的狀態值

}//在指定位置讀出指定長度的資料

//reg:暫存器(位置)

//*pbuf:資料指標

//bytes:資料長度

//返回值,此次讀到的狀態暫存器值

unsigned

char

spi_read_buf

(unsigned

char reg,

unsigned

char

*pbuf,

unsigned

char bytes)

cs =1;

// 關閉spi傳輸

return status;

// 返回讀到的狀態值

}//檢測24l01是否存在

//返回值:0,成功;1,失敗

uchar nrf24l01_check

(void);

uchar buf1[5]

; uchar i;

ce =0;

spi_write_buf

(write_reg + tx_addr, buf,5)

;spi_read_buf

(tx_addr, buf1,5)

;//讀出寫入的位址

ce =1;

for(i =

0; i <

5; i++)if

(buf1[i]

!=0xa5

)break;if

(i!=5)

return1;

//檢測24l01錯誤

return0;

//檢測到24l01

}//主函式

void

main

(void

)else

while(1

);}

stc15系列微控制器spi使用教程(一)

微控制器學習筆記 STC15微控制器ADC

將模擬訊號轉換成數碼訊號的電路,我們稱其為模數轉換器,簡稱a d轉換器或adc analog to digital converter 同理,將數碼訊號轉換成模擬訊號的電路稱為數模轉換器,簡稱d a轉換器或dac,微控制器能夠儲存的資料都是數字型別的。一 逼近式adc原理 簡介 在進行轉化時,一般都...

STC15微控制器的EEPROM程式設計

在程式中使用 stc15微控制器是乙個8位的微控制器,據說在世界上銷量最大,是國產的品牌。其中也有許多值得稱道的地方,比如不用晶振,不用外部的儲存器,flash可以做記憶體使用等。可以進入休眠狀態,外部中斷就可以喚醒等。在使用者需要保持資料,當掉電可以儲存這些資料,等下次啟動後繼續使用資料。這個功能...

STC15 微控制器 利用 外部中斷 測頻率

中斷測頻率 先來看張圖 圖中標明 itx 0 時 下降沿觸發中斷 itx 1 時 上公升沿,下降沿均可觸發中斷,這裡要注意不是隨便乙個io口有上公升沿或下降沿時都觸發中斷,比如我的int0 對應的埠是p32 所以 只有p32埠有上公升沿 下降沿時才會觸發外部中斷0。include include t...