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

📄 miin.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:40:14 PAGE 1   


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

line level    source

   1          //实验平台:HL-1 V6.1+Keil U3
   2          //开发公司:慧净电子WWW.HLMCU.COM
   3          //淘宝店铺:http://shop37031453.taobao.com
   4          //开机次数记忆
   5          #include<reg52.h>
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          bit  write=0;           //写24C02的标志;
   9          sbit sda=P2^0;                         
  10          sbit scl=P2^1;
  11          sbit dula=P2^6;
  12          sbit wela=P2^7;
  13          sbit RST=P2^5;   //时钟 
  14          sbit CS_DA =P2^4 ;  //HJ-1G DAC
  15          sbit JD=P0^6;
  16          sbit FM=P2^3;
  17          
  18          
  19          uchar sec,tcnt; 
  20          uchar code table[]={
  21          0x3f,0x06,0x5b,0x4f,
  22          0x66,0x6d,0x7d,0x07,
  23          0x7f,0x6f,0x77,0x7c,
  24          0x39,0x5e,0x79,0x71};
  25          void ioin()  //IO口继电器、数码管锁存函数
  26             {      
  27   1                wela=1;
  28   1           P0 = 1;  
  29   1                JD = 0;    
  30   1           wela=0;
  31   1                dula=1;
  32   1                P0=0;
  33   1                dula=0;
  34   1          }
  35          void delay()
  36          { ;; }
  37          void delay1ms(uint z)
  38          {
  39   1              uint x,y;
  40   1              for(x=z;x>0;x--)
  41   1                      for(y=110;y>0;y--);
  42   1      }
  43          void start()  //开始信号
  44          {       
  45   1              sda=1;
  46   1              delay();
  47   1              scl=1;
  48   1              delay();
  49   1              sda=0;
  50   1              delay();
  51   1      }
  52          void stop()   //停止
  53          {
  54   1              sda=0;
  55   1              delay();
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:40:14 PAGE 2   

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

 118   1              write_byte(0xa0);
 119   1              respons();
 120   1              write_byte(address);
 121   1              respons();
 122   1              write_byte(date);
 123   1              respons();
 124   1              stop();
 125   1      }
 126          uchar read_add(uchar address)
 127          {
 128   1              uchar date;
 129   1              start();
 130   1              write_byte(0xa0);
 131   1              respons();
 132   1              write_byte(address);
 133   1              respons();
 134   1              start();
 135   1              write_byte(0xa1);
 136   1              respons();
 137   1              date=read_byte();
 138   1              stop();
 139   1              return date;
 140   1      }
 141          void display(uchar bai_c,uchar sh_c)    //显示程序
 142          {
 143   1         dula=0;
 144   1         P0=table[bai_c];             //显示第一位
 145   1         dula=1;
 146   1         dula=0;
 147   1         wela=0;
 148   1         P0=0x7e;
 149   1         wela=1;
 150   1         wela=0;
 151   1         delay1ms(5);
 152   1         dula=0;
 153   1         P0=table[sh_c];              //显示第二位
 154   1         dula=1;
 155   1         dula=0;
 156   1         wela=0;
 157   1         P0=0x7d;
 158   1         wela=1;
 159   1         wela=0;
 160   1         delay1ms(5);
 161   1      }
 162          void main()
 163          {
 164   1         ioin();
 165   1              init();
 166   1              sec=read_add(2);    //读出保存的数据赋于sec
 167   1              if(sec>100)        //防止首次读取出错误数据
 168   1                      sec=0;
 169   1              TMOD=0x01;                      //定时器工作在方式1
 170   1              ET0=1; 
 171   1              EA=1;
 172   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 173   1              TL0=(65536-50000)%256; //使定时器0.05秒中断一次
 174   1              TR0=1;                 //开始计时
 175   1              while(1)
 176   1              {
 177   2                      display(sec/10,sec%10);
 178   2                      if(write==1)                  //判断计时器是否计时一秒
 179   2                      {
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:40:14 PAGE 4   

 180   3                              write=0;              //清零
 181   3                              write_add(2,sec);         //在24c02的地址2中写入数据sec
 182   3                      }
 183   2              } 
 184   1      }
 185          void t0() interrupt 1 //定时中断服务函数
 186          {
 187   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 188   1              TL0=(65536-50000)%256; //重装计数初值
 189   1              tcnt++;        //每过50ms tcnt加一
 190   1              if(tcnt==20)  //计满20次(1秒)时
 191   1              {
 192   2                  tcnt=0;   //重新再计
 193   2                  sec++;
 194   2                  write=1;  //1秒写一次24C02
 195   2                  if(sec==100) //定时100秒,再从零开始计时
 196   2                      sec=0;
 197   2              }
 198   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 + -