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

📄 relayctr.lst

📁 压缩包中包括多个常用的汇编
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  RELAYCTR                                                               09/24/2005 16:14:14 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE RELAYCTR
OBJECT MODULE PLACED IN G:\C51PRJ\RELAYCTR\RELAYCTR.OBJ
COMPILER INVOKED BY: e:\keil\c51\BIN\C51.EXE G:\C51PRJ\RELAYCTR\RELAYCTR.C DB SB OE

stmt level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*                Copyright (c) 2005, 老树工作室                            */
   4          /*                     All rights reserved.                                 */
   5          /*                                                                          */
   6          /*      http://www.saintone.net      Email:hxm0902@163.com                  */
   7          /*      QQ:112431149                 Tel:010-62966630                       */
   8          /*                                                                          */
   9          /****************************************************************************/
  10          /****************************************************************************/
  11          /* 文件名:relayctr.c                                                       */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:利用实时时钟和光敏检测实现一年24小时控制电灯开启关闭             */
  14          /*                                                                          */
  15          /* 作  者:spot                                                             */
  16          /* 函  数:                                                                 */
  17          /*         time0_over_int                                                   */
  18          /*         ext1_int_proc                                                    */
  19          /*         system_init                                                      */
  20          /*         calc_lumin                                                       */
  21          /*                                                                          */
  22          /* 历史记录:                                                               */
  23          /*  spot          2005-08-25     Creat Inital version. (Version 1.0)        */
  24          /****************************************************************************/
  25          
  26          #include <reg52.h>
  27          #include <absacc.h>
  28          #include <intrins.h>
  29          #include "../includes/types.h"
  30          
  31          /* 函数声明 */
  32          void time0_over_int(void); /* 定时器0中断服务程序 ,使用第1组寄存器  */
  33          void ext1_int_proc(void);  /* 外部中断1中断服务程序,使用第2组寄存器 */
  34          void system_init(void);    /* 系统上电初始化 */
  35          u_char calc_lumin(u_int fhz);/* 计算当前光强  */
  36          
  37          extern void sd2000_read_date(void);   /* 读取sd2000时钟数据      */
  38          extern void sd2000_write_status(void);/* 写sd2000状态寄存器      */
  39          
  40          /* 声明结束 */
  41          
  42          u_int fhz_tlc555;    /* tlc555输出频率 */
  43          u_char timer_count;  /* 定时计数       */
  44          bit timer_int;       /* 定时标志       */
  45          
  46          sbit CTRL_RELAY = P3^4;
  47          
  48          extern u_char read_date[7]; /*日期时间数据*/
  49          
  50          /* 定时器0中断服务程序 ,使用第1组寄存器 */
  51          void time0_over_int(void) interrupt 1 using 1
  52          {
  53   1          TF0=0;
  54   1          timer_int=1;
  55   1          TH0 = -(46080 / 256);
C51 COMPILER V6.12  RELAYCTR                                                               09/24/2005 16:14:14 PAGE 2   

  56   1          TL0 = -(46080 % 256);
  57   1      }
  58          
  59          /* 外部中断1中断服务程序,使用第2组寄存器 */
  60          void ext1_int_proc(void) interrupt 2 using 2
  61          {
  62   1          fhz_tlc555++;
  63   1      }
  64          
  65          /* 系统上电初始化 */
  66          void system_init(void)
  67          {
  68   1          EA = 0;
  69   1          timer_int = 0;
  70   1          timer_count = 0;
  71   1      
  72   1          TMOD = 0x01;           /*定时器0工作于方式1*/
  73   1          TCON = 0x04;           /*外部中断下降沿触发*/
  74   1          TH0 = -(46080 / 256);  /*定时50毫秒*/
  75   1          TL0 = -(46080 % 256);
  76   1          PT0 = 1;               /*定时器0高优先级*/
  77   1          TR0 = 1;               /*定时器0启动计数*/
  78   1          IE = 0x86;             /*定时器0,外部中断1,CPU开中断*/
  79   1      }
  80          
  81          /* 计算当前光强 */
  82          u_char calc_lumin(u_int fhz)
  83          {
  84   1          u_char lumin = 0;
  85   1      
  86   1          if (fhz <= 2000)/* 光强为0 */
  87   1          {
  88   2              return 0;
  89   2          }
  90   1          else if ( (fhz > 2000) && (fhz <= 4770) )/* 光强为0~10 */
  91   1          {
  92   2              lumin = fhz / 277 - 7.2;
  93   2              return lumin;
  94   2          }
  95   1          else if ( (fhz > 4770) && (fhz <= 5400) )/* 光强为10~20 */
  96   1          {
  97   2              lumin = fhz / 63 - 65.7;
  98   2              return lumin;
  99   2          }
 100   1          else if ( (fhz > 5400) && (fhz <= 8200) )/* 光强为20~30 */
 101   1          {
 102   2              lumin = fhz / 280 + 0.7;
 103   2              return lumin;
 104   2          }
 105   1          else if ( (fhz > 8200) && (fhz <= 9600) )/* 光强为30~40 */
 106   1          {
 107   2              lumin = fhz / 140 - 28.6;
 108   2              return lumin;
 109   2          }
 110   1          else if ( (fhz > 9600) && (fhz <= 10100) )/* 光强为40~50 */
 111   1          {
 112   2              lumin = fhz / 50 - 152;
 113   2              return lumin;
 114   2          }
 115   1          else if ( (fhz > 10100) && (fhz <= 12100) )/* 光强为50~60 */
 116   1          {
 117   2              lumin = fhz / 200;
C51 COMPILER V6.12  RELAYCTR                                                               09/24/2005 16:14:14 PAGE 3   

 118   2              return lumin;
 119   2          }
 120   1          else if ( (fhz > 12100) && (fhz <= 12900) )/* 光强为60~100 */
 121   1          {
 122   2              lumin = fhz / 20 - 545;
 123   2              return lumin;
 124   2          }
 125   1      }
 126          
 127          main()
 128          {
 129   1          u_char cur_lumin;
 130   1      
 131   1          system_init();
 132   1          sd2000_write_status();
 133   1      
 134   1          while(1)
 135   1          {
 136   2              if (timer_int == 1) /* 50毫秒定时到 */
 137   2              {
 138   3                  timer_int = 0;

⌨️ 快捷键说明

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