📄 dio.lst
字号:
C51 COMPILER V7.20 DIO 01/31/2007 10:20:44 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DIO
OBJECT MODULE PLACED IN DIO.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe DIO.c DB OE
line level source
1 /****************************************************************************
2 **
3 ** 文件名: DIO.c
4 ** 功能: C8051Fxxx在LZK中的DI、DO应用;
5 ** 创建时间:2005.08.05
6 ** 作者: 李立学
7 ** 版权申明:可以拷贝,可以修改,但必须保留修改时间和作者信息
8
9
10 ** 修改说明:2006.09.30 沈卢斌
11 修改了
12
13 ** 修改说明:2006.09.30 薛佳元
14 修改了
15
16 **
17 ****************************************************************************/
18
19 #include "LZK.H"
20
21 /****************************************************************************
22 ** 函数名称: DIO_CS()
23 ** 功能描述: DIO地址片选
24 ** 入口参数: 无
25 ** 出口参数: 无
26 ** 全局变量: 无
27 ** 调用模块: 无
28 ** 说明:
29 ****************************************************************************/
30 void DIO_CS(void)
31 {
32 1 uint8 data ucTMP;
33 1
34 1 /*******************************
35 1 *** Switch to ExSRAM ***
36 1 *******************************/
37 1 SFRPAGE = 0x00;
38 1 EMI0CF = 0x25; // 0010_0101, ALE: 2SYSCLK. SRAM Split Mode.
39 1 EMI0TC = 0x49; // 01_0010_01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
40 1
41 1 SFRPAGE = 0x0f;
42 1 ucTMP = ucP4DATA & 0xC0 | 16; // ExSRAM Page 16;
43 1 P4 = ucTMP; // ExSRAM Page Setting.
44 1 SFRPAGE = 0x00;
45 1 }
46
47
48 /****************************************************************************
49 ** 函数名称: RelayOutPut_Init()
50 ** 功能描述: 继电器输出初始化.
51 ** 入口参数: 无
52 ** 出口参数: 无
53 ** 全局变量: 无
54 ** 调用模块: 无
55 ** 说明:
C51 COMPILER V7.20 DIO 01/31/2007 10:20:44 PAGE 2
56 ****************************************************************************/
57 void RelayOutPut_Init(void)
58 {
59 1 DIO_CS(); // ExSRAM Page 16.
60 1
61 1 RelayOutDATA = 0xff; // Relay Reset to 0x00.
62 1 RelayOutOE = 0xff; // Relay Output Enabled.
63 1 ExInSRAM_Select(0); //
64 1 }
65
66
67 /****************************************************************************
68 ** 函数名称: RelayOutPut()
69 ** 功能描述: 继电器控制输出
70 ** 入口参数: RelayOutCMD,RelayOutCMD^n = 1对应位的继电器动作,否则为默认值;
71 ** 出口参数: 无
72 ** 全局变量: RelayOUT
73 ** 调用模块: 无
74 ** 说明:
75 ****************************************************************************/
76 void RelayOutPut(uint8 ucDATA)
77 {
78 1 DIO_CS(); // ExSRAM Page 16.
79 1
80 1 RelayOutDATA = ucDATA; //
81 1 ExInSRAM_Select(0); //
82 1 }
83
84
85 /****************************************************************************
86 ** 函数名称: RelayInPut()
87 ** 功能描述: 外部开关量I/O输入,遥信
88 ** 入口参数: 无;
89 ** 出口参数: RelayIN,外部开关量
90 ** 全局变量: RelayIN
91 ** 调用模块: 无
92 ** 说明:
93 ****************************************************************************/
94 uint8 RelayInPut(void)
95 {
96 1 uint8 data ucTMP;
97 1
98 1 SFRPAGE = 0x00;
99 1 EMI0CF = 0x25; // 0010_0101, ALE: 2SYSCLK. SRAM Split Mode.
100 1 EMI0TC = 0x49; // 01_0010_01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
101 1
102 1
103 1 SFRPAGE = 0x0f; // P4,P7 SFR PAGE.
104 1 P4 = 0xd0; // 1___1___0___10000;
105 1 // nWR_nRD_ALE_A[20..A16].
106 1 ucTMP = RelayInDATA; // RelayInDATA Valid.
107 1 // A[4..0] be Saved.
108 1 P7MDOUT = 0x00; // P7口设置为输入方式.
109 1 P4 = 0xd0 & 0xbf; // nRD ='0';
110 1 P4 = 0xd0 & 0xbf; // nRD ='0';
111 1 P4 = 0xd0 & 0xbf; // nRD ='0';
112 1 P4 = 0xd0 & 0xbf; // nRD ='0';
113 1
114 1 ucTMP = P7;
115 1
116 1 P4 = 0xd0; // nRD ='1';
117 1 P7MDOUT = 0xff; // P7口设置为推挽方式.
C51 COMPILER V7.20 DIO 01/31/2007 10:20:44 PAGE 3
118 1
119 1 ExInSRAM_Select(0); //
120 1
121 1 return ucTMP;
122 1 }
123
124
125 /****************************************************************************
126 ** 函数名称: PulseOutPut()
127 ** 功能描述: 可控硅触发变压器输出
128 ** 入口参数: PulseOutCMD,PulseOutCMD^n = 1对应位的脉冲触发变压器输出;
129 ** 出口参数: 无
130 ** 全局变量: PulseOUT
131 ** 调用模块: 无
132 ** 说明:
133 ****************************************************************************/
134 void PulseOutPut(uint8 ucDATA)
135 {
136 1 SFRPAGE = 0x0f; // P5 SFR PAGE.
137 1 ucP5DATA = ucDATA & 0x7f;
138 1 P5 = ucP5DATA;
139 1 SFRPAGE = 0x00;
140 1 }
141
142 /****************************************************************************
143 ** 函数名称: RelayOut_SelfTest()
144 ** 功能描述: 继电器输出自检测试
145 ** 入口参数: 无
146 ** 出口参数: 无
147 ** 全局变量: 无
148 ** 调用模块: 无
149 ** 说明:
150 ****************************************************************************/
151 void RelayOut_SelfTest(void)
152 {
153 1 uint8 idata i, ucTMP;
154 1
155 1 for(i=0; i<8; i++)
156 1 {
157 2 ucTMP = 0x01 << i; // 0000 0001.
158 2 ucTMP = ~ucTMP; // 1111 1110.
159 2 RelayOutPut(ucTMP);
160 2 D1S(1);
161 2 }
162 1
163 1 RelayOutPut(0xff); // Disabled all Relays.
164 1 }
165
166 /****************************************************************************
167 ** 函数名称: PulseOut_SelfTest()
168 ** 功能描述: 继电器输出自检测试
169 ** 入口参数: 无
170 ** 出口参数: 无
171 ** 全局变量: 无
172 ** 调用模块: 无
173 ** 说明:
174 ****************************************************************************/
175 void PulseOut_SelfTest(void)
176 {
177 1 uint8 xdata i, ucTMP;
178 1
179 1 for(i=0; i<7; i++)
C51 COMPILER V7.20 DIO 01/31/2007 10:20:44 PAGE 4
180 1 {
181 2 ucTMP = 0x01 << i; // 0000 0001.
182 2 ucTMP = ~ucTMP; // 1111 1110.
183 2 ucTMP = ucTMP & 0x7f; // 0111 1110.
184 2
185 2 PulseOutPut(ucTMP);
186 2 DmS(3);
187 2 }
188 1
189 1 PulseOutPut(0xff); // Disabled all PulseOUT.
190 1 }
191
192
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 225 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 2
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- 2
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -