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

📄 5.lst

📁 用proteus开发的24c02实现I2C
💻 LST
字号:
C51 COMPILER V6.12  5                                                                      02/18/2009 12:20:28 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 5
OBJECT MODULE PLACED IN .\5.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\5.c DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include<REG51.h>
   3          #define uchar unsigned char
   4          
   5          sbit scl= P3^3;
   6          sbit sda= P3^4;
   7          
   8          void delay()
   9          {
  10   1      	; ; 
  11   1      }
  12          
  13          
  14          void start()
  15          {
  16   1      	sda=1;
  17   1      	scl=1;	
  18   1      	delay();
  19   1      	sda=0;
  20   1      	delay();
  21   1      }
  22          
  23          void stop()
  24          {
  25   1      	sda=0;
  26   1      	scl=1;	
  27   1      	delay();
  28   1      	sda=1;
  29   1      	delay();
  30   1      }
  31          
  32          void response()
  33          {
  34   1      	uchar i;
  35   1      	scl=1;
  36   1      	delay();
  37   1          while(sda==1 && i<255 ) i++;
  38   1      	delay();
  39   1      	scl=0;
  40   1      	delay();
  41   1      }
  42          
  43          void init()
  44          {
  45   1      	sda=1;
  46   1      	scl=1;
  47   1      	delay();
  48   1      }
  49          
  50          void write_byte( uchar data1 )
  51          {
  52   1      	unsigned int i;
  53   1      	uchar temp;
  54   1      	temp=data1;
  55   1      	
C51 COMPILER V6.12  5                                                                      02/18/2009 12:20:28 PAGE 2   

  56   1      	
  57   1      	for(i=0;i<8;i++)
  58   1      	{
  59   2      		temp=temp<<1;
  60   2      		scl=0;
  61   2      		delay();
  62   2      		sda=CY;
  63   2      		delay();
  64   2      		scl=1;
  65   2      		delay();
  66   2      	}
  67   1      	scl=0;
  68   1      	delay();
  69   1      	sda=1;
  70   1      	delay();
  71   1      }
  72          
  73          uchar read_byte()
  74          {
  75   1      	unsigned int i;
  76   1      	uchar k;
  77   1      	
  78   1          for(i=0;i<8;i++)
  79   1      	{
  80   2      		scl=0;
  81   2      		delay();
  82   2      		scl=1;
  83   2      		delay();
  84   2      		k=(k<<1) | sda;
  85   2      	}
  86   1      	scl=0;
  87   1      	delay();
  88   1      	return k;
  89   1      }
  90          
  91          
  92          void write_addr(uchar addr,uchar data1)
  93          {
  94   1      	start();
  95   1      	write_byte(0xa0);
  96   1      	response();
  97   1      	write_byte(addr);
  98   1      	response();
  99   1      	write_byte(data1);
 100   1      	response();
 101   1      	stop();
 102   1      }
 103          
 104          uchar read_addr(uchar addr)
 105          {
 106   1      	uchar data1;
 107   1      	start();
 108   1      	write_byte(0xa0);
 109   1      	response();
 110   1      	write_byte(addr);
 111   1      	response();
 112   1      
 113   1      	start();
 114   1      	write_byte(0xa1);
 115   1      	response();
 116   1      	data1=read_byte();
 117   1      	response();
C51 COMPILER V6.12  5                                                                      02/18/2009 12:20:28 PAGE 3   

 118   1      	stop();
 119   1      	return data1; 
 120   1      }
 121          
 122          
 123          void delay1(uchar x)
 124          {
 125   1      	uchar a,b;
 126   1      	for(a=x;a>0;a--)
 127   1      	 for(b=100;b>0;b--);
 128   1      }
 129          
 130          void main()
 131          {
 132   1      	init();
 133   1      //	write_addr(23,0x77);
 134   1      //	delay1(100);
 135   1      	P1=read_addr(23);
 136   1      	while(1);
 137   1      }
 138          
 139          /*
 140          #include<reg52.h>
 141          #define uchar unsigned char
 142          sbit sda=P2^7;
 143          sbit scl=P2^6;
 144          uchar a;
 145          void delay()
 146          { ;;  }
 147          void start()  //开始信号
 148          {	
 149          	sda=1;
 150          	delay();
 151          	scl=1;
 152          	delay();
 153          	sda=0;
 154          	delay();
 155          }
 156          
 157          void stop()   //停止
 158          {
 159          	sda=0;
 160          	delay();
 161          	scl=1;
 162          	delay();
 163          	sda=1;
 164          	delay();
 165          }
 166          
 167          void respons()  //应答
 168          {
 169          	uchar i;
 170          	scl=1;
 171          	delay();
 172          	while((sda==1)&&(i<250))i++;
 173          	scl=0;
 174          	delay();
 175          }
 176          
 177          void init()
 178          {
 179          	sda=1;
C51 COMPILER V6.12  5                                                                      02/18/2009 12:20:28 PAGE 4   

 180          	delay();
 181          	scl=1;
 182          	delay();
 183          }
 184          
 185          void write_byte(uchar date)
 186          {
 187          	uchar i,temp;
 188          	temp=date;
 189          
 190          
 191          	for(i=0;i<8;i++)
 192          	{
 193          		temp=temp<<1;
 194          		scl=0;
 195          	    delay();
 196          		sda=CY;
 197          		delay();
 198          		scl=1;
 199          		delay();
 200          	//	scl=0;
 201               //   delay();
 202          	}
 203          	scl=0;
 204          	delay();
 205          	sda=1;
 206          	delay();
 207          }
 208          
 209          uchar read_byte()
 210          {
 211          	uchar i,k;
 212          	scl=0;
 213          	delay();
 214          	sda=1;
 215          	delay();
 216          	for(i=0;i<8;i++)
 217          	{
 218          		scl=1;
 219          		delay();	
 220          		k=(k<<1)|sda;
 221          		scl=0;
 222          		delay();	
 223          	}
 224          	return k;
 225          }
 226          
 227          void delay1(uchar x)
 228          {
 229          	uchar a,b;
 230          	for(a=x;a>0;a--)
 231          	 for(b=100;b>0;b--);
 232          }
 233          
 234          void write_add(uchar address,uchar date)
 235          {
 236          	start();
 237          	write_byte(0xa0);
 238          	respons();
 239          	write_byte(address);
 240          	respons();
 241          	write_byte(date);
C51 COMPILER V6.12  5                                                                      02/18/2009 12:20:28 PAGE 5   

 242          	respons();
 243          	stop();
 244          }
 245          
 246          uchar read_add(uchar address)
 247          {
 248          	uchar date;
 249          	start();
 250          	write_byte(0xa0);
 251          	respons();
 252          	write_byte(address);
 253          	respons();
 254          	start();
 255          	write_byte(0xa1);
 256          	respons();
 257          	date=read_byte();
 258          	stop();
 259          	return date;
 260          }
 261          
 262          void main()
 263          {
 264          	uchar m_temp;
 265              init();
 266          	write_add(23,0x88);
 267          	delay1(100);
 268          	m_temp=read_add(23);
 269          	while(1)
 270          	{
 271          		P1=m_temp;
 272          	}
 273          }
 274          
 275          */


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