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

📄 appli.lst

📁 压缩包中包括多个常用的汇编
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE APPLI
OBJECT MODULE PLACED IN E:\C51PRJ\APPNEW\APPLI.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\APPNEW\APPLI.C DB SB OE

line 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          /* 文件名:comapp.c                                                         */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:实现计算机和单片机的通讯协议,根据计算机发给的命令进行相应操作   */
  14          /* 作  者:spot                                                             */
  15          /* 函  数:                                                                 */
  16          /*         clear_timer                                                      */
  17          /*         com_command_receive                                              */
  18          /*         com_send_command                                                 */
  19          /*         main_message_process                                             */
  20          /*         message_loop                                                     */
  21          /*         msg_first_push                                                   */
  22          /*         msg_last_push                                                    */
  23          /*         send_command                                                     */
  24          /*         set_timer                                                        */
  25          /*         system_init                                                      */
  26          /*         ext1_int_proc                                                    */
  27          /*         geT_LUMINity                                                     */
  28          /*         time0_over_int                                                   */
  29          /*         com_int_proc                                                     */
  30          /*         command_decoder                                                  */
  31          /*                                                                          */
  32          /* 历史记录:                                                               */
  33          /*  spot          2005-07-10     Creat Inital version. (Version 1.0)        */
  34          /****************************************************************************/
  35          
  36          #include <reg52.h>
  37          #include <absacc.h>
  38          #include <intrins.h>
  39          #include "../includes/com.h"
  40          #include "../includes/sd2k3drv.h"
  41          #include "../includes/lcd.h"
  42          #include "../includes/hc595drv.h"
  43          #include "keyboard.h"
  44          
  45          u_char calc_lumin(u_int fhz);       /* 计算当前光强          */
  46          
  47          extern void write_iic_data(u_char write_data[], u_char address, u_char num); /* 向iic设备写入N个字节 */
  48          extern void read_iic_data(u_char read_data[], u_char address, u_char num);   /* 从iic设备读取N个字节 */
  49          extern void dac_5615(u_int data_in);/* 写入DAC的10bit输入数据 */
  50          extern u_int adc_1549(void);        /* 读取模拟量输入        */
  51          extern u_char get_temperature(void);/* 读取温度子程序        */
  52          extern void key_setmenu_lcd(void);  /* 键盘扫描              */
  53          extern u_char key_code;
  54          
  55          ALARM_DATA_INFO alarm_limit;         /* 报警阈值结构变量     */
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 2   

  56          
  57          sbit SWITCH_IN  = P3^2;              /* 开关量输入信号       */
  58          sbit CTRL_RELAY = P3^4;              /* 控制继电器开关       */
  59          sbit WDI = P0^5;                     /* 喂狗信号             */
  60          
  61          /* 定时器变量 */
  62          bit     timer_int;                   /* 定时到标志           */
  63          u_char  idata timer_sign[MAX_TNUM];  /* 1:已定时             */
  64          u_char  idata timer_type[MAX_TNUM];  /* 1:循环定时 0:一般    */
  65          u_char  idata timer_len[MAX_TNUM];   /* 定时时长 单位: 2ms   */
  66          u_char  idata timer_count[MAX_TNUM]; /* 当前定时计数         */
  67          u_char  idata timer_id[MAX_TNUM];    /* 定时标识号           */
  68          u_char  idata timer_map[MAX_TNUM];   /* 定时映射             */
  69          u_char  timer_number;                /* 定时器数目           */
  70          
  71          u_char  idata msg_type[MAX_MSGNUM];  /* 消息类型             */
  72          u_char  idata msg_value[MAX_MSGNUM]; /* 消息数值             */
  73          u_char  msg_number;                  /* 消息总数             */
  74          u_char  msg_nowtype;                 /* 当前消息类型         */
  75          u_char  msg_nowvalue;                /* 当前消息数值         */
  76          u_char  msg_readp;                   /* 消息队列读指针       */
  77          u_char  msg_writep;                  /* 消息队列写指针       */
  78          
  79          u_char  idata prec_buf[MAX_COMMAND_LEN];/* 命令接收缓冲区    */
  80          u_char  prec_num;                    /* 命令接收缓冲区字节数 */
  81          u_char  idata pint_buf[MAX_RINTL];   /* 串口缓冲区           */
  82          u_char  pint_read;                   /* 串口缓冲区读指针     */
  83          u_char  pint_write;                  /* 串口缓冲区写指针     */
  84          bit     psend_int;                   /* 串口发送允许标志     */
  85          
  86          u_int   int_times;
  87          
  88          u_char serial_flag = 0;              /* 串口接收数据标志位   */
  89          u_char serial_lengthl = 0;           /* 消息命令长度低8位    */
  90          u_int  serial_length = 0;            /* 消息命令长度16位     */
  91          
  92          u_char send_buf[15];                 /* 消息发送缓冲区  */
  93          
  94          extern u_char date[7];               /* 实时时钟数组    */
  95          u_char watchdog_date[7];             /* WATCHDOG数据    */
  96          
  97          u_int  analog_in_data;               /* 当前模拟量输入  */
  98          u_int  analog_out_data;              /* 当前模拟量输出  */
  99          u_char cur_temp;                     /* 当前温度数值    */
 100          u_char cur_lumin;                    /* 当前光强数值    */
 101          
 102          bit lcd_flag = 1;                    /* 液晶显示页面标志*/
 103          
 104          u_int fhz_tlc555;                    /* tlc555输出频率  */
 105          
 106          bit tsample_flag = 0;                /* 采样定时标志1:启动,0:停止 */
 107          
 108          u_char ADDRESS[2];                   /* byte0:通讯组地址, byte1:开发板地址 */
 109          
 110          /* 外部中断1中断服务程序,使用第2组寄存器 */
 111          void ext1_int_proc(void) interrupt 2 using 2
 112          {
 113   1          fhz_tlc555++;
 114   1      }
 115          
 116          /* 计算当前光强 */
 117          u_char calc_lumin(u_int fhz)
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 3   

 118          {
 119   1          u_char lumin = 0;
 120   1      
 121   1          if (fhz <= 2000)/* 光强为0 */
 122   1          {
 123   2              return 0;
 124   2          }
 125   1          else if ( (fhz > 2000) && (fhz <= 4770) )/* 光强为0~10 */
 126   1          {
 127   2              lumin = fhz / 277 - 7.2;
 128   2              return lumin;
 129   2          }
 130   1          else if ( (fhz > 4770) && (fhz <= 5400) )/* 光强为10~20 */
 131   1          {
 132   2              lumin = fhz / 63 - 65.7;
 133   2              return lumin;
 134   2          }
 135   1          else if ( (fhz > 5400) && (fhz <= 8200) )/* 光强为20~30 */
 136   1          {
 137   2              lumin = fhz / 280 + 0.7;
 138   2              return lumin;
 139   2          }
 140   1          else if ( (fhz > 8200) && (fhz <= 9600) )/* 光强为30~40 */
 141   1          {
 142   2              lumin = fhz / 140 - 28.6;
 143   2              return lumin;
 144   2          }
 145   1          else if ( (fhz > 9600) && (fhz <= 10100) )/* 光强为40~50 */
 146   1          {
 147   2              lumin = fhz / 50 - 152;
 148   2              return lumin;
 149   2          }
 150   1          else if ( (fhz > 10100) && (fhz <= 12100) )/* 光强为50~60 */
 151   1          {
 152   2              lumin = fhz / 200;
 153   2              return lumin;
 154   2          }
 155   1          else if ( (fhz > 12100) && (fhz <= 12900) )/* 光强为60~100 */
 156   1          {
 157   2              lumin = fhz / 20 - 545;
 158   2              return lumin;
 159   2          }
 160   1      }
 161          
 162          /* 定时器0中断服务程序 ,使用第1组寄存器 */
 163          void time0_over_int(void) interrupt 1 using 1
 164          {
 165   1          TF0=0;
 166   1          timer_int=1;
 167   1          TH0 = -(46080 / 256);
 168   1          TL0 = -(46080 % 256);
 169   1      }
 170          
 171          /* 串口中断服务程序,使用第3组寄存器 */
 172          void com_int_proc(void) interrupt 4 using 3
 173          {
 174   1          u_char temp;
 175   1          u_char temp1;
 176   1      
 177   1          if (TI == 1)
 178   1          {
 179   2              TI = 0;
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 4   

 180   2              psend_int = 1;          /* 可以发送         */
 181   2          }
 182   1      
 183   1          if (RI == 1)
 184   1          {
 185   2              RI = 0;                 /* 清串口接收中断   */
 186   2              temp1 = SBUF;
 187   2              temp  = pint_write + 1; /* 判断是否可以写入 */
 188   2              if (temp == MAX_RINTL)
 189   2              {
 190   3                  temp=0;
 191   3              }
 192   2      
 193   2              if (temp != pint_read)
 194   2              {
 195   3                  pint_buf[pint_write] = temp1; /* 读取数据 */
 196   3                  pint_write = temp;
 197   3              }
 198   2          }
 199   1      }
 200          
 201          /* 确认正在定时的定时器映射关系 */
 202          void count_timer_map(void)
 203          {
 204   1          u_char loop;
 205   1          u_char temp;
 206   1      
 207   1          timer_number = 0;
 208   1      
 209   1          for (loop=0; loop<MAX_TNUM; loop++)
 210   1          {
 211   2              if (timer_sign[loop] != 0)
 212   2              {
 213   3                  temp = timer_number;
 214   3                  timer_map[temp] = loop;
 215   3                  timer_number++;
 216   3              }
 217   2          }
 218   1      }
 219          
 220          /* 设置定时参数 */
 221          void set_timer(u_int time_len, u_char type, u_char id)
 222          {
 223   1          u_char loop;
 224   1      
 225   1          for (loop=0; loop<MAX_TNUM; loop++)
 226   1          {
 227   2              if (timer_sign[loop] == 0)
 228   2              {
 229   3                  timer_count[loop] = 0;        /* 定时计数 */
 230   3                  timer_sign[loop]  = 1;        /* 定时标志 */
 231   3                  timer_type[loop]  = type;     /* 定时类型 0:一般 1:循环 */
 232   3                  timer_len[loop]   = time_len; /* 时长 10ms 的倍数 */
 233   3                  timer_id[loop]    = id;       /* 定时器id */
 234   3      
 235   3                  count_timer_map();
 236   3                  return;

⌨️ 快捷键说明

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