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

📄 at24c02.lst

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

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    472    ----
   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 + -