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

📄 main.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:30:16 PAGE 1   


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

line level    source

   1          /**********************HL-1实验开发板例程************************
   2          *  平台:HL-1 V6.2 + Keil U3 + STC89C52RD
   3          *  公司:慧净电子科技有限公司
   4          *  淘宝:http://shop37031453.taobao.com       
   5          *  网站:www.hlmcu.com
   6          *  编写:慧净
   7          *  日期:2008-8-08
   8          *   QQ : 121350852 398115088
   9          *  晶振:11.0592MHZ
  10          *  说明:免费开源,不提供源代码分析,有问题直接到慧净论坛交流
  11          *  论坛:http://hjdz.5d6d.com
  12          ******************************************************************/
  13          //开机次数记忆
  14          #include<reg52.h>
  15          #define uchar unsigned char
  16          #define uint unsigned int
  17          bit  write=0;           //写24C02的标志;
  18          sbit sda=P2^0;                         
  19          sbit scl=P2^1;
  20          sbit dula=P2^6;
  21          sbit wela=P2^7;
  22          sbit RST=P2^5;   //时钟  不需要,可以关掉
  23          sbit CS_DA =P2^4 ;  //HJ-3G DAC HL-1不需要,可以关掉
  24          sbit JD=P0^6;
  25          sbit FM=P2^3;
  26          
  27          
  28          uchar sec,tcnt; 
  29          uchar code table[]={
  30          0x3f,0x06,0x5b,0x4f,
  31          0x66,0x6d,0x7d,0x07,
  32          0x7f,0x6f,0x77,0x7c,
  33          0x39,0x5e,0x79,0x71};
  34          void ioin()  //IO口继电器、数码管锁存函数
  35             {      
  36   1                wela=1;
  37   1           P0 = 1;  
  38   1                JD = 0;    
  39   1           wela=0;
  40   1                dula=1;
  41   1                P0=0;
  42   1                dula=0;
  43   1          }
  44          void delay()
  45          { ;; }
  46          void delay1ms(uint z)
  47          {
  48   1              uint x,y;
  49   1              for(x=z;x>0;x--)
  50   1                      for(y=110;y>0;y--);
  51   1      }
  52          void start()  //开始信号
  53          {       
  54   1              sda=1;
  55   1              delay();
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:30:16 PAGE 2   

  56   1              scl=1;
  57   1              delay();
  58   1              sda=0;
  59   1              delay();
  60   1      }
  61          void stop()   //停止
  62          {
  63   1              sda=0;
  64   1              delay();
  65   1              scl=1;
  66   1              delay();
  67   1              sda=1;
  68   1              delay();
  69   1      }
  70          void respons()  //应答
  71          {
  72   1              uchar i;
  73   1              scl=1;
  74   1              delay();
  75   1              while((sda==1)&&(i<250))i++;
  76   1              scl=0;
  77   1              delay();
  78   1      }
  79          void init()
  80          {
  81   1         RST=0; //总线时钟低电评
  82   1         CS_DA =0 ;
  83   1              sda=1;
  84   1              delay();
  85   1              scl=1;
  86   1              delay();
  87   1      }
  88          void write_byte(uchar date)
  89          {
  90   1              uchar i,temp;
  91   1              temp=date;
  92   1              for(i=0;i<8;i++)
  93   1              {
  94   2                      temp=temp<<1;
  95   2                      scl=0;
  96   2                  delay();
  97   2                      sda=CY;
  98   2                      delay();
  99   2                      scl=1;
 100   2                      delay();
 101   2              }
 102   1              scl=0;
 103   1              delay();
 104   1              sda=1;
 105   1              delay();
 106   1      }
 107          uchar read_byte()
 108          {
 109   1              uchar i,k;
 110   1              scl=0;
 111   1              delay();
 112   1              sda=1;
 113   1              delay();
 114   1              for(i=0;i<8;i++)
 115   1              {
 116   2                      scl=1;
 117   2                      delay();        
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:30:16 PAGE 3   

 118   2                      k=(k<<1)|sda;
 119   2                      scl=0;
 120   2                      delay();        
 121   2              }
 122   1              return k;
 123   1      }
 124          void write_add(uchar address,uchar date)
 125          {
 126   1              start();
 127   1              write_byte(0xa0);
 128   1              respons();
 129   1              write_byte(address);
 130   1              respons();
 131   1              write_byte(date);
 132   1              respons();
 133   1              stop();
 134   1      }
 135          uchar read_add(uchar address)
 136          {
 137   1              uchar date;
 138   1              start();
 139   1              write_byte(0xa0);
 140   1              respons();
 141   1              write_byte(address);
 142   1              respons();
 143   1              start();
 144   1              write_byte(0xa1);
 145   1              respons();
 146   1              date=read_byte();
 147   1              stop();
 148   1              return date;
 149   1      }
 150          void display(uchar bai_c,uchar sh_c)    //显示程序
 151          {
 152   1         dula=0;
 153   1         P0=table[bai_c];             //显示第一位
 154   1         dula=1;
 155   1         dula=0;
 156   1         wela=0;
 157   1         P0=0x7e;
 158   1         wela=1;
 159   1         wela=0;
 160   1         delay1ms(5);
 161   1         dula=0;
 162   1         P0=table[sh_c];              //显示第二位
 163   1         dula=1;
 164   1         dula=0;
 165   1         wela=0;
 166   1         P0=0x7d;
 167   1         wela=1;
 168   1         wela=0;
 169   1         delay1ms(5);
 170   1      }
 171          void main()
 172          {
 173   1         ioin();
 174   1              init();
 175   1              sec=read_add(2);    //读出保存的数据赋于sec
 176   1              if(sec>100)        //防止首次读取出错误数据
 177   1                      sec=0;
 178   1              TMOD=0x01;                      //定时器工作在方式1
 179   1              ET0=1; 
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:30:16 PAGE 4   

 180   1              EA=1;
 181   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 182   1              TL0=(65536-50000)%256; //使定时器0.05秒中断一次
 183   1              TR0=1;                 //开始计时
 184   1              while(1)
 185   1              {
 186   2                      display(sec/10,sec%10);
 187   2                      if(write==1)                  //判断计时器是否计时一秒
 188   2                      {
 189   3                              write=0;              //清零
 190   3                              write_add(2,sec);         //在24c02的地址2中写入数据sec
 191   3                      }
 192   2              } 
 193   1      }
 194          void t0() interrupt 1 //定时中断服务函数
 195          {
 196   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 197   1              TL0=(65536-50000)%256; //重装计数初值
 198   1              tcnt++;        //每过50ms tcnt加一
 199   1              if(tcnt==20)  //计满20次(1秒)时
 200   1              {
 201   2                  tcnt=0;   //重新再计
 202   2                  sec++;
 203   2                  write=1;  //1秒写一次24C02
 204   2                  if(sec==100) //定时100秒,再从零开始计时
 205   2                      sec=0;
 206   2              }
 207   1      }


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