你可以把這個等待當成應答,或者寫入完成標志位,怎么叫都行,你理解就行了
1: 把寫入一個完整數據(這包括寫下地址,讀寫標志等等)和等待分開寫,寫兩個函數
2: 聲明一個僵局位,或者一個全局u8變量都行,看實際情況吧,我這行就用 F 來代替吧, 現在定義規則: F == 1 就是正在寫入, F !=1 就是寫入完成
3:這個是你的寫入函數
- void E2_WriteByte(unsigned char addr,unsigned char dat)
- {
- unsigned char sta;
- SPI_CS = 0;
- spiWriteByte(WREN);
- SPI_CS = 1;
- SPI_CS = 0;
- spiWriteByte(WRITE);
- spiWriteByte(addr);
- spiWriteByte(dat);
- SPI_CS = 1;
- F = 1://寫入完整的數據后,F置位
- }
這個是讀取函數,這個函數可以是有返回值的,也可以是不返回,在函數中操作F就可以了有的單片機返回參數代碼量和RAM占用多一點,對于幾十B運行內存的單片機來說,這很重要,看你自己的情況
- void read(void)
- {
- SPI_CS = 0;
- spiWriteByte(RDSR);
- sta = spiReadByte();
- SPI_CS = 1;
- if((sta & 0x01) == 0)
- {
- F = 0;
- }
- }
那么好,在主程序中就可以通過F的值來進行其它操作了
|