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

📄 control.lst

📁 基于Keil RTX51Tiny的远程监控采集系统从设备开发
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE CONTROL
OBJECT MODULE PLACED IN CONTROL.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE CONTROL.c DEBUG OBJECTEXTEND

stmt level    source

   1          /****************************************/
   2          /* Copyright (c) 2004, 63研究所 苗龙    */
   3          /* All rights reserved.                 */
   4          /* 作    者:苗龙                       */
   5          /****************************************/
   6          
   7          #include <reg52.h>                    /* special function registers 8052      */
   8          //#include "SST89x5x4.H"
   9          #include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
  10          
  11          sbit lrun=P3^5;
  12          sbit lctrl=P3^4;
  13          
  14          sbit state0=P1^0;
  15          sbit state1=P1^1;
  16          sbit state2=P1^2;
  17          sbit state3=P1^3;
  18          sbit state4=P1^4;
  19          sbit state5=P1^5;
  20          sbit state6=P1^6;
  21          sbit state7=P1^7;
  22          
  23          //注意On='0'
  24          sbit config1=P0^0;
  25          sbit config2=P0^1;
  26          sbit config3=P0^2;
  27          sbit config4=P0^3;
  28          sbit config5=P0^4;
  29          sbit config6=P0^5;
  30          sbit config7=P0^6;
  31          sbit config8=P0^7;
  32          sbit config9=P2^0;
  33          sbit config10=P2^1;
  34          
  35          //定义功能码
  36          #define FUN_GetState_M2S        0x3
  37          #define FUN_GetAnalog_M2S       0x4
  38          
  39          #define FUN_GetState_S2M        0x3
  40          #define FUN_GetAnalog_S2M       0x4
  41          #define FUN_Error_S2M           0x5
  42          /*
  43          "01H"表示"功能码错误","02H"表示"非法数据寄存器地址",
  44          "03H"表示"数据非法", "04H"表示"设备地址错误",
  45          "05H"表示"查询帧正确,但设备未准备好","06H"表示"设备忙",
  46          "07H"表示"编程错误","08H"表示"奇偶校验错误"。
  47          */
  48          //定义错误代码
  49          #define ERR_FunCode             0x01
  50          #define ERR_RegAddr             0x02
  51          #define ERR_Data                0x03
  52          #define ERR_EquAddr             0x04
  53          #define ERR_Ready               0x05
  54          #define ERR_Busy                0x06
  55          #define ERR_Prog                0x07
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 2   

  56          #define ERR_Check               0x08
  57          //定时参数
  58          #define INTEVAL_TICK            10  //2.4k
  59          #define INTEVAL_GETSTATE        500//5000 tick  5 s
  60          #define INTEVAL_GETANALOG       100//1000 tick  1 s
  61          
  62          #define SEND485 1
  63          #define RECV485 0
  64          
  65          unsigned char Address;
  66          unsigned short RegStart;
  67          unsigned short RegNum;
  68          unsigned char SysFun;
  69          
  70          //状态变量存储区
  71          #define LEN_STATE_AREA  8
  72          unsigned char AreaState[LEN_STATE_AREA];
  73          
  74          
  75          #define INIT            0                   /* task number of task:  init           */
  76          #define CLOCK           1                   /* task number of task:  command        */
  77          #define POLLED          2                   /* task number of task:  clock          */
  78          #define WAITFRAME   3                   /* task number of task:  keyread        */
  79          
  80          unsigned char frameRecv[16];
  81          unsigned char frameSend[16];
  82          
  83          
  84          extern char putchar (char c);
  85          extern char _getkey (void);
  86          extern unsigned char  istart;        
  87          extern unsigned char  iend;   
  88          
  89          extern unsigned char code auchCRCLo[];      //CRC校验表    
  90          extern unsigned char code auchCRCHi[];
  91          
  92          void config(void)
  93          {
  94   1              unsigned char i,j;
  95   1              //取地址
  96   1              i=0;
  97   1              j=!config7;//高7位
  98   1              i+=j<<6;
  99   1              j=!config6;
 100   1              i+=j<<5;
 101   1              j=!config5;
 102   1              i+=j<<4;
 103   1              j=!config4;
 104   1              i+=j<<3;
 105   1              j=!config3;
 106   1              i+=j<<2;
 107   1              j=!config2;
 108   1              i+=j<<1;
 109   1              j=!config1;
 110   1              i+=j;
 111   1      
 112   1              Address=i;
 113   1              
 114   1              //配置串口参数
 115   1              if((!config10)==0)//OFF  2.4k
 116   1              {
 117   2                      SCON  = 0x50;                      // mode 1: 8-bit UART, enable receiver   
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 3   

 118   2                      TMOD |= 0x20;                      // timer 1 mode 2: 8-Bit reload         
 119   2                      TH1   = 0xf4;                      // reload value 2400 baud                
 120   2                      TR1   = 1;                         // timer 1 run                         
 121   2                      ES    = 1;                         // enable serial port interrupt        
 122   2              }
 123   1              else//9.6k
 124   1              {
 125   2                      SCON  = 0x50;                      // mode 1: 8-bit UART, enable receiver   
 126   2                      TMOD |= 0x20;                      // timer 1 mode 2: 8-Bit reload         
 127   2                      TH1   = 0xfd;                      // reload value 2400 baud                
 128   2                      TR1   = 1;                         // timer 1 run                         
 129   2                      ES    = 1;                         // enable serial port interrupt      
 130   2              }
 131   1              //系统参数
 132   1              lrun=1;
 133   1              lctrl=RECV485;
 134   1      }
 135          void Send485()
 136          {
 137   1              os_wait (K_TMO, 1, 0);
 138   1              lctrl=SEND485;
 139   1              os_wait (K_TMO, 1, 0);
 140   1      }
 141          void Recv485()
 142          {
 143   1              os_wait (K_TMO, 1, 0);
 144   1              lctrl=RECV485;
 145   1              os_wait (K_TMO, 1, 0);
 146   1      }
 147          //CRC循环校验
 148          unsigned short crc(unsigned char pchar[],unsigned char len)
 149          {
 150   1        unsigned char i=0;
 151   1        unsigned char uchCRCHi = 0xFF ;             /* 高CRC字节初始化 */ 
 152   1        unsigned char uchCRCLo = 0xFF ;             /* 低CRC 字节初始化 */ 
 153   1        unsigned char uIndex ;                      /* CRC循环中的??*/ 
 154   1      
 155   1        while (len--)                       /* 传输消息缓冲?  ?*/ 
 156   1        { 
 157   2          //uIndex = uchCRCHi ^ *pchar++ ; /* 计算CRC */ 
 158   2          uIndex = uchCRCHi ^ pchar[i] ; /* 计算CRC */ 
 159   2          uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ; 
 160   2          uchCRCLo = auchCRCLo[uIndex] ; 
 161   2              i=i+1;
 162   2        } 
 163   1        return (uchCRCHi << 8 | uchCRCLo) ; 
 164   1      }
 165          //unsigned char crct[]={1,2,3,4,5,6,7,8,9,0x0e,0xb3};
 166          //unsigned short crcttt;
 167          //  crcttt=crc(crct,11);
 168          //{0,3,0,0,0,0};{0,3,0,0,0,0,0x45,0xdd};
 169          //
 170          /******************************************************************************/
 171          /*        Task 0 'init': Initialize                                           */
 172          /******************************************************************************/
 173          void init (void) _task_ INIT  {       /* program execution starts here        */

⌨️ 快捷键说明

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