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

📄 main.lst

📁 这是一本在网上很难找到的教程了
💻 LST
字号:
C51 COMPILER V7.07   MAIN                                                                  07/05/2006 02:58:17 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          sbit    K1=P3^2;
  15          
  16          //定时函数
  17          void DelayMs(unsigned int number) 
  18          {
  19   1              unsigned char temp;
  20   1              for(;number!=0;number--) 
  21   1              {
  22   2                      for(temp=112;temp!=0;temp--) ;
  23   2              }
  24   1      }
  25          
  26          //开始总线
  27          void Start() 
  28          {
  29   1              SDA=1;
  30   1              SCL=1;
  31   1              SDA=0;
  32   1              SCL=0;
  33   1      }
  34          
  35          //结束总线
  36          void Stop() 
  37          {
  38   1              SCL=0;
  39   1              SDA=0;
  40   1              SCL=1;
  41   1              SDA=1;
  42   1      }
  43          
  44          
  45          //发ACK0
  46          void NoAck() 
  47          {
  48   1              SDA=1;
  49   1              SCL=1;
  50   1              SCL=0;
  51   1      }
  52          
  53          //测试ACK
  54          bit TestAck() 
  55          {
C51 COMPILER V7.07   MAIN                                                                  07/05/2006 02:58:17 PAGE 2   

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

 118   1              Write8Bit(ReadDviceAddress);
 119   1              TestAck();
 120   1              ch=Read8Bit();
 121   1              NoAck();
 122   1              Stop();
 123   1              return(ch);
 124   1      }
 125          
 126           //写入按键次数到24c02,并读出来显示在4个LED上
 127          
 128          void main(void) // 主程序
 129          {
 130   1              uchar c1,c2;
 131   1      
 132   1              while(1)
 133   1              {
 134   2                      c1=Read24c02(0x01);      //读出24c02第一个地址数据
 135   2                      P1=c1;                          //显示在P1口的4个LED上
 136   2      
 137   2                      if(!K1)   //按键处理
 138   2                      {
 139   3                              c1++;           //值加1
 140   3                              Write24c02(c1,0x01);    //重新写入24c02
 141   3      
 142   3                              while(!K1);                      //等待按键松开
 143   3                              for(c2=0;c2<250;c2++);  //松开按键去抖
 144   3                      }               
 145   2              }
 146   1      }
 147          
 148          //提示,可以脱机运行看看掉电后的数据是否还在保存.


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