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

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

我的W29C040的讀寫程序是這樣設(shè)計的~!

作者:ajaxyy 欄目:單片機
我的W29C040的讀寫程序是這樣設(shè)計的~!
主程序
main()
{
   
   WDTCN = 0xde;     // 禁止軟件看門狗定時器
   WDTCN = 0xad;     //不禁止看門狗,定時器1將工作不正常。
   
   
   //SYSCLK_Internal();
   SYSCLK_External();

   PORT_Init();

   Timer1_Init();     //定時器1,2,3初始化
   Timer2_Init (SYSCLK_OUT/BAUDRATE/32);

   UART0_Init ();

   EIE2 |= 0x02;     //允許ADC中斷
   IE|=0x10;         //允許UART中斷
   EA = 1;           //允許全局中斷

   TR1=1;            //啟動定時器1,LED動態(tài)顯示
   TR2=1;            //啟動定時器2,波特率發(fā)生器
    FLASH_init();
    FLASH_erase();
    addl_FLASH=0;
    count_page=0;
    tempf=0x5A;
    do{loopw();
    }while(1);       

}

延時函數(shù),用的是11.0592M的晶振
void delayms(CHAR ticks)
{
unsigned CHAR count;
for (ticks=ticks; ticks>=0; ticks--)
{
   for (count = 0; count<=13; count++)
    {
     }
  }
}
FLASH初始化函數(shù)
void FLASH_init(void)
{
PRT1CF=0x00;
P1=0xff;           //P1口輸入總線

PRT2CF=0xff;
P2=0xff;           //允許P2口輸出

PRT3CF=0xff;       //允許P3口輸出
P3 &=0x7f;         //LE=0
P3 |=0x78;         //CE1,CE2,WE,OE=1
}


void select_sec(void)
{
     SWITCH(count_sec) //選擇FLASH存儲的段
       {

       case 0: P3 &=0xf8; break; /* 29C040 a18a17a16= 000 00000-0ffff */

       case 1: P3 &=0xf9;P3 |=0x01; break; /* 29C040 a18a17a16= 001 10000-1ffff */

       case 2: P3 &=0xfa;P3 |=0x02; break; /* 29C040 a18a17a16= 010 20000-2ffff */

       case 3: P3 &=0xfb;P3 |=0x03; break; /* 29C040 a18a17a16= 011 30000-3ffff */

       case 4: P3 &=0xfc;P3 |=0x04; break; /* 29C040 a18a17a16= 100 40000-4ffff */

       case 5: P3 &=0xfd;P3 |=0x05; break; /* 29C040 a18a17a16= 101 50000-5ffff */

       case 6: P3 &=0xfe;P3 |=0x06; break; /* 29C040 a18a17a16= 110 60000-6ffff */

       case 7: P3 |=0x07; break; /* 29C040 a18a17a16= 111 70000-7ffff */

       }
}

FLASH的察除函數(shù)
void FLASH_erase(void)
{
  
  count_page=0x55;
  addl_FLASH=0x55;            //A0-A7低地址
  tempf=0xAA;
  FLASH1_w();

  count_page=0x2A;
  addl_FLASH=0xAA;            //A0-A7低地址
  tempf=0x55;
  FLASH1_w();
  

  count_page=0x55;
  addl_FLASH=0x55;            //A0-A7低地址
  tempf=0x80;
  FLASH1_w();

  count_page=0x55;
  addl_FLASH=0x55;            //A0-A7低地址
  tempf=0xAA;
  FLASH1_w();
  
  count_page=0x2A;
  addl_FLASH=0xAA;            //A0-A7低地址
  tempf=0x55;
  FLASH1_w();
  
  count_page=0x55;
  addl_FLASH=0x55;            //A0-A7低地址
  tempf=0x10;
  FLASH1_w();
  
  delayms(50);
}
FLASH的寫讀函數(shù)
void FLASH1_r(void)
{
CE1=0;

select_sec();
P2=count_page;//A8-A15高地址
             
PRT1CF=0x0ff;       //允許D為輸出
P1=addl_FLASH;  
           //A0-A7低地址

LE=1;
_nop_();
LE=0;            //鎖存地址

  PRT1CF=0x00;//允許D為輸入
P1=0x0ff;

   OE=0;   //P3&=0xf7//讀選通

_nop_();
         
tempf=P1;
          
OE=1;//P3 |=0x08

CE1=1;//P3 |=0x20
}


//FLASH的寫函數(shù)
void FLASH1_w(void)
{
CE1=0;
select_sec();
P2=count_page;           //A8-A15高地址
PRT1CF=0xff;      //允許D為輸出
P1=addl_FLASH;           //A0-A7低地址

LE=1;
_nop_();
LE=0;             //鎖存地址

P1=tempf;

WE=0;             //鎖存地址到FLASH
_nop_();

WE=1;             //鎖存數(shù)據(jù)到FLASH

PRT1CF=0x00;
P1=0xff;          //允許D輸入
CE1=1;

}


//***************************FLASH1存儲**********************
void loopw(void)
{
  
    bit data flage;
    flage=EA;
    EA=0;
  
    FLASH1_w();
    //loopr();

    addl_FLASH++;
    if (addl_FLASH==0)
    {
     delayms(10);
     EA=flage;
     addl_FLASH=0;
     count_page=0;
     loopr();
     }
    
       
     
  }



//***************************FLASH1串口發(fā)送**********************
void loopr(void)
  {
      
      FLASH1_r();
    addl_FLASH++;
       
      if(addl_FLASH!=0)
     /* TI=0;
        SBUF=tempf;
        while(!TI);
   &
2樓: >>參與討論
ajaxyy
沒有人看嘛?搞不清楚啊,唉,最近一直被這個煩惱
 
3樓: >>參與討論
zyncn
先把芯片放在編程器上,解保護后再試試
 
4樓: >>參與討論
hotpower
好好的51全讓你搞砸了
硬件不規(guī)范,MOVX用不成,ALE,RD,WE還要模擬...

樓主真累呀...

5樓: >>參與討論
ajaxyy
我用的是C8051F系列的,
都是直接對端口操作,不存在樓上所說的問題啊

6樓: >>參與討論
jqimao
W29C040和020我一次都沒寫進去過。
估計是芯片的原因,我花了15塊錢買了片W29C040,隨便怎么弄,數(shù)據(jù)就是不進去,跟你一樣,讀出來全是FF,華邦的W29C020也相同。我心不干,隨后跑到舊貨市場花5塊錢從別人的費主板上撬下一片AT29C020,回來一寫,一次OK!
所以,從現(xiàn)在起,我再也不用華邦的存儲產(chǎn)品了,還是ATMEIL的兼容性好。

7樓: >>參與討論
hotpower
兩個問題
1.樓主雖然說可以寫入,但此設(shè)計絕對不鼓勵.

2.jqimao可能沒去掉寫保護,所以寫不進入.并非兼容的問題.

8樓: >>參與討論
makesoft
人家編程器寫的好好的,這還存在兼容性的問題啊?
估計是芯片的原因,我花了15塊錢買了片W29C040,隨便怎么弄,數(shù)據(jù)就是不進去,跟你一樣,讀出來全是FF,華邦的W29C020也相同。我心不干,隨后跑到舊貨市場花5塊錢從別人的費主板上撬下一片AT29C020,回來一寫,一次OK!
所以,從現(xiàn)在起,我再也不用華邦的存儲產(chǎn)品了,還是ATMEIL的兼容性好。

人家編程器寫的好好的,這還存在兼容性的問題啊?


* - 本貼最后修改時間:2005-7-10 9:54:44 修改者:makesoft

9樓: >>參與討論
JQIMAO
請教hotpower如何去掉寫保護,我的編程器是最最低檔的
 
10樓: >>參與討論
john_light
總覺得樓主的硬件連接最好重新設(shè)計
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
16M晶振用30P得電容可以嗎?
W77E58雙串口使用問題
那未兄弟知道*5  的8*8LED點陣多少錢一塊
老實說,我覺得學(xué)好一種MCU的最好方法就是先去這個MCU的論壇灌水
幫個忙好嗎!AT80C52寫 Am29f040寫不了??
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號