⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at24c32(64).c

📁 c51源代码
💻 C
字号:
/************************/
  void STA(void)    /*START IIC*/
{  SDA=1;
   SCL=1;
   dltime();
   SDA=0;
   dltime();
   SCL=0;
   dltime();
}

   void STOP(void)   /*STOP IIC*/
 {  SDA=0;
           SCL=1;
           dltime();
           SDA=1;
           dltime();
           SCL=0;
           dltime();
 }

        void MACK(void)   /*SEND ANSWER */
 {  SDA=0;
           SCL=1;
           dltime();
           SCL=0;
           dltime();
		   SDA=1;
 }

         void MNACK()  /*SEND NO ANSWER */
 {  SDA=1;
            SCL=1;
            dltime();
            SCL=0;
            dltime();
            SDA=0;
            _nop_();
 }

          void CACK(void)  /* CHECK ANSWER */
 {  SDA=1;
             SCL=1;
             FLAG=0;
             if (SDA==0)
              goto tnext;
             FLAG=1;
 tnext:      SCL=0;
             dltime();
 }

   /*write a byte to SDA ,TransData */
          void WRBYT()
        {  unsigned char data i,W;
             W=0;
             for(i=0;i<8;i++ )
              {
                TransData=_crol_(TransData,1);
                W=TransData&0x01;
                if (W==1)
                  { SDA=1;
                    SCL=1;
                    dltime();
                    SCL=0;
                    dltime();
                    SDA=0;
                    dltime();
                  }
                else
                  { SDA=0;
                    SCL=1;
                    dltime();
                    SCL=0;
                   dltime();
                  }
              }
          }

   /* read a byte from SDA, TransData */
        void RDBYT()
         {  unsigned char  i;
            TransData=0;
            for(i=0;i<8;i++)
             {
              SDA=1;
              SCL=1;
              dltime();
              if (SDA==0)
                {
                 TransData=_crol_(TransData,1);
                 SCL=0;
                 dltime();
                }
              else
                {
                  TransData=_crol_(TransData,1);
                  TransData=TransData+1;
                  SCL=0;
                  dltime();
                }
             }
         }

        void WRNBYT()                   /*BYTE[0]为高字节*/
        {  unsigned char data i;
           if(NUMBYT>32)  NUMBYT=32;
           WRNB:
           STA();
           TransData=DEVICEaddress;
           WRBYT();
           CACK();
           if (FLAG==1) goto WRNB;
           else
            {
            TransData=WORDaddress.BYTE[0];
			WRBYT();
			CACK();
		    if (FLAG==1) goto WRNB;
             else
                 {
                    TransData=WORDaddress.BYTE[1];
			        WRBYT();
			        CACK();
			        if (FLAG==1) goto WRNB;
			         else
			         {
                      for(i=0;i<NUMBYT;i++)
                       { TransData=origdata.MTD[i];
                         WRBYT();
                         CACK();
                         if (FLAG==1) goto WRNB;
                       }
                      STOP();
                     }
                  }
               }
           }
/******************************/
   void RDNBYT()
{  unsigned char data i;
   if(NUMBYT>32)
      NUMBYT=32;
RDNB:
   TransData=DEVICEaddress;
   STA();
   WRBYT();
   CACK();
   if (FLAG==1) goto RDNB;
   else
   {
      TransData=WORDaddress.BYTE[0];
      WRBYT();
	  CACK();
      if (FLAG==1) goto RDNB;
      else
      {TransData=WORDaddress.BYTE[1];
         WRBYT();
	     CACK();
         if (FLAG==1) goto RDNB;
         else
         {STA();
           TransData=DEVICEaddress;
           TransData=TransData+1;
           WRBYT();
		   CACK();
           if (FLAG==1) goto RDNB;
           else
           {
              for(i=0;i<NUMBYT;i++)
              {
                 RDBYT();
                 origdata.MRD[i]=TransData;
                 if (i==NUMBYT-1)
			     {  MNACK();
                    STOP();
                 }
                 else
                    MACK();
               }
            }
          }

        }
     }
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -