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

📄 text1.lst

📁 i2clCD仿真.rari2clCD仿真 i2clCD仿真 i2clCD仿真
💻 LST
字号:
C51 COMPILER V6.23a  TEXT1                                                                 04/18/2006 22:42:29 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text1.c DEBUG OBJECTEXTEND TABS(8) 

stmt level    source

   1          #include<AT89X52.h>
   2          #include<intrins.h>
   3          
   4          #define DELAY_TIME 4
   5          #define uchar unsigned char
   6          #define FALSE 0
   7          #define TRUE 1
   8          
   9          sbit SCL=P2^6;
  10          sbit SDA=P2^7;
  11          sbit LED1=P0^0;
  12          
  13          
  14          void DELAY(unsigned int t)
  15          {
  16   1        while(t--);
  17   1      }
  18          
  19          void IIC_Start(void)  //启动IIC总线,当SCL为高电平时使SDA产生一个负跳变
  20          {
  21   1        SDA=1;
  22   1        SCL=1;
  23   1        DELAY(DELAY_TIME);
  24   1        SDA=0;
  25   1        DELAY(DELAY_TIME);
  26   1        SCL=0;
  27   1        DELAY(DELAY_TIME);
  28   1      }
  29          
  30          void IIC_Stop(void)  //终止IIC总线,当SCL为高电平时使SDA产生一个正跳变
  31          {
  32   1        SDA=0;
  33   1        SCL=1;
  34   1        DELAY(DELAY_TIME);
  35   1        SDA=1;
  36   1        DELAY(DELAY_TIME);
  37   1        SCL=0;
  38   1        DELAY(DELAY_TIME);
  39   1      }
  40          
  41          
  42          void SEND_0(void)  //发送0,在SCL为高电平时使SDA信号为低
  43          {
  44   1        SDA=0;
  45   1        DELAY(DELAY_TIME);
  46   1        SCL=1;
  47   1        DELAY(DELAY_TIME);
  48   1        SCL=0;
  49   1      
  50   1      }
  51          
  52          void SEND_1(void)  //发送1,在SCL为高电平时始SDA信号为高
  53          {
  54   1        SDA=1;
  55   1        DELAY(DELAY_TIME);
C51 COMPILER V6.23a  TEXT1                                                                 04/18/2006 22:42:29 PAGE 2   

  56   1        SCL=1;
  57   1        DELAY(DELAY_TIME);
  58   1        SCL=0;
  59   1      
  60   1      }
  61          
  62          void Write_Byte(uchar b) reentrant  //向IIC总线写一个字节
  63          {
  64   1        uchar i;
  65   1        for(i=0;i<8;i++)
  66   1        if((b<<i)&0x80)
  67   1          SEND_1();
  68   1        else
  69   1          SEND_0();
  70   1      }
  71          
  72          uchar Read_Byte(void) reentrant  //从IIC总线读一个字节
  73          {
  74   1        uchar b=0,i;
  75   1        SDA=1; //释放总线
  76   1        for(i=0;i<8;i++)
  77   1        {
  78   2          b<<=1;
  79   2          SCL=0;  DELAY(DELAY_TIME);
  80   2          SCL=1;  DELAY(DELAY_TIME);
  81   2          b|=SDA;
  82   2        }
  83   1        SCL=0;
  84   1        return b;
  85   1      }
  86          
  87          bit Check_ACK(void)  //发送完一个字节后,检验设备的应答信号
  88          {
  89   1        uchar errtime=255;
  90   1        SDA=1;  DELAY(DELAY_TIME);
  91   1        SCL=1;  DELAY(DELAY_TIME);
  92   1        while(SDA)
  93   1        {
  94   2          errtime--;
  95   2          if(!errtime)
  96   2          {
  97   3            IIC_Stop();
  98   3            return FALSE;
  99   3          }
 100   2        }
 101   1        SCL=0;
 102   1        return TRUE;
 103   1      }
 104          
 105          bit Write_N_Bytes(uchar AddrWr,uchar AddrWord,uchar *buffer,uchar num) reentrant
 106          {
 107   1        uchar i;
 108   1        IIC_Start();
 109   1        Write_Byte(AddrWr);
 110   1        if(!Check_ACK()) return(FALSE);
 111   1        Write_Byte(AddrWord);
 112   1        if(!Check_ACK()) return(FALSE);
 113   1        for(i=0;i<num;i++)
 114   1        {
 115   2          Write_Byte(*buffer);
 116   2          if(!Check_ACK()) return(FALSE);
 117   2          buffer++;
C51 COMPILER V6.23a  TEXT1                                                                 04/18/2006 22:42:29 PAGE 3   

 118   2        }
 119   1        IIC_Stop();
 120   1        return TRUE;
 121   1      }
 122          
 123          bit Read_N_Bytes(uchar AddrWr,uchar AddrWord,uchar *buffer,uchar num) reentrant
 124          {
 125   1        uchar i;
 126   1        IIC_Start();
 127   1        Write_Byte(AddrWr);
 128   1        if(!Check_ACK()) return FALSE;
 129   1        Write_Byte(AddrWord);
 130   1        if(!Check_ACK()) return FALSE;
 131   1      
 132   1        IIC_Start();
 133   1        Write_Byte(AddrWr+1);
 134   1        if(!Check_ACK()) return FALSE;
 135   1        for(i=0;i<num-1;i++)
 136   1        {
 137   2          *buffer=Read_Byte();
 138   2          SEND_0();
 139   2          buffer++;
 140   2        }
 141   1        *buffer=Read_Byte();
 142   1        SEND_1();
 143   1        IIC_Stop();
 144   1        return TRUE;
 145   1      }
 146          
 147          void Public_Delay(uchar t)
 148          {
 149   1        uchar i,j;
 150   1        for(i=0;i<t;i++)
 151   1        for(j=0;j<250;j++);
 152   1      }
 153          
 154          void main(void)
 155          {
 156   1        uchar r[4]={0x7F,2,3,4};
 157   1        bit t;
 158   1        uchar b[4]={0};
 159   1      
 160   1        t=Write_N_Bytes(0xa0,0x20,r,4);
 161   1      
 162   1        if(t==TRUE)
 163   1           P0=0x06;
 164   1        else
 165   1          P0=0x5b;
 166   1      
 167   1        Public_Delay(65500);
 168   1        Public_Delay(65500);
 169   1      
 170   1        t=Read_N_Bytes(0xa0,0x20,b,4);
 171   1        if(b[3]==4)//t==FALSE)
 172   1          {P0=b[0];}
 173   1        while(1)
 174   1          {  }
 175   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    604    ----
C51 COMPILER V6.23a  TEXT1                                                                 04/18/2006 22:42:29 PAGE 4   

   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   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 + -