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

📄 lesson 9.lst

📁 有51单片机C语言基础后在较短时间内学会51单片机C。
💻 LST
字号:
C51 COMPILER V8.05a   LESSON_9                                                             02/04/2009 22:35:34 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LESSON_9
OBJECT MODULE PLACED IN lesson 9.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lesson 9.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit sda=P3^7;
   5          sbit sck=P3^6;
   6          
   7          void sda_0() {sda=0;;;;}
   8          void sda_1() {sda=1;;;;}
   9          void sck_0() {sck=0;;;;}
  10          void sck_1() {sck=1;;;;}
  11          void delay1() {;;;}               //延时5us子程序
  12          void delay(uint z)                //延时子程序
  13          {
  14   1              uint x,y;
  15   1              for(x=z;x>0;x--)
  16   1                      for(y=110;y>0;y--);
  17   1      }
  18          
  19          void initial()          //初始化子程序
  20          {
  21   1              sda_1();
  22   1              sck_1();
  23   1      }
  24          
  25          void start()  //开始子程序
  26          {       
  27   1              sda_1();
  28   1              sck_1();
  29   1              sda_0();
  30   1      }
  31          
  32          void stop()   //停止子程序
  33          {
  34   1              sda_0();
  35   1              sck_1();
  36   1              sda_1();
  37   1      }
  38          
  39          void response()  //判断是否收到对方的响应信号,
  40          {                                //没有收到则在规定时间内默认对方收到数据
  41   1              uchar i;
  42   1              sck_1();
  43   1              while((sda==1)&&(i<250))i++;
  44   1              sck_0();
  45   1      }
  46          
  47          void write_byte(uchar data1)   //写数据子程序
  48          {
  49   1              uchar i,temp;
  50   1              temp=data1;
  51   1              for(i=0;i<8;i++)
  52   1              {
  53   2                      temp=temp<<1;
  54   2                      sck_0();        //时钟线为低电平时,数据线才能改变
  55   2                      sda=CY; delay1();
C51 COMPILER V8.05a   LESSON_9                                                             02/04/2009 22:35:34 PAGE 2   

  56   2                      sck_1();   //时钟线为高电平时,数据必须稳定
  57   2              }
  58   1              sck_0();   
  59   1              sda_1();   //释放数据线
  60   1              response();//等待对方响应
  61   1      }
  62          
  63          uchar read_byte()         //读数据子程序
  64          {
  65   1              uchar i,temp;
  66   1              sck_0();
  67   1              sda_1();
  68   1              for(i=0;i<8;i++)
  69   1              {
  70   2                      sck_1();        
  71   2                      temp=(temp<<1)|sda;
  72   2                      sck_0();        
  73   2              }
  74   1              response();
  75   1              return temp;
  76   1      }
  77          
  78          void write_address(uchar address,uchar data1)
  79          {                                       //向24C02任意地址写任意数据子程序
  80   1              start();
  81   1              write_byte(0xa0);       
  82   1              write_byte(address);
  83   1              write_byte(data1);      
  84   1              stop();
  85   1      }
  86          
  87          uchar read_address(uchar address)
  88          {                          //向24C02任意地址读任意数据子程序
  89   1              uchar data1;
  90   1              start();
  91   1              write_byte(0xa0);                //先发送地址+写方向
  92   1              write_byte(address);     //读24C02哪一地址的数据
  93   1      
  94   1              start();                                 //接着又开始
  95   1              write_byte(0xa1);                 //改变方向
  96   1              data1=read_byte();
  97   1              stop();
  98   1              return data1;
  99   1      }
 100          
 101          void main()
 102          {
 103   1          uchar i,j;
 104   1              initial();
 105   1              for(i=0,j=0;i<255;i++,j++)       
 106   1              {
 107   2              write_address(i,j);              //把0到0xff数据存到24C02里
 108   2              }
 109   1              delay(1);   //读数据前要延时一定时间
 110   1              P1=read_address(0x55);
 111   1              while(1);
 112   1      }
 113          
 114          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.05a   LESSON_9                                                             02/04/2009 22:35:34 PAGE 3   

   CODE SIZE        =    241    ----
   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 + -