IO.h
2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#ifndef _IO_H //条件编译,名字有点不适合下面内容,下面是控制器硬件口中的IO口申明宏,便于对照
#define _IO_H
#include "sys.h"//下面有些申明、宏的具体引用解释来源处,其内部包含有其他更底层的头文件,
/*
头文件是宏+函数申请
宏:常量+变量对应具体函数(位操作指令对应地址操作)+
函数:函数申明,无函数实体,在C文件中进行函数实体化
此处宏定义变量不占用内存空间,可以理解为重命名,被重命名的对象就是一个变量具体地址(具体到哪个寄存器的哪位)
*/
//手持器输入
#define REMOTE1 PFin(0)//起始地址GPIOF_IDR_ADR寄存器(GPIOF_ADR+16)+偏移地址位
#define REMOTE2 PFin(1)
#define REMOTE3 PFin(2)
#define REMOTE4 PFin(3)
#define REMOTE5 PFin(4)
#define REMOTE6 PFin(5)
#define REMOTE7 PFin(6)
#define REMOTE8 PFin(7)
#define REMOTE9 PFin(8)
#define REMOTE10 PFin(9)
#define REMOTE11 PFin(10)
//4路报错输入
#define ERR1 PEin(2)
#define ERR2 PEin(3)
#define ERR3 PEin(4)
#define ERR4 PEin(5)
//3路LED输出
#define LED1 PDout(12)
#define LED2 PDout(13)
#define LED3 PDout(14)
//4路防撞输入
#define KNOCK1 PDin(11)
#define KNOCK2 PDin(10)
#define KNOCK3 PDin(9)
#define KNOCK4 PDin(8)
//4路防撞输出
#define CRL_sensor1 PFout(11)//起始地址GPIOF_ODR_ADR寄存器(GPIOF_ADR+20)+偏移地址位
#define CRL_sensor2 PFout(12)
#define CRL_sensor3 PFout(13)
#define CRL_sensor4 PFout(14)
//3路继电器控制输出
#define CRL_RELAY1 PBout(9)
#define CRL_RELAY2 PEout(0)
#define CRL_RELAY3 PEout(1)
//4路限位输入
#define Limit1 PBin(8)
#define Limit2 PBin(7)
#define Limit3 PAin(3)
#define Limit4 PAin(0)
//3路3.3v开关输入
#define KEY1 PFin(15)
#define KEY2 PGin(0)
#define KEY3 PGin(1)
//18路24V输入
#define STANDBY1 PDin(15)
#define STANDBY2 PGin(2)
#define STANDBY3 PGin(3)
#define STANDBY4 PGin(4)
#define STANDBY5 PGin(5)
#define STANDBY6 PGin(6)
#define STANDBY7 PGin(7)
#define STANDBY8 PGin(8)
#define STANDBY9 PAin(15)
#define STANDBY10 PGin(15)
#define STANDBY11 PBin(3)
#define STANDBY12 PBin(4)
#define STANDBY13 PBin(5)
#define STANDBY14 PBin(6)
#define STANDBY15 PCin(0)
#define STANDBY16 PCin(2)
#define STANDBY17 PCin(3)
#define STANDBY18 PAin(6)
//8路24V输出
#define OUT1 PCout(9)
#define OUT2 PCout(10)
#define OUT3 PCout(11)
#define OUT4 PDout(7)
#define OUT5 PDout(4)
#define OUT6 PGout(9)
#define OUT7 PGout(10)
#define OUT8 PGout(12)
#define SSI_DIR PEout(15)//方向
#define SSI_CLR PEout(14)//清零
#define LED0 PEout(6)
//此写法是外部有对应同名变量,则不用再申请地址空间,定义的这些变量目的是将外部采集的IO信息整合成一个整体数据
extern u16 In_1_W;
extern u16 In_2_W;
extern u16 In_3_W;
extern u16 Out_1_W;
extern u16 Out_2_W;
//下面内容是函数申明,其实体或者说实例在对应的.c程序文件中
void In_D_Init(void);
void Out_D_Init(void);
void In_D(void);
void Out_D(void);
void VaIndexW_W(u16* VA,u8 Index,u8 TF);//置位函数
u8 VaIndexW_R(u16* VA,u8 Index);//读取某位函数
#endif