音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

89c51操作k9f2808

作者:cxc51 欄目:單片機(jī)
89C51操作K9F2808
寫(xiě)三個(gè)數(shù)據(jù)到K9F2808前三字節(jié),擦寫(xiě)讀都正確。下面是我寫(xiě)的程序,大家看看有哪些地方不妥可以改進(jìn)的。我用的是89C52寫(xiě)的,與k9d2808電平不配,除了用電平轉(zhuǎn)換芯片外,還可以用分立元件處理嗎?還有就是想建壞塊表,哪位給些提示!

sbit flash_cle=P2^6;
sbit flash_ce=P2^7;
sbit flash_ale=P2^5;
sbit flash_we=P3^4;
sbit flash_re=P3^5;
sbit flash_rb=P3^0;
unsigned CHAR data savedata[16] _at_ 0x60;
void read(unsigned CHAR *buffer)  //讀操作
{
   unsigned int i;
      
//寫(xiě)命令
   flash_ce=0;  
   flash_cle=1;
   flash_we=0;
   P1=0x00;
   flash_we=1;
   flash_cle=0;
   flash_ale=1;

//寫(xiě)地址
   flash_we=0;
   P1=0x00;
   flash_we=1;
   
   flash_we=0;
   P1=0x00;
   flash_we=1;
   
   flash_we=0;
   P1=0x00;
   flash_we=1;
   flash_ale=0;
   
   while(!flash_rb);
   for(i=0;i<3;i++)
   {
      flash_re=0;
      *buffer++=P1;
      flash_re=1;
   }
   flash_ce=1;
}

void write(unsigned CHAR *buffer)  //寫(xiě)操作
{
   unsigned int i;
   flash_cle=0;
   flash_ce=0;
   flash_we=1;
   flash_ale=0;
   flash_re=1;

//寫(xiě)命令  
   flash_cle=1;
   flash_we=0;
   P1=0x80;
   flash_we=1;
   flash_cle=0;
   

//寫(xiě)地址
   flash_ale=1;
   flash_we=0;
   P1=0x00;
   flash_we=1;
   
   flash_we=0;
   P1=0x00;
   flash_we=1;
   
   flash_we=0;
   P1=0x00;
   flash_we=1;
   flash_ale=0;
   
      flash_we=0;
      P1=0x0a;
      flash_we=1;
      
      flash_we=0;
      P1=0x0b;
      flash_we=1;
      
      flash_we=0;
      P1=0x0c;
      flash_we=1;

    
//寫(xiě)命令  
   flash_cle=1;
   flash_we=0;
   P1=0x10;
   flash_we=1;
//讀狀態(tài)
   flash_cle=1;
   flash_we=0;
   P1=0x70;
   flash_we=1;
   flash_cle=0;
   flash_re=0;
   *(buffer+6)=P1;
   flash_re=1;
   
   flash_ce=1;
}

void erase_block(unsigned CHAR *buffer)
{
   unsigned int i;
   flash_cle=0;
   flash_ce=1;
   flash_we=1;
   flash_ale=0;
   flash_re=1;
   
//寫(xiě)命令
   flash_cle=1;
   flash_ce=0;
   flash_we=0;
   P1=0x60;
   flash_we=1;
//寫(xiě)頁(yè)地址  
   flash_ale=1;
   flash_cle=0;
   flash_we=0;
   P1=0x00;
   flash_we=1;
   
   flash_we=0;
   P1=0x00;
   flash_we=1;
//寫(xiě)命令  
   flash_cle=1;
   flash_ale=0;
   flash_we=0;
   P1=0xd0;
   flash_we=1;
   flash_cle=0;  
   for(i=0;i<10;i++);

//讀狀態(tài)
   flash_cle=1;
   flash_we=0;
   P1=0x70;
   flash_we=1;
   flash_cle=0;
   flash_re=0;
   *(buffer+5)=P1;
   flash_re=1;
}
   
main(void)
{
   while(1)
   {
     erase_block(&savedata);
      write(&savedata);
      read(&savedata);
   }
}


2樓: >>參與討論
cxc51
讀ID程序
讀ID程序如下,成功讀出數(shù)據(jù)。對(duì)于程序?qū)懛ú煌椎牡胤秸?qǐng)高手賜教,第一次用C51啊...
void read_id(void)  //讀操作
{
   unsigned CHAR *id=savedata;
   flash_cle=0;
   flash_ce=0;
   flash_we=1;
   flash_ale=0;
   flash_re=1;

//寫(xiě)命令  
   flash_cle=1;
   flash_we=0;
   P1=0x90;
   flash_we=1;
   flash_cle=0;
   flash_ale=1;

//寫(xiě)地址
   flash_we=0;
   P1=0x00;
   flash_we=1;
   flash_ale=0;
   flash_ale=0;
   
//讀id
   flash_re=0;
   while(!flash_rb);
   *id=P1;
   flash_re=1;
     
   flash_re=0;
   while(!flash_rb);
   *(id+1)=P1;   
}


3樓: >>參與討論
2shift
電平轉(zhuǎn)換可以用芯片74LVC4245,
利用K9F2808的第0塊永遠(yuǎn)不壞的特性,建立壞塊表。第一次使用芯片的時(shí)候,對(duì)每個(gè)快掃描一遍,檢測(cè)出壞塊,建立表格。以后讀寫(xiě)的時(shí)候,到了相應(yīng)的壞塊出,跳過(guò)就行了。我記得好像是每個(gè)塊的0,1頁(yè)的第517(可能使這個(gè),具體看數(shù)據(jù)手冊(cè))個(gè)字節(jié),在塊擦出后,如果不是0xff,那馬么這個(gè)塊就是壞塊。

4樓: >>參與討論
cxc51

K9F28081024塊,把一個(gè)壞塊號(hào)記下來(lái)要用兩個(gè)字節(jié)吧?寫(xiě)入數(shù)據(jù)前是不是一定要擦除塊,那這樣的話(huà),找到一個(gè)壞塊號(hào)就寫(xiě)入K9F2808的第0塊里,之前的數(shù)據(jù)不是給擦除了嗎?!

5樓: >>參與討論
zyork
請(qǐng)問(wèn)關(guān)于你用的振蕩器頻率
中間不需要有延時(shí)嗎?你有沒(méi)有加外部上拉電阻。苛硗饽阕x出的ID十四個(gè)字節(jié)還是五個(gè)字節(jié)?我也剛開(kāi)始用

參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
IO口模擬串口是不是接收的IO口一定要用到外部中斷那個(gè)引腳?
求:PS/2鍵盤(pán)與51的通信程序
馬達(dá)控制問(wèn)題。。。。。
有誰(shuí)用過(guò)MAX197的呀?給我點(diǎn)建議吧!
求:PS/2鍵盤(pán)時(shí)鐘,數(shù)據(jù)線(xiàn)波形測(cè)試方法
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)