原创 at24c256的测试程序 pic18系列

2008-2-1 08:28 2867 8 8 分类: MCU/ 嵌入式

zip
include
//**************************************************


    /********* at24c256的测试程序


            ah="0";al=0x01;i=0x01;
             j="0x01";
              do
                    { Write_Byte(ah,al,i);
                      al++;
                      i++;
                      j--;
                    }while(j!=0);



                   // 写入eeprom后需要一定的延时。
                   ah="0";al=0x01;
                   j="0x01";
                   do
                         {i=Read_Byte(ah,al);
                          j--;
                         }while(j!=0);



//********************************************************/


 /*****************************************
** 函数名: Write a byte
** 输 入: eep_adh,eep_adl,eep_data
**    eep_data   要写入的字节
**    eep_adh   要写入24c256的高8位地址
**    eep_adl   要写入24c256的低8位地址
** 输 出: no
** 功能描述:a byte 写入24c256
** 全局变量:
** 调用模块:模拟I2C BUS SUB
** 作 者:lijun  leejun@qingdaonews.com
** 日 期:2002/6/3


//*********************************写一字节***/



void Write_Byte(unsigned int addr,unsigned char eep_data)
     {unsigned char i,eep_al,eep_ah;
 
      WP="0";
 eep_al = addr &0x00ff;
 eep_ah = (addr>>8)& 0x00ff;
      sta();
      i="0xa0";
      wrbyt(i);
      cack();


      wrbyt(eep_ah);
      cack();
      wrbyt(eep_al);
      cack();
      wrbyt(eep_data);
      cack();
      stop();
      WP="1";
      }
/*******************************************/
/*****************************************
** 函数名:ReadAt24c256
** 输 入: eep_adh,eep_adl
**       eep_adh   要写入24c256的高8位地址
**       eep_adl   要写入24c256的低8位地址
** 输 出: eep_data  要读出的字节。
** 功能描述:a byte 读出24c256
** 全局变量:
** 调用模块:模拟I2C BUS SUB
** 作 者:lijun  leejun@qingdaonews.com
** 日 期:2002/08/26
** 版本 1.0
******************************************/



unsigned char  ReadAt24c256(unsigned int addr)   // eep_adh,unsigned char eep_adl)
         {unsigned char temp,eep_adh,eep_adl;
   eep_adh = (addr >>8)& 0x00ff;
  eep_adl = addr & 0x00ff;


          sta();
          temp="0xa0";
         // _nop_();
          wrbyt(temp);
          cack();


          wrbyt(eep_adh);
          cack();
          wrbyt(eep_adl);
          cack();


          sta();
          temp =0xa1;
          wrbyt( temp );
          cack();


          temp="rdbyt"();
          mnack();
          stop();
          return(temp);
         }
//***************************************************

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条