<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          C8051F020的Flash操作

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          C8051F020的Flash可以實現(xiàn)IAP功能(In Application Programming),即程序可對Flash存儲區(qū)進行編程,也就是說Flash除了可以存放程序代碼,還可以在剩下的空間內(nèi)存儲數(shù)據(jù),即起到EEPROM的功能,下圖是C8051F020的存儲組織結(jié)構(gòu)圖

          本文引用地址:http://www.ex-cimer.com/article/201611/320879.htm


          可以看到它的結(jié)構(gòu)是64K+128字節(jié)的形式,0xfe00~0xffff為工廠保留區(qū),不能進行操作,當64K的Flash用作存儲數(shù)據(jù)時,先確定程序代碼的位置,以免覆蓋程序?qū)е鲁鲥e,還有操作Flash前必須禁止中斷,否則可能會出現(xiàn)無法預(yù)知的錯誤,下面是我寫的驅(qū)動,經(jīng)測試沒問題:

          void Flash_area_Erase(bit type,uint addr)
          {//flash擦除,type為0代表128字節(jié)儲存區(qū),為1代表64K存儲區(qū)(512字節(jié)/扇區(qū))
          bit EA_S;
          EA_S=EA;
          EA=0;
          if(!type) PSCTL=0x07;
          else PSCTL=0x03;
          FLSCL=0x01;//允許寫
          *(uchar xdata *)addr=0xff;
          PSCTL=0;
          FLSCL=0;
          EA=EA_S;
          }

          uchar Flash_area_Read(bit type,uint addr)
          {//flash讀取,type為0代表128字節(jié)儲存區(qū),為1代表64K存儲區(qū)(512字節(jié)/扇區(qū))
          uchar dat;
          bit EA_S;
          EA_S=EA;
          EA=0;
          if(!type) PSCTL=0x04;
          else PSCTL=0;
          dat=*(uchar code *)addr;
          PSCTL=0;
          EA=EA_S;
          return(dat);
          }

          void Flash_area_Write(bit type,uint addr,uchar dat)
          {//flash寫入,type為0代表128字節(jié)儲存區(qū),為1代表64K存儲區(qū)(512字節(jié)/扇區(qū))
          bit EA_S;
          EA_S=EA;
          EA=0;
          if(!type) PSCTL=0x05;
          else PSCTL=0x01;
          FLSCL=0x01;
          *(uchar xdata *)addr=dat;
          PSCTL=0;
          FLSCL=0;
          EA=EA_S;
          }

          這里要指出的是,在*(uchar code *)addr中,addr轉(zhuǎn)化為指向ROM的uchar型變量的指針,即它指向的數(shù)是uchar型的,但其本身作為一個地址是uint型的。



          關(guān)鍵詞: C8051F020Flash操

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();