stc單片機(jī)EEPROM讀寫--最簡潔的的拿來就用保證沒錯(cuò)^_^簡潔至上!

sfr isp_data=0xe2;
sfr isp_addrh=0xe3;
sfr isp_addrl=0xe4;
sfr isp_cmd=0xe5;
sfr isp_trig=0xe">

      技術(shù)頻道

      stc eeprom的實(shí)用讀寫演示,提供了一種eeprom動(dòng)

      stc單片機(jī)EEPROM讀寫--最簡潔的的拿來就用保證沒錯(cuò)^_^簡潔至上!

      sfr isp_data=0xe2;
      sfr isp_addrh=0xe3;
      sfr isp_addrl=0xe4;
      sfr isp_cmd=0xe5;
      sfr isp_trig=0xe6;
      sfr isp_contr=0xe7;

      unsigned char eeprom_read(unsigned int addres);
      void eeprom_write(unsigned int address,unsigned char wdata);
      void eeprom_eares(unsigned int addres);//扇區(qū)擦除。

      void eeprom_eares(unsigned int addres)//扇區(qū)擦除。
      {unsigned i;
      isp_addrl=addres; //低位地址
      isp_addrh=addres>>8; //高位地址
      isp_contr=0x01;
      isp_contr=isp_contr|0x80; //設(shè)時(shí)間與充ISP操作。
      isp_cmd=0x03; //扇區(qū)命命令
      isp_trig=0x46; //觸發(fā)
      isp_trig=0xb9; //觸發(fā)啟動(dòng)。
      for(i=0;i<3;i++);
      isp_addrl=0xff;
      isp_addrh=0xff;
      isp_contr=0x00;
      isp_cmd=0x00;
      isp_trig=0x00;

      }
      void eeprom_write(unsigned int addres,unsigned char write_data)//寫數(shù)據(jù)。
      {unsigned char i;
      isp_data=write_data; //要寫入的數(shù)據(jù)。
      isp_addrl=addres; //低位地址
      isp_addrh=addres>>8; //高位地址
      isp_contr=0x01;
      isp_contr=isp_contr|0x80; //設(shè)時(shí)間與充ISP操作。
      isp_cmd=0x02; //寫命令
      isp_trig=0x46; //觸發(fā)
      isp_trig=0xb9; //觸發(fā)啟動(dòng)。
      for(i=0;i<3;i++);
      isp_addrl=0xff;
      isp_addrh=0xff;
      isp_contr=0x00;
      isp_cmd=0x00;
      isp_trig=0x00;


      }
      unsigned char eeprom_read(unsigned int addres)
      {unsigned char i,z;
      isp_addrl=addres; //低位地址
      isp_addrh=addres>>8; //高位地址
      isp_contr=0x01;
      isp_contr=isp_contr|0x80; //設(shè)時(shí)間與充ISP操作。
      isp_cmd=0x01; //寫命令
      isp_trig=0x46; //觸發(fā)
      isp_trig=0xb9; //觸發(fā)啟動(dòng)。
      for(i=0;i<3;i++);
      isp_addrl=0xff;
      isp_addrh=0xff;
      isp_contr=0x00;
      isp_cmd=0x00;
      isp_trig=0x00;
      z=isp_data;
      return(z);


      }

      最給一個(gè)匯編的:
      ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      ;;; 內(nèi)部EEPROM讀寫定義
      ISP_DATA EQU 0E2H ;寫入讀出數(shù)據(jù)寄存器.
      ISP_ADDRH EQU 0E3H ;地址寄存器高8位
      ISP_ADDRL EQU 0E4H ;地址寄存器低8位
      ISP_CMD EQU 0E5H ;命令模式寄存器
      ISP_TRIG EQU 0E6H ;命令觸發(fā)寄存器
      ISP_CONTR EQU 0E7H ;ISP/IAP控制寄存器.
      ISP_IAP_BYTE_READ EQU 1 ;字節(jié)讀
      ISP_IAP_BYTE_PROGRAM EQU 2 ;字節(jié)編程,要空才能寫
      ISP_IAP_SECTOR_ERASE EQU 3 ;扇區(qū)擦除,
      WAIT_TIME EQU 1 ;20M以下為1
      BYTE_ADDR_HIGH EQU 60H ;高位地址
      BYTE_ADDR_LOW EQU 61H ;低位地址
      BYTE_WRITE_DATA EQU 62H ;要寫入的數(shù)據(jù)

      ;***********************內(nèi)部EEPROM操作*************************
      READ_EEPROM:MOV ISP_ADDRH,ISP_ADDRH ;送高地址
      MOV ISP_ADDRL,ISP_ADDRL ;送低地址
      MOV ISP_CONTR,#01h ;設(shè)置等等待時(shí)間
      ORL ISP_CONTR,#80h ;允許ISP/IAP操作
      MOV ISP_CMD,#01h ;送讀命令
      MOV ISP_TRIG,#46H ;觸發(fā)
      MOV ISP_TRIG,#0B9H ;觸發(fā)啟動(dòng).
      NOP
      NOP
      MOV ISP_CONTR,#00H
      MOV ISP_CMD,#00H
      MOV ISP_TRIG,#00H
      MOV ISP_ADDRH,#0FFH
      MOV ISP_ADDRL,#0FFH
      MOV 6AH,ISP_DATA ;讀出的數(shù)據(jù)放到6AH單元中。

      RET
      WRITE_EARES: MOV WDT,#34H
      CLR EA ;關(guān)中斷
      MOV ISP_ADDRH,ISP_ADDRH ;送高地址
      MOV ISP_ADDRL,ISP_ADDRL ;送低地址
      MOV ISP_CONTR,#1h ;設(shè)置等等待時(shí)間
      ORL ISP_CONTR,#10000000B ;允許ISP/IAP操作
      MOV ISP_CMD,#3h ;送扇區(qū)命令
      MOV ISP_TRIG,#46H ;觸發(fā)
      MOV ISP_TRIG,#0B9H ;觸發(fā)啟動(dòng).
      NOP
      NOP
      MOV ISP_CONTR,#00H
      MOV ISP_CMD,#00H
      MOV ISP_TRIG,#00H
      MOV ISP_ADDRH,#0FFH
      MOV ISP_ADDRL,#0FFH
      SETB EA
      RET
      WRITE_EEPROM:MOV WDT,#34H
      CLR EA
      MOV ISP_DATA,BYTE_WRITE_DATA ;要寫入的數(shù)據(jù)
      MOV ISP_ADDRH,ISP_ADDRH ;送高地址
      MOV ISP_ADDRL,ISP_ADDRL ;送低地址
      MOV ISP_CONTR,#1h ;設(shè)置等等待時(shí)間
      ORL ISP_CONTR,#10000000B ;允許ISP/IAP操作
      MOV ISP_CMD,#02h ;送寫命令
      MOV ISP_TRIG,#46H ;觸發(fā)
      MOV ISP_TRIG,#0B9H ;觸發(fā)啟動(dòng).
      NOP
      NOP
      MOV ISP_CONTR,#00H
      MOV ISP_CMD,#00H
      MOV ISP_TRIG,#00H
      MOV ISP_ADDRH,#0FFH
      MOV ISP_ADDRL,#0FFH
      SETB EA ;開中斷

      RET

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 国产一区二区三区免费| 国产精品一区二区香蕉| 无码人妻精品一区二区三区99仓本| 一区二区手机视频| 视频一区精品自拍| 国精品无码一区二区三区左线| 无码人妻精品一区二区三18禁| 亚洲大尺度无码无码专线一区 | 亚洲中文字幕乱码一区| 无码丰满熟妇浪潮一区二区AV| 白丝爆浆18禁一区二区三区| 日本高清成本人视频一区| 久久精品无码一区二区无码| 国产成人一区二区三区精品久久| 变态拳头交视频一区二区| 97一区二区三区四区久久| 国产一区二区三区在线观看免费| 99精品国产高清一区二区三区 | 一区二区三区美女视频| 亚洲av无码不卡一区二区三区| 亚洲AV日韩AV一区二区三曲| 狠狠做深爱婷婷综合一区 | 性盈盈影院免费视频观看在线一区| 变态调教一区二区三区| 激情内射亚洲一区二区三区爱妻| 精品一区二区三区影院在线午夜 | 国产情侣一区二区| 成人免费区一区二区三区| 国产乱码精品一区二区三区麻豆 | 亚洲AⅤ视频一区二区三区| 亚洲国产av一区二区三区丶| 国产99精品一区二区三区免费| 午夜DV内射一区二区| 一区二区三区在线免费| 97一区二区三区四区久久| 日韩精品一区二区三区大桥未久| 国产大秀视频一区二区三区| 亚洲视频在线一区二区三区| 精品aⅴ一区二区三区| 国产日韩精品一区二区在线观看 | 无码人妻精品一区二区三18禁|