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

📄 51

📁 51单片机大量源码
💻
字号:
C51 COMPILER V8.09   24C08JISHI                                                            07/12/2010 14:37:19 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE 24C08JISHI
OBJECT MODULE PLACED IN 24C08jishi.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE 24C08jishi.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //24c08地址为0xa0
   2          #include <reg52.h>
   3          #define uchar unsigned char 
   4          unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
   5          unsigned char sec=0; //定义计数值,每过1秒,sec加1   
   6          unsigned int count; //定时中断次数        
   7          bit  write=0; //写24C08的标志;
   8          sbit gewei=P2^7; //个位选通定义      
   9          sbit shiwei=P2^6; //十位选通定义     
  10          /////////24C08读写驱动程序////////////////////
  11          sbit scl=P3^4; // 24c08 SCL                  
  12          sbit sda=P3^5; // 24c08 SDA     
  13          sbit K5=P1^4;  //清0按键             
  14          
  15          /***********************************************/
  16          void delay()   //delay 5us
  17          { ;; }
  18          
  19          /**********************************************/
  20          void delay1(uchar x)
  21          {
  22   1              uchar a,b;
  23   1              for(a=x;a>0;a--)
  24   1               for(b=100;b>0;b--);
  25   1      }
  26          /**********************************************/
  27          void start()  //开始信号
  28          {       
  29   1              sda=1;
  30   1              delay();
  31   1              scl=1;
  32   1              delay();
  33   1              sda=0;
  34   1              delay();
  35   1      }
  36          
  37          /************************************************/
  38          void stop()   //停止信号
  39          {
  40   1              sda=0;
  41   1              delay();
  42   1              scl=1;
  43   1              delay();
  44   1              sda=1;
  45   1              delay();
  46   1      }
  47          /**************************************************/
  48          void respons()  //应答
  49          {
  50   1              uchar i;
  51   1              scl=1;
  52   1              delay();
  53   1              while((sda==1)&&(i<250))i++;
  54   1              scl=0;
  55   1              delay();
C51 COMPILER V8.09   24C08JISHI                                                            07/12/2010 14:37:19 PAGE 2   

  56   1      }
  57          
  58          /**************************************************/
  59          void init_24c08()  //初始化24C02
  60          {
  61   1              sda=1;
  62   1              delay();
  63   1              scl=1;
  64   1              delay();
  65   1      }
  66          /************************************************/
  67          void write_byte(uchar date)
  68          {
  69   1              uchar i,temp;
  70   1              temp=date;
  71   1              for(i=0;i<8;i++)
  72   1              {
  73   2                      temp=temp<<1;
  74   2                      scl=0;
  75   2                  delay();
  76   2                      sda=CY;
  77   2                      delay();
  78   2                      scl=1;
  79   2                      delay();
  80   2              //      scl=0;
  81   2           // delay();
  82   2              }
  83   1              scl=0;
  84   1              delay();
  85   1              sda=1;
  86   1              delay();
  87   1      }
  88          /**********************************************/
  89          uchar read_byte()
  90          {
  91   1              uchar i,k;
  92   1              scl=0;
  93   1              delay();
  94   1              sda=1;
  95   1              delay();
  96   1              for(i=0;i<8;i++)
  97   1              {
  98   2                      scl=1;
  99   2                      delay();        
 100   2                      k=(k<<1)|sda;
 101   2                      scl=0;
 102   2                      delay();        
 103   2              }
 104   1              return k;
 105   1      }
 106          
 107          /*****************************************************************/
 108          
 109          void write_24c08(uchar address,uchar shuju) //给指定地址中写入数据
 110          {
 111   1              start();
 112   1              write_byte(0xa0);    //  最低位为0写,1读
 113   1              respons();
 114   1              write_byte(address);
 115   1              respons();
 116   1              write_byte(shuju);
 117   1              respons();
C51 COMPILER V8.09   24C08JISHI                                                            07/12/2010 14:37:19 PAGE 3   

 118   1              stop();
 119   1      }
 120          
 121          /*****************************************************************/
 122          uchar read_24c08(uchar address) //从24c08指定地址中读出数据 
 123          {
 124   1              uchar date;
 125   1              start();
 126   1              write_byte(0xa0);
 127   1              respons();
 128   1              write_byte(address);
 129   1              respons();
 130   1      
 131   1              start();
 132   1              write_byte(0xa1);
 133   1              respons();
 134   1              date=read_byte();
 135   1              stop();
 136   1              return date;
 137   1      }
 138          
 139          /////////////24C02读写驱动程序完/////////////////////
 140          
 141          
 142          /***********************************************************/
 143          void LEDshow() //LED显示函数    
 144          {
 145   1              
 146   1          P0=table[sec/10]; 
 147   1          shiwei=0; 
 148   1              delay1(40); 
 149   1              shiwei=1;
 150   1      
 151   1              P0=table[sec%10];
 152   1          gewei=0; 
 153   1              delay1(40); 
 154   1              gewei=1;        
 155   1      }
 156          
 157          /***********************************************************/
 158          void main(void) 
 159          { 
 160   1      
 161   1              TMOD=0x01; //定时器工作在方式1
 162   1              ET0=1; 
 163   1          EA=1; 
 164   1              init_24c08(); //初始化24C08
 165   1              sec=read_24c08(2);//读出保存的数据赋于sec
 166   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 167   1              TL0=(65536-50000)%256; //使定时器0.05秒中断一次
 168   1              TR0=1; //开始计时
 169   1                      while(1) 
 170   1                      {
 171   2                          LEDshow();
 172   2                              if(write==1) //判断计时器是否计时一秒       
 173   2                              {
 174   3                              write=0; //清零 
 175   3                              write_24c08(2,sec); //在24c08的地址2中写入数据sec          
 176   3                              }
 177   2      
 178   2                        if(K5==0){
 179   3                              delay1(10);
C51 COMPILER V8.09   24C08JISHI                                                            07/12/2010 14:37:19 PAGE 4   

 180   3                              if(K5==0){
 181   4                               sec=0;
 182   4                              }
 183   3                }
 184   2                      }
 185   1      }
 186          
 187          
 188          /**************************************************************/
 189          
 190          void t0(void) interrupt 1 using 0 //定时中断服务函数   
 191          { 
 192   1              TH0=(65536-50000)/256; //对TH0 TL0赋值   
 193   1              TL0=(65536-50000)%256; //重装计数初值  
 194   1              count++; //每过50ms tcnt加一        
 195   1              if(count==20) //计满20次(1秒)时    
 196   1              { 
 197   2                      count=0; //重新再计
 198   2                      sec++;
 199   2                      write=1; //1秒写一次24C08
 200   2                      if(sec==100) //定时100秒,在从零开始计时
 201   2                      {sec=0;} 
 202   2              } 
 203   1      }


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