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...