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

📄 at24c02.lst

📁 EEPROM AT24C02的I2C总线编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 191   1              LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]]; /*将显示码送数码管状态引脚*/     
 192   1              
 193   1              a++; /*数码管动态扫描值加1,若该值4则置为0*/
 194   1              if(a>3)
 195   1                      a=0;
 196   1      }
 197          
 198          /****************************************************************************
 199          名称: KeyCheck()
 200          说明: 键盘检测
 201          参数: 无
 202          返回: 键盘码值,若无键按下则返回16
 203          *****************************************************************************/
 204          unsigned char KeyCheck()
 205          {
 206   1              unsigned char a,b;
 207   1      
 208   1              for(a=0;a<4;a++)/*循环4次*/
 209   1              {
 210   2                      switch(a)/*改变键盘扫描码*/
 211   2                      {
 212   3                      case 0:KEY_STATUS=0xef;break;
 213   3                      case 1:KEY_STATUS=0xdf;break;
 214   3                      case 2:KEY_STATUS=0xbf;break;
 215   3                      case 3:KEY_STATUS=0x7f;break;
 216   3                      };
 217   2      
 218   2                      b=KEY_STATUS;
 219   2                      if((b&0x0f)!=0x0f)/*判断是否有按键按下*/
 220   2                      {
 221   3                              for(a=0;a<16;a++)/*根据键盘码判断那个键按下*/
 222   3                              {
 223   4                                      if(b==m_ucKeyTab[a])
 224   4                                      {
 225   5                                              return a;
 226   5                                      }
 227   4                              }
 228   3                      }
 229   2              }
 230   1      
 231   1              return 16;
 232   1      }
 233          
 234          
 235          /*****************************************************************************
 236          名称: AT24C02WriteByte()
 237          说明: AT24C02写操作
 238          参数: unsigned int uiAddr 地址
 239                unsigned char ucData 数据
 240          返回: 无
 241          *****************************************************************************/
C51 COMPILER V7.20   AT24C02                                                               08/04/2007 02:14:19 PAGE 5   

 242          void AT24C02WriteByte(unsigned int uiAddr,unsigned char ucData)
 243          {
 244   1              IicStart();
 245   1              IicWrite(IC24X_ORDER_WRITE);
 246   1              IicAck();
 247   1              IicWrite(uiAddr);
 248   1              IicAck();
 249   1              IicWrite(ucData);
 250   1              IicAck();
 251   1              IicStop();
 252   1              IicDelay();     
 253   1      }
 254          
 255          /*****************************************************************************
 256          名称: AT24C02ReadByte()
 257          说明: AT24C02读操作
 258          参数: unsigned int uiAddr 地址   
 259          返回: unsigned char 数据
 260          *****************************************************************************/
 261          unsigned char AT24C02ReadByte(unsigned int uiAddr)
 262          {
 263   1              unsigned char ucData;
 264   1      
 265   1              IicStart();
 266   1              IicWrite(IC24X_ORDER_WRITE);
 267   1              IicAck();
 268   1              IicWrite(uiAddr);
 269   1              IicAck();
 270   1              IicStart();
 271   1              IicWrite(IC24X_ORDER_READ);
 272   1              IicAck();
 273   1              ucData=IicRead();
 274   1              IicNAck();
 275   1              IicStop();
 276   1      
 277   1              return ucData;
 278   1      }
 279          
 280          /****************************************************************************
 281          说明: IIC总线处理函数
 282          *****************************************************************************/
 283          void IicDelay()
 284          {
 285   1          unsigned char a;
 286   1      
 287   1              for(a=0;a<IIC_TLOW;a++);
 288   1      
 289   1      }
 290          
 291          void IicStart()
 292          {
 293   1              IIC_SDA=1;
 294   1              IIC_SCL=1;
 295   1              IicDelay();     
 296   1              IIC_SDA=0;
 297   1              IicDelay();
 298   1              IIC_SCL=0;
 299   1      }
 300          
 301          void IicStop()
 302          {
 303   1              IIC_SCL=0;
C51 COMPILER V7.20   AT24C02                                                               08/04/2007 02:14:19 PAGE 6   

 304   1              IIC_SDA=0;
 305   1              IIC_SCL=1;
 306   1              IIC_SDA=1;
 307   1      }
 308          
 309          void IicAck()
 310          {
 311   1              IIC_SDA=0;
 312   1              IIC_SCL=1;
 313   1              IicDelay();     
 314   1              IIC_SCL=0;
 315   1              IIC_SDA=1;
 316   1      }
 317          void IicNAck()
 318          {
 319   1              IIC_SDA=1;
 320   1              IIC_SCL=1;
 321   1              IicDelay();
 322   1              IIC_SDA=0;
 323   1              IIC_SCL=0;
 324   1      }
 325          
 326          void IicWrite(unsigned char ucData)
 327          {
 328   1              unsigned char a;
 329   1      
 330   1              for(a=0;a<8;a++)
 331   1              {
 332   2                      if(ucData&0x80)
 333   2                      {
 334   3                              IIC_SDA=1;
 335   3                      }
 336   2                      else
 337   2                      {
 338   3                              IIC_SDA=0;
 339   3                      }
 340   2      
 341   2                      IIC_SCL=1; 
 342   2                      IIC_SCL=0;
 343   2                      ucData=ucData<<1;
 344   2              }
 345   1      }
 346          
 347          unsigned char IicRead()
 348          {
 349   1              unsigned char a,ucData=0;
 350   1                               
 351   1              for(a=0;a<8;a++)
 352   1              {
 353   2                      IIC_SDA=1;
 354   2                      IIC_SCL=1; 
 355   2                      
 356   2                      ucData<<=1;
 357   2      
 358   2                      if(IIC_SDA==1)
 359   2                      {
 360   3                              ucData|=0x01;
 361   3                      }
 362   2                      else
 363   2                      {
 364   3                              ucData&=0xfe;
 365   3                      }
C51 COMPILER V7.20   AT24C02                                                               08/04/2007 02:14:19 PAGE 7   

 366   2                                               
 367   2                      IIC_SCL=0; 
 368   2              }
 369   1      
 370   1              return ucData;
 371   1      }
 372          
 373                                                     


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    469    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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