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

📄 user.c

📁 Philips单片机P89C51RD和西门子Profibus工业总线的接口程序,硬件是鼎实公司的实验板,使用的鼎实公司的总线桥.
💻 C
📖 第 1 页 / 共 3 页
字号:

/*+--------------------------------------------------------------+
|文件名称: 实验板板串口通信程序—监测SE接口状态的工作模式        | 
|版    本: V1.1                                                  |
|制作单位: 北京鼎实创新科技公司                                  |
|版权许可:                                                      |
|网址:    www.c-profibus.com.cn                                |
|email:    tangjy@c-profibus.com.cm                            |
|日期:     2004/9	    		                         |
+----------------------------------------------------------------+*/

#include <d:\Keil\c51\INC\reg52.h>
#include <d:\Keil\c51\INC\stdio.h>
#define UBYTE unsigned char 
#define UWORD unsigned int 


/*==================================================================================================================*/
/*                       以下是输入键、指示灯等设备变量定义,用户可以越过阅读                                       */
/*------------------------------------------------------------------------------------------------------------------*/


sbit out0_7=P2^0;             /* 定义out0_7=P2.0=P16O0,输出指示灯Q0-Q7的输出控制,见实验板原理图U16           ------*/
sbit out8_15=P2^1;            /* 定义out8_15=P2.1=P17O1,输出指示灯Q8-Q15的输出控制,见实验板原理图U17         ------*/
sbit inled0_7=P2^2;           /* 定义inled0_7=P2.2=P18IO0,输入指示灯I0-I7的输出控制,见实验板原理图U18        ------*/
sbit inled8_15=P2^3;          /* 定义inled8_15=P2.3=P19IO1,输入指示灯I8-I15的输出控制,见实验板原理图U19      ------*/
sbit in0_7=P2^4;              /* 定义in0_7=P2^4=P2.4=P12I0,输入键I0-I7的读控制,见实验板原理图U12             ------*/
sbit in8_15=P2^5;             /* 定义in8_15=P2^5=P2.5=P13I1,输入键I8-I15的读控制,见实验板原理图U13           ------*/
sbit inadd=P2^6;              /* 定义inadd=P2^6=P2.6=P20AD,PROFIBUS地址输入AD0-AD7的读控制,见实验板原理图U20 ------*/

sbit REQ_IT=P1^7;             /* 定义REQ_IT=P1^7=P1.7=P17S_CTS,输入,连接OEM2-SE-REQ_IT,见实验板原理图CONNECT-16 ---*/
sbit S_RTS=P1^6;              /* 定义S_RTS=P1^6=P1.6=P17S_RTS,输入,连接OEM2-SE-S_RTS,见实验板原理图CONNECT-16   ---*/
sbit P15RES=P1^5;


/************** 定义:di0_7:字节型,是输入键I0-I7当前值;   **************************/
/************** 定义:di8_15:字节型,是输入键I8-I15当前值; **************************/

bdata UBYTE di0_7,di8_15;     /* di0_7:字节型,输入键I0-I7;di8_15:字节型,输入键I8-I15 --------*/
sbit di0=di0_7^0;             /* 定义di0=di0_7^0=输入键I0                            --------*/
sbit di1=di0_7^1;             /* 定义di1=di0_7^1=输入键I1                            --------*/
sbit di2=di0_7^2;             /* 定义di2=di0_7^2=输入键I2                            --------*/
sbit di3=di0_7^3;             /* 定义di3=di0_7^3=输入键I3                            --------*/
sbit di4=di0_7^4;             /* 定义di4=di0_7^4=输入键I4                            --------*/
sbit di5=di0_7^5;             /* 定义di5=di0_7^5=输入键I5                            --------*/
sbit di6=di0_7^6;             /* 定义di6=di0_7^6=输入键I6                            --------*/
sbit di7=di0_7^7;             /* 定义di7=di0_7^7=输入键I7                            --------*/
sbit di8=di8_15^0;            /* 定义di8=di8_15^0=输入键I8                           --------*/
sbit di9=di8_15^1;            /* 定义di9=di8_15^1=输入键I9                           --------*/
sbit di10=di8_15^2;           /* 定义di10=di8_15^2=输入键I10                         --------*/
sbit di11=di8_15^3;           /* 定义di11=di8_15^3=输入键I11                         --------*/
sbit di12=di8_15^4;           /* 定义di12=di8_15^4=输入键I12                         --------*/
sbit di13=di8_15^5;           /* 定义di13=di8_15^5=输入键I13                         --------*/
sbit di14=di8_15^6;           /* 定义di14=di8_15^6=输入键I14                         --------*/
sbit di15=di8_15^7;           /* 定义di15=di8_15^7=输入键I15                         --------*/


/************** 定义:key0_7:字节型,是输入键I0-I7扫描读入值;   **************************/
/************** 定义:key8_15:字节型,是输入键I8-I15扫描读入值; **************************/

bdata UBYTE key0_7,key8_15;
sbit key0=key0_7^0;           /* 定义key0=key0_7^0=输入键I0                          --------*/
sbit key1=key0_7^1;           /* 定义key1=key0_7^1=输入键I1                          --------*/
sbit key2=key0_7^2;           /* 定义key2=key0_7^2=输入键I2                          --------*/
sbit key3=key0_7^3;           /* 定义key3=key0_7^3=输入键I3                          --------*/
sbit key4=key0_7^4;           /* 定义key4=key0_7^4=输入键I4                          --------*/
sbit key5=key0_7^5;           /* 定义key5=key0_7^5=输入键I5                          --------*/
sbit key6=key0_7^6;           /* 定义key6=key0_7^6=输入键I6                          --------*/
sbit key7=key0_7^7;           /* 定义key7=key0_7^7=输入键I7                          --------*/
sbit key8=key8_15^0;          /* 定义key8=key8_15^0=输入键I8                         --------*/
sbit key9=key8_15^1;          /* 定义key9=key8_15^1=输入键I9                         --------*/
sbit key10=key8_15^2;         /* 定义key10=key8_15^2=输入键I10                       --------*/
sbit key11=key8_15^3;         /* 定义key11=key8_15^3=输入键I11                       --------*/
sbit key12=key8_15^4;         /* 定义key12=key8_15^4=输入键I12                       --------*/
sbit key13=key8_15^5;         /* 定义key13=key8_15^5=输入键I13                       --------*/
sbit key14=key8_15^6;         /* 定义key14=key8_15^6=输入键I14                       --------*/
sbit key15=key8_15^7;         /* 定义key15=key8_15^7=输入键I15                       --------*/  

/************** 定义:P00-P07对应P0口的P0.0-P0.7 **************************/
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;

/************** PP00-PP07是上面P00-P07的中间变量 **************************/
bdata UBYTE PP0;
sbit PP00=PP0^0;
sbit PP01=PP0^1;
sbit PP02=PP0^2;
sbit PP03=PP0^3;
sbit PP04=PP0^4;
sbit PP05=PP0^5;
sbit PP06=PP0^6;
sbit PP07=PP0^7;


/**** 定义:AB_status:字节型,报文类型及接口状态,见《PB-OEM2-SE产品手册》第四章、三、数据交换 *******/
bdata UBYTE AB_status;
sbit AB_sD0=AB_status^0;       /****  AB_sD0=AB_status^0:用户参数更新标记 ****/
sbit AB_sD7=AB_status^7;       /****  AB_sD7=AB_status^7:报文格式         ****/

/**** 定义:req_com:字节型,请求数据命令,见《PB-OEM2-SE产品手册》第四章、三、数据交换 *******/
bdata UBYTE req_com;
sbit req_comD0=req_com^0;      /****  req_comD0=req_com^0:请求数据/参数命令 ****/
sbit req_comD1=req_com^1;      /****  req_comD1=req_com^1:清参数命令        ****/


/*------------------------------------------------------------------------------------------------------------------*/
/*                       输入键、指示灯等设备变量定义完毕                                                           */
/*==================================================================================================================*/


/*==================================================================================================================*/
/*                       以下是有关输入键、指示灯控制子程序,用户了解功能即可                                       */
/*------------------------------------------------------------------------------------------------------------------*/


/************************* 将V值送指示灯Q0-Q7输出****************************/
void steout0_7(UBYTE  v)
{
out0_7=0;
P0=v;
P0=v;
P0=v;
P0=v;
out0_7=1;
out0_7=0;
}

/************************* 将V值送指示灯Q8-Q15输出***************************/
void steout8_15(UBYTE  v)
{
out8_15=0;
P0=v;
P0=v;
P0=v;
P0=v;
out8_15=1;
out8_15=0;
}

/************************* 将V值送输入键指示灯ILED0-LIED7输出****************/
void steinled0_7(UBYTE  v)
{
inled0_7=0;
P0=v;
P0=v;
P0=v;
P0=v;
inled0_7=1;
inled0_7=0;
}

/************************* 将V值送输入键指示灯ILED8-LIED15输出***************/
void steinled8_15(UBYTE  v)
{
inled8_15=0;
P0=v;
P0=v;
P0=v;
P0=v;
inled8_15=1;
inled8_15=0;
}

/************************* 读PROFIBUS地址开关值****************************/
UBYTE rd_address()
{
UBYTE data x;
P0=0xff;
inadd=0;
x=P0;
x=P0;
x=P0;
x=P0;
inadd=1;
return(x);
}

/************************* 扫描一次输入键I0-115,更新一次输入键当前值*******************************/
/************************* 对输入键I0-I15有0-1者,当前值取反****************************************/
void scanin()
{

P0=0xff;
in0_7=0;
PP0=P0;
PP0=P0;
PP0=P0;
PP0=P0;
if (key0_7!=PP0)
 {
  if ((PP00==1)&&(key0==0)) { di0=~di0;};
  if ((PP01==1)&&(key1==0)) { di1=~di1;};
  if ((PP02==1)&&(key2==0)) { di2=~di2;};
  if ((PP03==1)&&(key3==0)) { di3=~di3;};
  if ((PP04==1)&&(key4==0)) { di4=~di4;};
  if ((PP05==1)&&(key5==0)) { di5=~di5;};
  if ((PP06==1)&&(key6==0)) { di6=~di6;};
  if ((PP07==1)&&(key7==0)) { di7=~di7;};
  key0_7=PP0;
 };
in0_7=1;
inled0_7=0;
P0=di0_7;
P0=di0_7;
P0=di0_7;
P0=di0_7;
inled0_7=1;
inled0_7=0;

P0=0xff; 
in8_15=0;
PP0=P0;
PP0=P0;
PP0=P0;
PP0=P0;
if (key8_15!=PP0)
 {
  if ((PP00==1)&&(key8==0)) { di8=~di8;};
  if ((PP01==1)&&(key9==0)) { di9=~di9;};
  if ((PP02==1)&&(key10==0)) { di10=~di10;};
  if ((PP03==1)&&(key11==0)) { di11=~di11;};
  if ((PP04==1)&&(key12==0)) { di12=~di12;};
  if ((PP05==1)&&(key13==0)) { di13=~di13;};
  if ((PP06==1)&&(key14==0)) { di14=~di14;};
  if ((PP07==1)&&(key15==0)) { di15=~di15;};
  key8_15=PP0;
 };
in8_15=1;
inled8_15=0;
P0=di8_15;
P0=di8_15;

⌨️ 快捷键说明

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