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

📄 ds1302.lst

📁 能用串口修改时间的时钟程序
💻 LST
字号:
C51 COMPILER V7.06   DS1302                                                                07/29/2000 11:48:31 PAGE 1   


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

stmt level    source

   1          /************************************/
   2          /*ds1302+ds18b20温度时钟            */       
   3          /*目标器件:AT89S51                                     */
   4          /*晶振:11.0592MHZ                                       */
   5          /*编译环境:Keil 7.50A              */
   6          /*串口修改时间的格式为:以a开头加年 */
   7          /*加月加日加星期加时加分加秒加b结束 */
   8          /*如a0807281163812b.                */          
   9          /************************************/
  10          
  11          /*********************************包含头文件********************************/
  12          #include <at89x52.h>
  13          #include <intrins.h>
  14          
  15          /*********************************端口定义**********************************/
  16          sbit DS1302_CLK = P1^0;
  17          sbit DS1302_IO  = P1^1;
  18          sbit DS1302_RST = P1^2;
  19          sbit K1 = P3^2;
  20          sbit K2 = P3^3;
  21          sbit DQ=P3^3;
  22          /*******************************共阳LED段码表*******************************/
  23          unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6,0x7f};
  24          
  25          /******************************定义全局变量*********************************/
  26          unsigned char second,minute,hour,week,day,month,year;   //秒、分、时、星期、日、月、年
  27          //unsigned char minute1,hour1;
  28          unsigned char second1,minute1,hour1,week1,day1,month1,year1;
  29          unsigned char t1,t2,i;
  30          unsigned char secondchar,minutechar,hourchar,weekchar,daychar,monthchar,yearchar;
  31          unsigned char keysum ;
  32          unsigned char key_s, key_v, tmp;
  33          unsigned char key_s1, key_v1;
  34          unsigned char  tab1[10];
  35          unsigned char dat;                              //定义全局变量
  36          unsigned long dat1;
  37          unsigned char ii,jj;
  38          unsigned char RxdFlag;
  39          //char code str[] = "www.jiundingantong.com  ";
  40          
  41          
  42          
  43          /*********************************定义全局变量******************************/
  44          unsigned char tempL=0;                  //临时变量低位
  45          unsigned char tempH=0;                  //临时变量高位
  46          float temperature;                      //温度值
  47          
  48          
  49          //串行口初始化程序
  50          void Init_Com(void)
  51          {
  52   1           TMOD = 0x20;       // 定时器1工作于8位自动重载模式, 用于产生波特率
  53   1           PCON = 0x00;   // 波特率不倍增//
  54   1           SCON = 0x50;       // 串口工作方式1//              
  55   1           TH1 = 0xFd;    // 9600Kbps//
C51 COMPILER V7.06   DS1302                                                                07/29/2000 11:48:31 PAGE 2   

  56   1           TL1 = 0xFd;
  57   1           TR1 = 1;           // 启动定时器1,开启中断//              
  58   1      }
  59          
  60          
  61          void send_char(unsigned char txd)     // 传送一个字符
  62          {
  63   1              SBUF = txd;             // 传送数据
  64   1              while(!TI);                             // 等特数据传送
  65   1              TI = 0;                                 // 清除数据传送标志
  66   1      }
  67          
  68          
  69          
  70          
  71          /****************************************************************************
  72          函数功能:延时子程序(温度显示部分用)
  73          入口参数:k
  74          出口参数:
  75          ****************************************************************************/
  76          void delayy(unsigned int k)
  77          
  78          {         
  79   1              unsigned int n;     
  80   1              n=0;       
  81   1              while(n < k)      
  82   1              {n++;}        
  83   1              return;       
  84   1      } 
  85             
  86          /****************************************************************************
  87          函数功能:延时子程序(时间显示部分用)
  88          入口参数:
  89          出口参数:
  90          ****************************************************************************/
  91          
  92          void delay1(void)
  93          {
  94   1              int k;
  95   1              for(k=0;k<400;k++);
  96   1      }     
  97          
  98          /****************************************************************************
  99          函数功能:数码管显示子程序(正常显示温度)
 100          入口参数:k
 101          出口参数:
 102          ****************************************************************************/
 103          void displayy(int k)
 104          {
 105   1              /*P2=0xfe;                      
 106   1              P0=tab[k/1000];
 107   1              delay1();
 108   1              P2=0xfd;
 109   1              P0=tab[k%1000/100];
 110   1              delay1();*/
 111   1              P2=0xff;           //关闭P2口//
 112   1              P2=0xfb;           //温度显示的十位的位选//
 113   1              P0=tab[k%100/10];  //温度显示的十位//
 114   1              delay1();
 115   1              P2=0xf7;           //温度显示的个位的位选//
 116   1              P0=tab[k%10];      //温度显示的个位//
 117   1              delay1();
C51 COMPILER V7.06   DS1302                                                                07/29/2000 11:48:31 PAGE 3   

 118   1          P2=0xdf;           //字符C的位选//
 119   1              P0=0xc6;   //从DP段开始倒数:DP、G、F、E、D、C、B、A/11000110即16进制C6,显示字符

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -