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

📄 test.lst

📁 24C02EEPROM C源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 134   1              CY=SDA;                                         /* 因为返回值总是放在CY中的 */ 
 135   1              SCL=0; 
 136   1              return(CY); 
 137   1      }   
 138          /* * * * *对IIC总线产生应答 * * * * */ 
 139          void Ack(void) 
 140          { 
 141   1              SDA=0;                                  /* EEPROM通过在收到每个地址或数据之后, */ 
 142   1              SCL=1;                                          /* 置SDA低电平的方式确认表示收到读SDA口状态 */ 
 143   1              _nop_(); _nop_(); _nop_(); _nop_(); 
 144   1              SCL=0; 
 145   1              _nop_(); 
 146   1              SDA=1; 
 147   1      } 
 148          /* * * * * * * * * 不对IIC总线产生应答 * * * * */ 
 149          void NoAck(void) 
 150          { 
 151   1              SDA=1; 
 152   1              SCL=1; 
 153   1              _nop_(); _nop_(); _nop_(); _nop_(); 
 154   1              SCL=0; 
 155   1      }  
 156          /* * * * * * * * * 向IIC总线写数据 * * * * */ 
 157          void Send(unsigned char sendbyte) 
 158          { 
 159   1              unsigned char data j=8; 
 160   1              for(;j>0;j--) 
 161   1              { 
 162   2                      SCL=0; 
 163   2                      sendbyte <<= 1;                         /* 使CY=sendbyte^7; */ 
 164   2                      SDA=CY;                                         /* CY 进位标志位 */ 
 165   2                      SCL=1; 
 166   2              } 
 167   1              SCL=0; 
 168   1      }  
 169          /* * * * * * * * * 从IIC总线上读数据子程序 * * * * */ 
 170          unsigned char Receive(void) 
 171          {
 172   1              register receivebyte,i=8; 
 173   1              SCL=0; 
 174   1              while(i--) 
 175   1              { 
 176   2                      SCL=1; 
 177   2                      receivebyte = (receivebyte <<1 ) | SDA; 
 178   2                      SCL=0; 
 179   2              } 
C51 COMPILER V8.02   TEST                                                                  11/11/2007 21:15:12 PAGE 4   

 180   1              return(receivebyte); 
 181   1      } 
 182          /* 以上为AT24C01~AT24C256的读写程序,各人可根据自己的需要应用。 
 183          在buf1中填入需要写入的内容,buf2的大小可根据需要定义。 
 184          addr可根据使用的芯片选择,可从任何位置读写,只要在该芯片的范围内。 
 185          enumer=ATxxx,根据使用的芯片赋值。各函数中的形式参数不需改变。 
 186          本程序只要在调用的程序中定义实际参数即可,上述各子程序不必改动。*/ 
 187          
 188          /* * * * * * * * 一个简单延时程序 * * * * * * * * * * * * */ 
 189          void Delay(unsigned int DelayCount) 
 190          {
 191   1              while(DelayCount--); 
 192   1      }
 193          /*-------------数码管显示函数--------------------
 194          参数:number 要显示的数字
 195          参数:pos    要显示的位置(从左到右为1--4)
 196          返回值:无
 197          ------------------------------------------------*/
 198          /* * * * * * * * * *数码管显示函数* * * * * * * * * * * */ 
 199          void display(unsigned char number,unsigned char pos)//数码管显示函数
 200          {                                                 
 201   1              unsigned char temp;                                             //临时变量
 202   1              if(number<10 && pos<5 && pos>0)//确定数据合法
 203   1              {               
 204   2                      temp=(number<<4)&0xf0;          //获得要显示的数据
 205   2                      temp+=1<<(pos-1);               //送位置位
 206   2                      LEDPORT=temp;                   ////送显示数据,开始显示
 207   2              }
 208   1              else return;
 209   1      }
 210          
 211          void leddisplay(unsigned int count)
 212          {
 213   1              unsigned int i=6000;
 214   1              while(i--)
 215   1              {
 216   2              if(count>=1000)
 217   2              {
 218   3                      display(count/1000,1);
 219   3                      display(count%1000/100,2);
 220   3                      display(count%100/10,3);
 221   3                      display(count%10,4);
 222   3              }
 223   2              else  if(count>=100)
 224   2              {
 225   3                      display(count/100,2);
 226   3                      display(count%100/10,3);
 227   3                      display(count%10,4);
 228   3              }
 229   2              else  if(count>=10)
 230   2              {
 231   3                      display(count/10,3);
 232   3                      display(count%10,4);
 233   3              }
 234   2              else
 235   2              {
 236   3                      display(count,4);
 237   3              }
 238   2              }
 239   1      }
 240          /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 
 241          void main()
C51 COMPILER V8.02   TEST                                                                  11/11/2007 21:15:12 PAGE 5   

 242          {
 243   1              unsigned char Control,*p1,*p2; 
 244   1              unsigned char Length,i=0; 
 245   1              unsigned int addr ; /* 24Cxx片内地址 */ 
 246   1              p1=buf1;p2=&buf2[0]; 
 247   1              addr=0;                         /* 片内地址 AT24C02为0~255 */ 
 248   1              Length=10;                      /* 读写长度 */ 
 249   1              enumer=AT2402;          /* 读写AT24C02 */ 
 250   1              Control=0xa0;           /* 写操作 */ 
 251   1              RW24xx(p1,Length,addr,Control,enumer); /* 写 */ 
 252   1              Control=0xa1;           /* 读操作 */ 
 253   1              RW24xx(p2,Length,addr,Control,enumer); /* 读 */ 
 254   1              while(1)
 255   1              {
 256   2                      leddisplay(buf2[i]);//数码管显示读出来的数据
 257   2                      i++;
 258   2                      if(i==10){i=0;}
 259   2              }
 260   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    670    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11      24
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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