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

📄 main.lst

📁 大虾电子网30章C51入门教程
💻 LST
字号:
C51 COMPILER V7.07   MAIN                                                                  07/07/2006 03:59:08 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define uchar unsigned char //定义一下方便使用
   2          #define uint  unsigned int
   3          #define ulong unsigned long
   4          #include <reg52.h>     //包括一个52标准内核的头文件
   5          
   6          char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
   7          
   8          #define WriteDeviceAddress 0xa0   //定义器件在IIC总线中的地址
   9          #define ReadDviceAddress 0xa1
  10          sbit    SCL=P2^7;
  11          sbit    SDA=P2^6;
  12          
  13          sbit    P10=P1^0;
  14          
  15          //定时函数
  16          void DelayMs(unsigned int number) 
  17          {
  18   1              unsigned char temp;
  19   1              for(;number!=0;number--) 
  20   1              {
  21   2                      for(temp=112;temp!=0;temp--) ;
  22   2              }
  23   1      }
  24          
  25          //开始总线
  26          void Start() 
  27          {
  28   1              SDA=1;
  29   1              SCL=1;
  30   1              SDA=0;
  31   1              SCL=0;
  32   1      }
  33          
  34          //结束总线
  35          void Stop() 
  36          {
  37   1              SCL=0;
  38   1              SDA=0;
  39   1              SCL=1;
  40   1              SDA=1;
  41   1      }
  42          
  43          
  44          //发ACK0
  45          void NoAck() 
  46          {
  47   1              SDA=1;
  48   1              SCL=1;
  49   1              SCL=0;
  50   1      }
  51          
  52          //测试ACK
  53          bit TestAck() 
  54          {
  55   1              bit ErrorBit;
C51 COMPILER V7.07   MAIN                                                                  07/07/2006 03:59:08 PAGE 2   

  56   1              SDA=1;
  57   1              SCL=1;
  58   1              ErrorBit=SDA;
  59   1              SCL=0;
  60   1              return(ErrorBit);
  61   1      }
  62          
  63          //写入8个bit到24c02
  64          Write8Bit(unsigned char input) 
  65          {
  66   1              unsigned char temp;
  67   1              for(temp=8;temp!=0;temp--) 
  68   1              {
  69   2                      SDA=(bit)(input&0x80);
  70   2                      SCL=1;
  71   2                      SCL=0;
  72   2                      input=input<<1;
  73   2              }
  74   1      }
  75          
  76          //写入一个字节到24c02中
  77          void Write24c02(uchar ch,uchar address) 
  78          {
  79   1              Start();
  80   1              Write8Bit(WriteDeviceAddress);
  81   1              TestAck();
  82   1              Write8Bit(address);
  83   1              TestAck();
  84   1      
  85   1              Write8Bit(ch);
  86   1              TestAck();
  87   1              
  88   1              Stop();
  89   1              DelayMs(10);
  90   1      }
  91          
  92          //从24c02中读出8个bit
  93          uchar Read8Bit() 
  94          {
  95   1              unsigned char temp,rbyte=0;
  96   1              for(temp=8;temp!=0;temp--) 
  97   1              {
  98   2                      SCL=1;
  99   2                      rbyte=rbyte<<1;
 100   2                      rbyte=rbyte|((unsigned char)(SDA));
 101   2                      SCL=0;
 102   2              }
 103   1              return(rbyte);
 104   1      }
 105          
 106          //从24c02中读出1个字节
 107          uchar Read24c02(uchar address) 
 108          {
 109   1              uchar ch;
 110   1      
 111   1              Start();
 112   1              Write8Bit(WriteDeviceAddress);
 113   1              TestAck();
 114   1              Write8Bit(address);
 115   1              TestAck();
 116   1              Start();
 117   1              Write8Bit(ReadDviceAddress);
C51 COMPILER V7.07   MAIN                                                                  07/07/2006 03:59:08 PAGE 3   

 118   1              TestAck();
 119   1              ch=Read8Bit();
 120   1              NoAck();
 121   1              Stop();
 122   1              return(ch);
 123   1      }
 124          
 125          //本课试验写入一个字节到24c02并读出来验证
 126          
 127          void main(void) // 主程序
 128          {
 129   1              uchar c1,c2;
 130   1              c1=Read24c02(0x02);
 131   1      
 132   1              Write24c02(0x99,0x03);
 133   1              c2=Read24c02(0x03);
 134   1      
 135   1              P10=0;
 136   1              while(1);  //程序挂起
 137   1      
 138   1      }
 139          


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