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

📄 24c02-count-shuma-me500-c51.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
字号:
C51 COMPILER V7.08   24C02_COUNT_SHUMA_ME500_C51                                           12/20/2006 21:36:15 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 24C02_COUNT_SHUMA_ME500_C51
OBJECT MODULE PLACED IN 24c02-count-shuma-ME500-C51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c02-count-shuma-ME500-C51.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500单片机开发系统演示程序 -  计开机次数                       */
   4          /*                                                                 */
   5          /* 3位数码管显示显示                                               */
   6          /*                                                                 */
   7          /*                                                                 */
   8          /* 版本: V1.0 (2006/11/20)                                        */
   9          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
  10          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  11          /* 时间: 2006/11/20                                               */
  12          /*                                                                 */
  13          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  14          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  15          /*                                                                 */
  16          /*******************************************************************/
  17          
  18          #include <reg51.h>
  19          #include <intrins.h>
  20          
  21          #define uchar unsigned char
  22          #define uint unsigned int
  23          
  24          #define OP_WRITE 0xa0          // 器件地址以及写入操作
  25          #define OP_READ  0xa1          // 器件地址以及读取操作
  26          
  27          sbit SDA = P3^5;        //ME500
  28          sbit SCL = P3^4;
  29          
  30          uchar code ledcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  31          uchar data display[]={0x00,0x00,0x00};
  32          uchar temp,temp1;
  33          
  34          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  35          
  36          /**********************************************************
  37           延时子程序
  38          **********************************************************/
  39          void delayms(uint ms) 
  40          
  41          {
  42   1       uchar k;
  43   1       while(ms--)
  44   1       {
  45   2        for(k = 0; k < 120; k++);
  46   2       }
  47   1      }
  48          
  49          /**********************************************************
  50            数据转换与显示函数
  51          **********************************************************/
  52          void  ledplay()
  53          {
  54   1         display[2]=temp1/100;
  55   1         display[0]=temp1%100;
C51 COMPILER V7.08   24C02_COUNT_SHUMA_ME500_C51                                           12/20/2006 21:36:15 PAGE 2   

  56   1         display[1]=display[0]/10;
  57   1         display[0]=display[0]%10;
  58   1      
  59   1         if(display[2]==0)
  60   1         {
  61   2            display[2]=0x0a;
  62   2            if(display[1]==0)
  63   2            display[1]=0x0a;
  64   2         }
  65   1      
  66   1         P0 = ledcode[display[0]];     //显示 
  67   1         P2 = 0x7f;
  68   1         delayms(3);
  69   1      
  70   1         P0 = ledcode[display[1]];    //显示   
  71   1         P2 = 0xbf;
  72   1         delayms(3);
  73   1      
  74   1         P0 = ledcode[display[2]] ;  //显示小数位
  75   1         P2 = 0xdf;
  76   1         delayms(3);
  77   1      }
  78          
  79          
  80          /**********************************************************
  81           开始位
  82          **********************************************************/
  83          void start()
  84          
  85          {
  86   1       SDA = 1;
  87   1       SCL = 1;
  88   1       delayNOP();
  89   1       SDA = 0;
  90   1       delayNOP();
  91   1       SCL = 0;
  92   1      }
  93          
  94          /**********************************************************
  95            停止位
  96          **********************************************************/
  97          void stop()
  98          
  99          {
 100   1       SDA = 0;
 101   1       delayNOP();
 102   1       SCL = 1;
 103   1       delayNOP();
 104   1       SDA = 1;
 105   1      }
 106          
 107          /**********************************************************
 108           从AT24C02移出数据到MCU
 109          **********************************************************/
 110          uchar shin()
 111          {
 112   1       uchar i,read_data;
 113   1       for(i = 0; i < 8; i++)
 114   1       {
 115   2        SCL = 1;
 116   2        read_data <<= 1;
 117   2      //  read_data |= (uchar)SDA;
C51 COMPILER V7.08   24C02_COUNT_SHUMA_ME500_C51                                           12/20/2006 21:36:15 PAGE 3   

 118   2        read_data |= SDA;
 119   2        SCL = 0;
 120   2       }
 121   1       return(read_data);
 122   1      }
 123          
 124          /**********************************************************
 125           从MCU移出数据到AT24C02
 126          **********************************************************/
 127          bit shout(uchar write_data) 
 128          {
 129   1       uchar i;
 130   1       bit ack_bit;
 131   1       for(i = 0; i < 8; i++)  // 循环移入8个位
 132   1       {
 133   2        SDA = (bit)(write_data & 0x80);
 134   2        _nop_();
 135   2        SCL = 1;
 136   2        delayNOP();
 137   2        SCL = 0;
 138   2        write_data <<= 1;
 139   2       }
 140   1       SDA = 1;   // 读取应答
 141   1       delayNOP();
 142   1       SCL = 1;
 143   1       delayNOP();
 144   1       ack_bit = SDA;
 145   1       SCL = 0;
 146   1       return ack_bit; // 返回AT24C02应答位
 147   1      }
 148          
 149          /**********************************************************
 150           在指定地址addr处写入数据write_data
 151          **********************************************************/
 152          void write_byte(uchar addr, uchar write_data)
 153          {
 154   1       start();
 155   1       shout(OP_WRITE);
 156   1       shout(addr);
 157   1       shout(write_data);
 158   1       stop();
 159   1       delayms(10);  // 写入周期
 160   1      }
 161          
 162          /**********************************************************
 163           在当前地址读取
 164          **********************************************************/
 165          uchar read_current()
 166          {
 167   1       uchar read_data;
 168   1       start();
 169   1       shout(OP_READ);
 170   1       read_data = shin();
 171   1       stop();
 172   1       return read_data;
 173   1      }
 174          
 175          /**********************************************************
 176           在指定地址读取
 177          **********************************************************/
 178          uchar read_random(uchar random_addr)
 179          
C51 COMPILER V7.08   24C02_COUNT_SHUMA_ME500_C51                                           12/20/2006 21:36:15 PAGE 4   

 180          {
 181   1       start();
 182   1       shout(OP_WRITE);
 183   1       shout(random_addr);
 184   1       return(read_current());
 185   1      }
 186          
 187          /**********************************************************
 188           主函数
 189          **********************************************************/
 190          main(void)
 191          {
 192   1         SDA = 1;
 193   1         SCL = 1;
 194   1      
 195   1         temp=read_random(1);  //从AT24C02读出数据
 196   1         temp1=temp;
 197   1         temp++;
 198   1         write_byte(1,temp);   //写入数据到AT24C02
 199   1         
 200   1          while(1)      
 201   1              ledplay();
 202   1          
 203   1      }
 204          
 205          /**********************************************************/


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