📄 iic.lst
字号:
147 1 SDA = 0;
148 1 NOP();
149 1 SCL = 1;
150 1 NOP();
151 1 SCL = 0;
152 1 }
153 /*******************************************************************************
154 *** 函 数 名: static void IIC_SendNoAck(void)
155 *** 功能描述: 发送非应答信号;
156 *** 全局变量: NO !
157 *** 输 入: NO !
158 *** 输 出: NO !
159 *** 创 建 人:huangtiexiong 日期:2006-11-28
160 *** 修 改 人: 日期:2006-11-28
161 *** 函数说明: 操作完成后保证SCL为0;
162 /******************************************************************************/
163 static void IIC_SendNoAck(void)
164 {
165 1 SDA = 1;
166 1 NOP();
167 1 SCL = 1;
168 1 NOP();
169 1 SCL = 0;
170 1 }
171 /*******************************************************************************
172 *** 函 数 名: static void IIC_Stop(void)
173 *** 功能描述: 终止IIC传输;
174 *** 全局变量: NO !
175 *** 输 入: NO !
176 *** 输 出: NO !
177 *** 创 建 人:huangtiexiong 日期:2006-11-28
178 *** 修 改 人: 日期:2006-11-28
179 *** 函数说明: 操作完成后保证SCL为1,同时打开中断;
C51 COMPILER V7.50 IIC 12/01/2007 19:19:59 PAGE 4
180 /******************************************************************************/
181 static void IIC_Stop(void)
182 {
183 1 SDA = 0; //to stop IIC;
184 1 SCL = 0;
185 1 NOP();
186 1 SCL = 1;
187 1 NOP();
188 1 SDA = 1; //IIC Stoped !! 结束IIC之后传输线全部置1;
189 1 EA = 1; //Set EA.
190 1 }
191 /*******************************************************************************
192 *** 函 数 名: extern void PCF8583_ReadDat(int8u addrInter,int8u num,int8u *buff)
193 *** 功能描述: 对PCF8583读;
194 *** 全局变量: NO !
195 *** 输 入: addrInter:内部寻址;num:数据长度;buff:数据缓存;
196 *** 输 出: buff数据缓存;
197 *** 创 建 人:huangtiexiong 日期:2006-11-28
198 *** 修 改 人: 日期:2006-11-28
199 *** 函数说明: IIC Start至Stop间传输的字节数不限;
200 PCF8583内部寄存器地址附自增功能;
201 /******************************************************************************/
202 extern void PCF8583_ReadDat(int8u addrInter,int8u num,int8u *buff)
203 {
204 1 int8u i;
205 1 IIC_Start(); //启动IIC Bus;
206 1 IIC_TxByte(0xa0); //PCF8583设备寻址;命令:写;
207 1 IIC_WaitAck(); //等待Ack信号;
208 1 IIC_TxByte(addrInter); //发送内部寄存器地址;
209 1 IIC_WaitAck(); //等待Ack信号;
210 1
211 1 IIC_Start(); //参考PCF读Read Mode时序;
212 1 IIC_TxByte(0xa1); //PCF8583设备寻址,命令:读;
213 1 IIC_WaitAck();
214 1
215 1 for(i=0;i<num-1;i++)
216 1 {
217 2 buff[i] = IIC_RxByte(); //读一个字节;
218 2 IIC_SendAck(); //发送应答信号;
219 2 }
220 1 buff[num-1] = IIC_RxByte();
221 1 IIC_SendNoAck(); //最后一个字节发送非应答信号;
222 1 IIC_Stop(); //终止本次传输,IIC Bus空闲;
223 1 }
224 /*******************************************************************************
225 *** 函 数 名: extern void PCF8583_WriteDat(int8u addrInter,int8u num,int8u *buff)
226 *** 功能描述: 对PCF8583写;
227 *** 全局变量: NO !
228 *** 输 入: addrInter:内部寻址;num:数据长度;buff:数据缓存;
229 *** 输 出: NO !
230 *** 创 建 人:huangtiexiong 日期:2006-11-28
231 *** 修 改 人: 日期:2006-11-28
232 *** 函数说明: IIC Start至Stop间传输的字节数不限;
233 PCF8583内部寄存器地址附自增功能;
234 /******************************************************************************/
235 extern void PCF8583_WriteDat(int8u addrInter,int8u num,int8u *buff)
236 {
237 1 int8u i;
238 1
239 1 IIC_Start();
240 1 IIC_TxByte(0xa0);
241 1 IIC_WaitAck();
C51 COMPILER V7.50 IIC 12/01/2007 19:19:59 PAGE 5
242 1
243 1 IIC_TxByte(addrInter);
244 1 IIC_WaitAck();
245 1
246 1 for(i=0;i<num;i++)
247 1 {
248 2 IIC_TxByte(buff[i]);
249 2 IIC_WaitAck();
250 2 }
251 1
252 1 IIC_Stop();
253 1 }
254 /*******************************************************************************
255 *** 函 数 名: extern void PCF8583_WriteByte(int8u addrInter,int8u val)
256 *** 功能描述: 对PCF8583写一个字节;
257 *** 全局变量: NO !
258 *** 输 入: addrInter:内部寻址;val:待写字节数据;
259 *** 输 出: NO !
260 *** 创 建 人:huangtiexiong 日期:2006-11-28
261 *** 修 改 人: 日期:2006-11-28
262 *** 函数说明: 参照PCF8583读时序;
263 /******************************************************************************/
264 extern void PCF8583_WriteByte(int8u addrInter,int8u val)
265 {
266 1 IIC_Start();
267 1
268 1 IIC_TxByte(0xa0);
269 1 IIC_WaitAck();
270 1
271 1 IIC_TxByte(addrInter);
272 1 IIC_WaitAck();
273 1 IIC_TxByte(val);
274 1 IIC_WaitAck();
275 1
276 1 IIC_Stop();
277 1 }
278
279 extern void PCF8583_Init(void)
280 {
281 1 PCF8583_WriteByte(0x00,0x00); //Control reg. Alarm disabled。
282 1 }
283
284 /*******************************************************************************
285 **** End Of File
286 *******************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 332 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
IDATA SIZE = ---- ----
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 + -