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

📄 user.lst

📁 Philips单片机P89C51RD和西门子Profibus工业总线的接口程序,硬件是鼎实公司的实验板,使用的鼎实公司的总线桥.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.20   USER                                                                  01/23/2006 13:26:51 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE USER
OBJECT MODULE PLACED IN user.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE user.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*+--------------------------------------------------------------+
   3          |文件名称: 实验板板串口通信程序—监测SE接口状态的工作模式        | 
   4          |版    本: V1.1                                                  |
   5          |制作单位: 北京鼎实创新科技公司                                  |
   6          |版权许可:                                                      |
   7          |网址:    www.c-profibus.com.cn                                |
   8          |email:    tangjy@c-profibus.com.cm                            |
   9          |日期:     2004/9                                                |
  10          +----------------------------------------------------------------+*/
  11          
  12          #include <d:\Keil\c51\INC\reg52.h>
  13          #include <d:\Keil\c51\INC\stdio.h>
  14          #define UBYTE unsigned char 
  15          #define UWORD unsigned int 
  16          
  17          
  18          /*========================================================================================================
             -==========*/
  19          /*                       以下是输入键、指示灯等设备变量定义,用户可以越过阅读                             
             -          */
  20          /*--------------------------------------------------------------------------------------------------------
             -----------*/
  21          
  22          
  23          sbit out0_7=P2^0;             /* 定义out0_7=P2.0=P16O0,输出指示灯Q0-Q7的输出控制,见实验板原理图U16        
             -   ------*/
  24          sbit out8_15=P2^1;            /* 定义out8_15=P2.1=P17O1,输出指示灯Q8-Q15的输出控制,见实验板原理图U17      
             -   ------*/
  25          sbit inled0_7=P2^2;           /* 定义inled0_7=P2.2=P18IO0,输入指示灯I0-I7的输出控制,见实验板原理图U18     
             -   ------*/
  26          sbit inled8_15=P2^3;          /* 定义inled8_15=P2.3=P19IO1,输入指示灯I8-I15的输出控制,见实验板原理图U19   
             -   ------*/
  27          sbit in0_7=P2^4;              /* 定义in0_7=P2^4=P2.4=P12I0,输入键I0-I7的读控制,见实验板原理图U12          
             -   ------*/
  28          sbit in8_15=P2^5;             /* 定义in8_15=P2^5=P2.5=P13I1,输入键I8-I15的读控制,见实验板原理图U13        
             -   ------*/
  29          sbit inadd=P2^6;              /* 定义inadd=P2^6=P2.6=P20AD,PROFIBUS地址输入AD0-AD7的读控制,见实验板原理图U
             -20 ------*/
  30          
  31          sbit REQ_IT=P1^7;             /* 定义REQ_IT=P1^7=P1.7=P17S_CTS,输入,连接OEM2-SE-REQ_IT,见实验板原理图CONNE
             -CT-16 ---*/
  32          sbit S_RTS=P1^6;              /* 定义S_RTS=P1^6=P1.6=P17S_RTS,输入,连接OEM2-SE-S_RTS,见实验板原理图CONNECT
             --16   ---*/
  33          sbit P15RES=P1^5;
  34          
  35          
  36          /************** 定义:di0_7:字节型,是输入键I0-I7当前值;   **************************/
  37          /************** 定义:di8_15:字节型,是输入键I8-I15当前值; **************************/
  38          
  39          bdata UBYTE di0_7,di8_15;     /* di0_7:字节型,输入键I0-I7;di8_15:字节型,输入键I8-I15 --------*/
  40          sbit di0=di0_7^0;             /* 定义di0=di0_7^0=输入键I0                            --------*/
  41          sbit di1=di0_7^1;             /* 定义di1=di0_7^1=输入键I1                            --------*/
  42          sbit di2=di0_7^2;             /* 定义di2=di0_7^2=输入键I2                            --------*/
  43          sbit di3=di0_7^3;             /* 定义di3=di0_7^3=输入键I3                            --------*/
C51 COMPILER V7.20   USER                                                                  01/23/2006 13:26:51 PAGE 2   

  44          sbit di4=di0_7^4;             /* 定义di4=di0_7^4=输入键I4                            --------*/
  45          sbit di5=di0_7^5;             /* 定义di5=di0_7^5=输入键I5                            --------*/
  46          sbit di6=di0_7^6;             /* 定义di6=di0_7^6=输入键I6                            --------*/
  47          sbit di7=di0_7^7;             /* 定义di7=di0_7^7=输入键I7                            --------*/
  48          sbit di8=di8_15^0;            /* 定义di8=di8_15^0=输入键I8                           --------*/
  49          sbit di9=di8_15^1;            /* 定义di9=di8_15^1=输入键I9                           --------*/
  50          sbit di10=di8_15^2;           /* 定义di10=di8_15^2=输入键I10                         --------*/
  51          sbit di11=di8_15^3;           /* 定义di11=di8_15^3=输入键I11                         --------*/
  52          sbit di12=di8_15^4;           /* 定义di12=di8_15^4=输入键I12                         --------*/
  53          sbit di13=di8_15^5;           /* 定义di13=di8_15^5=输入键I13                         --------*/
  54          sbit di14=di8_15^6;           /* 定义di14=di8_15^6=输入键I14                         --------*/
  55          sbit di15=di8_15^7;           /* 定义di15=di8_15^7=输入键I15                         --------*/
  56          
  57          
  58          /************** 定义:key0_7:字节型,是输入键I0-I7扫描读入值;   **************************/
  59          /************** 定义:key8_15:字节型,是输入键I8-I15扫描读入值; **************************/
  60          
  61          bdata UBYTE key0_7,key8_15;
  62          sbit key0=key0_7^0;           /* 定义key0=key0_7^0=输入键I0                          --------*/
  63          sbit key1=key0_7^1;           /* 定义key1=key0_7^1=输入键I1                          --------*/
  64          sbit key2=key0_7^2;           /* 定义key2=key0_7^2=输入键I2                          --------*/
  65          sbit key3=key0_7^3;           /* 定义key3=key0_7^3=输入键I3                          --------*/
  66          sbit key4=key0_7^4;           /* 定义key4=key0_7^4=输入键I4                          --------*/
  67          sbit key5=key0_7^5;           /* 定义key5=key0_7^5=输入键I5                          --------*/
  68          sbit key6=key0_7^6;           /* 定义key6=key0_7^6=输入键I6                          --------*/
  69          sbit key7=key0_7^7;           /* 定义key7=key0_7^7=输入键I7                          --------*/
  70          sbit key8=key8_15^0;          /* 定义key8=key8_15^0=输入键I8                         --------*/
  71          sbit key9=key8_15^1;          /* 定义key9=key8_15^1=输入键I9                         --------*/
  72          sbit key10=key8_15^2;         /* 定义key10=key8_15^2=输入键I10                       --------*/
  73          sbit key11=key8_15^3;         /* 定义key11=key8_15^3=输入键I11                       --------*/
  74          sbit key12=key8_15^4;         /* 定义key12=key8_15^4=输入键I12                       --------*/
  75          sbit key13=key8_15^5;         /* 定义key13=key8_15^5=输入键I13                       --------*/
  76          sbit key14=key8_15^6;         /* 定义key14=key8_15^6=输入键I14                       --------*/
  77          sbit key15=key8_15^7;         /* 定义key15=key8_15^7=输入键I15                       --------*/  
  78          
  79          /************** 定义:P00-P07对应P0口的P0.0-P0.7 **************************/
  80          sbit P00=P0^0;
  81          sbit P01=P0^1;
  82          sbit P02=P0^2;
  83          sbit P03=P0^3;
  84          sbit P04=P0^4;
  85          sbit P05=P0^5;
  86          sbit P06=P0^6;
  87          sbit P07=P0^7;
  88          
  89          /************** PP00-PP07是上面P00-P07的中间变量 **************************/
  90          bdata UBYTE PP0;
  91          sbit PP00=PP0^0;
  92          sbit PP01=PP0^1;
  93          sbit PP02=PP0^2;
  94          sbit PP03=PP0^3;
  95          sbit PP04=PP0^4;
  96          sbit PP05=PP0^5;
  97          sbit PP06=PP0^6;
  98          sbit PP07=PP0^7;
  99          
 100          
 101          /**** 定义:AB_status:字节型,报文类型及接口状态,见《PB-OEM2-SE产品手册》第四章、三、数据交换 *******/
 102          bdata UBYTE AB_status;
 103          sbit AB_sD0=AB_status^0;       /****  AB_sD0=AB_status^0:用户参数更新标记 ****/
 104          sbit AB_sD7=AB_status^7;       /****  AB_sD7=AB_status^7:报文格式         ****/
 105          
C51 COMPILER V7.20   USER                                                                  01/23/2006 13:26:51 PAGE 3   

 106          /**** 定义:req_com:字节型,请求数据命令,见《PB-OEM2-SE产品手册》第四章、三、数据交换 *******/
 107          bdata UBYTE req_com;
 108          sbit req_comD0=req_com^0;      /****  req_comD0=req_com^0:请求数据/参数命令 ****/
 109          sbit req_comD1=req_com^1;      /****  req_comD1=req_com^1:清参数命令        ****/
 110          
 111          
 112          /*--------------------------------------------------------------------------------------------------------
             -----------*/
 113          /*                       输入键、指示灯等设备变量定义完毕                                                 
             -          */
 114          /*========================================================================================================
             -==========*/
 115          
 116          
 117          /*========================================================================================================
             -==========*/
 118          /*                       以下是有关输入键、指示灯控制子程序,用户了解功能即可                             
             -          */
 119          /*--------------------------------------------------------------------------------------------------------
             -----------*/
 120          
 121          
 122          /************************* 将V值送指示灯Q0-Q7输出****************************/
 123          void steout0_7(UBYTE  v)
 124          {
 125   1      out0_7=0;
 126   1      P0=v;
 127   1      P0=v;
 128   1      P0=v;
 129   1      P0=v;
 130   1      out0_7=1;
 131   1      out0_7=0;
 132   1      }
 133          
 134          /************************* 将V值送指示灯Q8-Q15输出***************************/
 135          void steout8_15(UBYTE  v)
 136          {
 137   1      out8_15=0;
 138   1      P0=v;
 139   1      P0=v;
 140   1      P0=v;
 141   1      P0=v;
 142   1      out8_15=1;
 143   1      out8_15=0;
 144   1      }
 145          
 146          /************************* 将V值送输入键指示灯ILED0-LIED7输出****************/
 147          void steinled0_7(UBYTE  v)
 148          {
 149   1      inled0_7=0;
 150   1      P0=v;
 151   1      P0=v;
 152   1      P0=v;
 153   1      P0=v;
 154   1      inled0_7=1;
 155   1      inled0_7=0;
 156   1      }
 157          
 158          /************************* 将V值送输入键指示灯ILED8-LIED15输出***************/
 159          void steinled8_15(UBYTE  v)
 160          {
 161   1      inled8_15=0;
C51 COMPILER V7.20   USER                                                                  01/23/2006 13:26:51 PAGE 4   

 162   1      P0=v;
 163   1      P0=v;
 164   1      P0=v;
 165   1      P0=v;
 166   1      inled8_15=1;
 167   1      inled8_15=0;
 168   1      }
 169          
 170          /************************* 读PROFIBUS地址开关值****************************/
 171          UBYTE rd_address()
 172          {
 173   1      UBYTE data x;
 174   1      P0=0xff;
 175   1      inadd=0;
 176   1      x=P0;
 177   1      x=P0;
 178   1      x=P0;
 179   1      x=P0;
 180   1      inadd=1;
 181   1      return(x);
 182   1      }
 183          
 184          /************************* 扫描一次输入键I0-115,更新一次输入键当前值*******************************/
 185          /************************* 对输入键I0-I15有0-1者,当前值取反****************************************/
 186          void scanin()
 187          {
 188   1      
 189   1      P0=0xff;
 190   1      in0_7=0;
 191   1      PP0=P0;
 192   1      PP0=P0;
 193   1      PP0=P0;
 194   1      PP0=P0;
 195   1      if (key0_7!=PP0)
 196   1       {
 197   2        if ((PP00==1)&&(key0==0)) { di0=~di0;};
 198   2        if ((PP01==1)&&(key1==0)) { di1=~di1;};
 199   2        if ((PP02==1)&&(key2==0)) { di2=~di2;};
 200   2        if ((PP03==1)&&(key3==0)) { di3=~di3;};
 201   2        if ((PP04==1)&&(key4==0)) { di4=~di4;};
 202   2        if ((PP05==1)&&(key5==0)) { di5=~di5;};
 203   2        if ((PP06==1)&&(key6==0)) { di6=~di6;};
 204   2        if ((PP07==1)&&(key7==0)) { di7=~di7;};
 205   2        key0_7=PP0;
 206   2       };
 207   1      in0_7=1;
 208   1      inled0_7=0;
 209   1      P0=di0_7;
 210   1      P0=di0_7;
 211   1      P0=di0_7;
 212   1      P0=di0_7;
 213   1      inled0_7=1;
 214   1      inled0_7=0;
 215   1      
 216   1      P0=0xff; 
 217   1      in8_15=0;
 218   1      PP0=P0;
 219   1      PP0=P0;
 220   1      PP0=P0;
 221   1      PP0=P0;
 222   1      if (key8_15!=PP0)
 223   1       {
C51 COMPILER V7.20   USER                                                                  01/23/2006 13:26:51 PAGE 5   

 224   2        if ((PP00==1)&&(key8==0)) { di8=~di8;};
 225   2        if ((PP01==1)&&(key9==0)) { di9=~di9;};
 226   2        if ((PP02==1)&&(key10==0)) { di10=~di10;};

⌨️ 快捷键说明

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