AT93C46 SPI接口EEPROM讀寫程序_第1頁
AT93C46 SPI接口EEPROM讀寫程序_第2頁
AT93C46 SPI接口EEPROM讀寫程序_第3頁
AT93C46 SPI接口EEPROM讀寫程序_第4頁
AT93C46 SPI接口EEPROM讀寫程序_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、AT93C46 SPI接口EEPROM讀寫程序/-函數聲明- #include "reg51.h" #include "intrins.h" /-管腳聲明- sbit CS_93=P10; sbit CLK_93=P11; sbit DI_93=P12; sbit DO_93=P13; sbit VCC_93=P14; #define READ_c 0x02 #define WRITE_c 0x01 #define ERASE_c 0x03 #define EWEN_c 0x00 #define EWDS_c 0x00 #define ERAL_c 0x

2、00 #define WRAL_c 0x00 /- / 函數名稱: delay / 入口參數: N / 函數功能:延時子程序,實現(16*N+24)us的延時 / 系統采用11.0592MHz的時鐘時,延時滿足要求,其它情況需要改動 /- void delay(unsigned int N) int i; for(i=0;i<N;i+); /- / 函數名稱: SEND_1 / 函數功能: 送1位數據"1" /- void SEND_1(void) DI_93=1; CLK_93=1; _nop_(); CLK_93=0; _nop_(); /- / 函數名稱: SE

3、ND_0 / 函數功能: 送1位數據"0" /- void SEND_0(void) DI_93=0; CLK_93=1; _nop_(); CLK_93=0; _nop_(); /- / 函數名稱: SEND_0 / 函數功能: 送1位數據"0" /- void start_operation(unsigned char operation_code) CS_93=1; SEND_1(); /起始位 if (operation_code&0x02) /操作碼 SEND_1(); else SEND_0(); if (operation_code

4、&0x01) SEND_1(); else SEND_0(); /- / 函數名稱: SEND_BYTE / 入口參數: dd,待發送的數據 / 函數功能: 送1BYTE數據 /- void SEND_BYTE(unsigned char dd) unsigned char i; for (i=0;i<8;i+) if (dd>=0x80) SEND_1(); else SEND_0(); dd=dd<<1; /- / 函數名稱: RECEIVE_BYTE / 返回值: dd,待接收的數據 / 函數功能: 送1BYTE數據 /- unsigned char RE

5、CEIVE_BYTE(void) unsigned char i,dd; DO_93=1; for (i=0;i<8;i+) dd<<=1; CLK_93=1;_nop_(); CLK_93=0;_nop_(); if (DO_93) dd|=1; return(dd); /- / 函數名稱: EWEN / 函數功能: 擦/寫允許指令 / 捎讜諫系綹次緩?,AT93CXX首先將處于擦/寫不允許狀態。 / 故該指令必須在所有編程模式前執行,一旦該指令執行后, / 只要外部沒有斷電就可以對芯片進行編程。 /- void EWEN(void) _nop_(); CS_93=1; st

6、art_operation(EWEN_c); SEND_BYTE(0xC0); CS_93=0; /- / 函數名稱:EWDS / 函數功能: 擦寫截止 / 使用該指令可對寫入的數據進行保護 /- void EWDS(void) _nop_(); CS_93=1; start_operation(EWDS_c); SEND_BYTE(0x00); CS_93=0; /- / 函數名稱: ERAL / 函數功能: 片擦 / 該指令可將整個存貯器陣列置為1,其它功能與地址擦指令相同 / 要求VCC = 4.5V to 5.5V。 /- void ERAL(void) _nop_(); CS_93=

7、1; start_operation(ERAL_c); SEND_BYTE(0x80); CS_93=0; /- / 函數名稱: READ_BYTE / 函數功能: 從存儲區讀一字節數據 /- unsigned char READ_BYTE(unsigned char address) unsigned char dat; CS_93=CLK_93=0; CS_93=1; start_operation(READ_c); SEND_BYTE(address); dat=RECEIVE_BYTE(); CS_93=0; return(dat); /- / 函數名稱: WRITE_BYTE / 入

8、口參數: address。dat / 返回值: 1或0,表示成功寫入 / 函數功能: 寫一字節數據到存儲區 /- bit WRITE_BYTE(unsigned char address,unsigned char dat) unsigned char e,time,temp=address; e=0; while (e<3) CS_93=CLK_93=0; CS_93=1; EWEN(); _nop_(); CS_93=1; _nop_(); start_operation(WRITE_c); SEND_BYTE(address); SEND_BYTE(dat); CS_93=0; _nop_(); CS_93=1; time=0; DO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論