资源简介
P89LPC932硬件I2C软件包,此软件包由C语言编写,是以查询方式完成各种总线操作的,在使用前应对总线进行检查,并使用看门狗,以防等待总线而造成死机。

代码片段和文件信息
/*******************************************************************
* P89LPC932硬件I2C软件包(主)
* 1 使用I2C总线软件包时P1.2,P1.3切勿写为0,并要设置为开漏输出。
* 2 总线定义为P1.2=SCL,P1.3=SDA,需外接上拉电阻2-10k。
* 3 相应寄存器:
* 地址寄存器 I2ADR 用于存放自身从地址(从方式时才有用)
* 数据寄存器 I2DAT 接收/发送数据用
* 控制寄存器 I2CON 用于硬件I2C的设置、使能、启动、结束,
* 应答控制,中断标志等。
* 状态寄存器 I2STAT 指示I2C总线的操作状态码,高5位有效,
* 若I2C中断志置位,可查询此寄存器判断
* 总线情况。
* SCL占空比寄存器 I2SCLH、I2SCLL 设置SCL的频率发生。
*
* 此软件包是以查询方式完成各种总线操作的,在使用前应对总线进行检查,并
* 使用看门狗,以防等待总线而造成死机。
* 文件名:HI2C_C51.C
* 更新时间:2002.11.05
*******************************************************************/
/*******************************************************************
*修订说明:
*1.增加无子地址发送多字节数据函数 ISendStrExt
*2.增加无子地址读取多字节数据函数 IRcvStrExt
*
* 2004.12.25
*******************************************************************/
#include “hi2c_c51.h“
/* 定义LPC932的I2C相关寄存器的定义 */
sfr I2ADR = 0xDB;
sfr I2DAT = 0xDA;
sfr I2CON = 0xD8;
sfr I2STAT = 0xD9;
sfr I2SCLH = 0xDD;
sfr I2SCLL = 0xDC;
sbit STA = I2CON^5;
sbit SI = I2CON^3;
#define uchar unsigned char
#define GENERATE_STOP 0x54 /* 置位 STO 复位 STA 、 SI */
#define RELEASE_BUS_ACK 0x44 /* 复位 STOSTASI 并置位 AA (ack) */
#define RELEASE_BUS_NOACK 0x40 /* 复位 STOSTASI 并置位 AA (noack) */
#define RELEASE_BUS_STA 0x64 /* 起动总线/重新起动总线 置位 STA */
/*******************************************************************
* 申请总线
* 功能:进行I2C总线的初始化--包括时钟选择,I2C使能,发送起始信号等等。
* I2EN为1,设置为主机;CRSEL位为0,使用内部SCL发生器。
*******************************************************************/
void GetBus()
{ I2SCLH = 15; /* 设置SCL高电平的PCLK周期数 */
I2SCLL = 15; /* 设置SCL低电平的PCLK周期数,6MHz时为100Kbit/S */
/* 申请成为主机,起动总线。使用内部SCL发生器,I2EN和AA置位。 */
I2CON = RELEASE_BUS_STA;
while( SI==0 ); /* 等待起始位的发送 */
}
/*******************************************************************
* 发送数据函数
* 功能:用于向总线发送数据
* 入口参数:ACC 待发送的数据
*******************************************************************/
void SendByte(uchar c)
{ I2DAT = c;
I2CON = RELEASE_BUS_ACK; /* 清除SI位等等 */
while( SI==0 ); /* 等待数据的发送 */
}
/*******************************************************************
* 向无子地址器件发送字节数据函数
* 功能:从启动总线到发送地址,数据,结束总线的全过程。
* 入口参数:sla 从器件地址
* c 待发送的数据
* 出口参数:返回1表示操作成功,否则操作有误。
********************************************************************/
bit ISendByte(uchar sla uchar c)
{ GetBus(); /* 启动总线 */
SendByte(sla); /* 发送器件地址,并接收应答位 */
if( I2STAT!=0X18 ) /* 无从机应答则退出操作 */
{ I2CON = GENERATE_STOP;
return(0);
}
SendByte(c);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3858 2004-12-27 08:37 HI2C_C51.h
文件 9233 2010-03-31 15:19 HI2C_C51.c
----------- --------- ---------- ----- ----
13091 2
- 上一篇:热电偶查表
- 下一篇:C语言编写的空间桁架计算程序
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论