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

📄 at24c02_tx-1b.lst

📁 i2c通讯控制程序,很快的实现对24c02的通讯功能
💻 LST
字号:
C51 COMPILER V6.23a  AT24C02_TX_1B                                                         09/02/2006 22:02:27 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE AT24C02_TX_1B
OBJECT MODULE PLACED IN D:\SCM\TX-2\调试程序\AT24C0~1\AT24C0~1\AT24C02_TX-1B.OBJ
COMPILER INVOKED BY: C:\comp51\C51.EXE D:\SCM\TX-2\调试程序\AT24C0~1\AT24C0~1\AT24C02_TX-1B.C DB SB OE OT(0) 

stmt level    source

   1          //试验AT24C02EEPROM芯片程序
   2          #include<reg51.h>
   3          #include <intrins.h>
   4          #define uint unsigned int
   5          #define uchar unsigned char
   6          unsigned char sec;        //定义计数值,每过1秒,sec加1
   7          unsigned int tcnt;        //定时中断次数
   8          bit  write=0;             //写24C08的标志;
   9          sbit sda=P2^0;                          //IO口定义
  10          sbit scl=P2^1;
  11          sbit dula=P2^6;
  12          sbit wela=P2^7;
  13          unsigned char j,k;
  14          void delay(unsigned char i)             //延时程序
  15          {
  16   1        for(j=i;j>0;j--)
  17   1          for(k=125;k>0;k--);
  18   1      }
  19          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,                         //数码管编码
  20                                  0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  21          void display(uchar bai_c,uchar sh_c)                    //显示程序
  22          {
  23   1         dula=0;
  24   1         P0=table[bai_c];             //显示百位
  25   1         dula=1;
  26   1         dula=0;
  27   1      
  28   1         wela=0;
  29   1         P0=0x7e;
  30   1         wela=1;
  31   1         wela=0;
  32   1         delay(5);
  33   1      
  34   1         dula=0;
  35   1         P0=table[sh_c];              //显示十位
  36   1         dula=1;
  37   1         dula=0;
  38   1      
  39   1         wela=0;
  40   1         P0=0x7d;
  41   1         wela=1;
  42   1         wela=0;
  43   1         delay(5);
  44   1      
  45   1      }
  46          
  47          /////////24C08读写驱动程序////////////////////
  48          void delay1(unsigned char x)
  49          {  unsigned int i;
  50   1        for(i=0;i<x;i++);
  51   1        ;}
  52          void flash()
  53          {  ;  ; }
  54          void x24c08_init()  //24c08初始化子程序
  55           {scl=1; flash(); sda=1; flash();}
C51 COMPILER V6.23a  AT24C02_TX_1B                                                         09/02/2006 22:02:27 PAGE 2   

  56          void start()        //启动I2C总线
  57          {sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();}
  58          void stop()         //停止I2C总线
  59          {sda=0; flash(); scl=1; flash(); sda=1; flash();}
  60          void writex(unsigned char j)  //写一个字节
  61          {  unsigned char i,temp;
  62   1         temp=j;
  63   1         for (i=0;i<8;i++)
  64   1         {temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();}
  65   1         scl=0; flash(); sda=1; flash();
  66   1      }
  67          unsigned char readx()   //读一个字节
  68          {
  69   1         unsigned char i,j,k=0;
  70   1         scl=0; flash(); sda=1;
  71   1         for (i=0;i<8;i++)
  72   1         {  flash(); scl=1; flash();
  73   2            if (sda==1) j=1;
  74   2            else j=0;
  75   2            k=(k<<1)|j;
  76   2                scl=0;}
  77   1         flash(); return(k);
  78   1      }
  79          void clock()         //I2C总线时钟
  80          {
  81   1         unsigned char i=0;
  82   1         scl=1; flash();
  83   1         while ((sda==1)&&(i<255))i++;
  84   1         scl=0; flash();
  85   1      }
  86          ////////从24c02的地址address中读取一个字节数据/////
  87          unsigned char x24c08_read(unsigned char address)
  88          {
  89   1         unsigned char i;
  90   1         start(); writex(0xa0);
  91   1         clock(); writex(address);
  92   1         clock(); start();
  93   1         writex(0xa1); clock();
  94   1         i=readx(); stop();
  95   1         delay1(10);
  96   1         return(i);
  97   1      }
  98          //////向24c02的address地址中写入一字节数据info/////
  99          void x24c08_write(unsigned char address,unsigned char info)
 100          {
 101   1         EA=0;
 102   1         start(); writex(0xa0);
 103   1         clock(); writex(address);
 104   1         clock(); writex(info);
 105   1         clock(); stop();
 106   1         EA=1;
 107   1         delay1(50);
 108   1      }
 109          
 110          void t0(void) interrupt 1 using 0  //定时中断服务函数
 111          {
 112   1      TH0=(65536-50000)/256; //对TH0 TL0赋值
 113   1      TL0=(65536-50000)%256; //重装计数初值
 114   1      tcnt++;        //每过250ust tcnt加一
 115   1      if(tcnt==20)  //计满20次(1秒)时
 116   1        {
 117   2          tcnt=0;   //重新再计
C51 COMPILER V6.23a  AT24C02_TX_1B                                                         09/02/2006 22:02:27 PAGE 3   

 118   2          sec++;
 119   2          write=1;  //1秒写一次24C08
 120   2          if(sec==100) //定时100秒,在从零开始计时
 121   2            {sec=0;}
 122   2        }
 123   1      }
 124          
 125          void main()
 126          {
 127   1      unsigned char i;
 128   1      TMOD=0x01;  //定时器工作在方式1
 129   1      ET0=1;  EA=1;
 130   1      x24c08_init();        //初始化24C08
 131   1      sec=x24c08_read(2);//读出保存的数据赋于sec
 132   1      TH0=(65536-50000)/256; //对TH0 TL0赋值
 133   1      TL0=(65536-50000)%256; //使定时器0.05秒中断一次
 134   1      TR0=1;           //开始计时
 135   1       while(1)
 136   1        {
 137   2            i=10;
 138   2            while(i--)
 139   2            {
 140   3              display(sec/10,sec%10);
 141   3            }
 142   2              if(write==1) //判断计时器是否计时一秒
 143   2             {
 144   3               write=0;              //清零
 145   3                x24c08_write(2,sec);  //在24c08的地址2中写入数据sec
 146   3             }
 147   2         } 
 148   1      }
C51 COMPILER V6.23a  AT24C02_TX_1B                                                         09/02/2006 22:02:27 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
_writex. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  temp . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
_x24c08_read . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  address. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
table. . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  16
clock. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
flash. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
readx. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  k. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
_x24c08_write. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  address. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  info . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
_delay1. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0001H  2
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
t0 . . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
dula . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A6H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
wela . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A7H  1
write. . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
start. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
sda. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A0H  1
tcnt . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0000H  2
sec. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
x24c08_init. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
scl. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A1H  1
stop . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
C51 COMPILER V6.23a  AT24C02_TX_1B                                                         09/02/2006 22:02:27 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
_display . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  bai_c. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  sh_c . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
k. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0004H  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
_delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    530    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23    ----
   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 + -