I2C程序和流程图(2)
switch (I2CIV) {
case I2CIV_AL: {
//仲裁中断 break; }
case I2CIV_NACK: {
//NACK中断 break; }
case I2CIV_OA: {
//自己地址中断 break; }
case I2CIV_ARDY: {
//访问准备好中断 break; }
case I2CIV_RXRDY: {
//接收准备好中断
I2CBuffer[0]=I2CDRB; break; }
case I2CIV_TXRDY: {
//发送准备好中断
I2CDRB = I2CBuffer[tx_count]; tx_count = tx_count - 1; if (tx_count < 0) {
//禁止发送中断
I2CIE &= ~TXRDYIE; }
break;
} case I2CIV_GC: {
//一般调用中断 break; }
case I2CIV_STT: {
//起始条件中断 break; }
} }
void Init_IIC_Port(void) {
//初始化端口寄存器 与IIC口无关的PX口关闭以便于对编写系统板的综合程序. //P1DIR = 0xFF; //P2DIR = 0xFF; P3DIR = 0xF5; //P4DIR = 0xFF; P5DIR = 0x7F; //P6DIR = 0xFF; //P4OUT = 0X11; //P5OUT &= 0XF0;
P3SEL|=BIT1+BIT3; //在这里如果设置成 }
void Init_CLK(void) {
unsigned int i;
//将寄存器的内容清零 //XT2震荡器开启
//LFTX1工作在低频模式 //ACLK的分频因子为1 BCSCTL1 = 0X00; do
{// 清除OSCFault标志
IFG1 &= ~OFIFG; for (i = 0x20; i > 0; i--); }
while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1 //open XT2, LFTX2 选择低频率
BCSCTL1 &= ~(XT2OFF + XTS); //BCSCTL1=0X00 功能一样 //DCO Rsel=7(Freq=3200k/25摄氏度) BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; BCSCTL1 |= 0x07;
//MCLK的时钟源为TX2CLK,分频因子为1 BCSCTL2 += SELM1;
//SMCLK的时钟源为TX2CLK,分频因子为1 BCSCTL2 += SELS; }
//对于系统时钟的选择关系到整个程序运行稳定性.
/************************************************************ *文件名:msp430f169i2c.c
*整体描述:MSP430F169单片机硬件IIC软件,字节方式,主方式 * IIC接口:P3.3=SCL,P3.1=SDA;(开漏输出)
* 相应寄存器:地址寄存器 I2COA 用于存放自身从地址(从方式时才有用) * 地址寄存器 I2CSA 用于存放外围的从机地址(主方式时才有用) * 控制寄存器 U0CTL 硬件I2C的设置、使能、模式等。 发送控制寄存器 I2CTCTL
* 数据控制寄存器 I2CDCTL 指示I2C总线的状态 *
* U0CTL -- RXDMAEN,TXDMAEN,I2C, XA, LISREN,SYNC,MST,I2CEN * 0 0 1 0 0 1 1 1 (0x17)
* I2CTCTL --I2CWORD,I2CRM,I2CSSEL1,I2XSSEL0, I2CTRX,I2CSTB, I2CSTP, I2CSTT * 0 1 1 0 * 0 * * *作者: jy *状态: 通过
************************************************************/ #include
#define WR24C512
#define LED1_1 (0x20) /* Port 3.5 Output -> LED1 */ #define LED1_0 (0xdf)
#define SDA_1 P3OUT |= BIT1 //串行数据线,SDA = 1 #define SDA_0 P3OUT &=~ BIT1 //SDA = 0
#define SCL_1 P3OUT |= BIT3 //串行时钟线,SCL = 1 #define SCL_0 P3OUT &=~ BIT3 //SCL = 0
#define SDADIR_IN P3DIR &=~ BIT1 //SDA,I/O口为输入 #define SDADIR_OUT P3DIR |= BIT1 //I/0口为输出 #define SDA_IN ((P3IN >> 1) & 0x01) //Read SDA
#define SCLDIR_IN P3DIR &=~ BIT3 //SCL,I/O口为输入 #define SCLDIR_OUT P3DIR |= BIT3 //I/0口为输出 #define SCL_IN ((P3IN >> 3) & 0x01) //Read SCL
#ifdef WR24C512
static int numi = 0; //Data Pointer #else
static int numj = 0; //Data Pointer #endif
#define I2CSLA 0x50
/*-------------------------------------------------------- --功能描述: 检查总线是否空闲 --子程序状况: 09-23调试通过
---------------------------------------------------------- --*/
void I2c_Idle_Check(void) {
while (I2CBUSY & I2CDCTL); // I2C ready? 在空闲状态:0,空闲;1:忙 }
void DelayTime10us(unsigned char n) {
unsigned char i;
while(n--) // 5 cycles
for(i=0;i<10;i++); // 8mhz 110:771 + 4 to while }
/*--------------------------------------------------------- --功能描述:发送数据:用于向总线发送数据 --子程序状况: 09-23调试通过
----------------------------------------------------------- --*/
void I2cBusSendByte(unsigned char c) {
while((I2CIFG & TXRDYIFG) != TXRDYIFG); // 检测发送准备 I2CDRB = c; // 写发送寄存器 }
/*------------------ MSP430 I2C 写数据 09-23调试通过---------------------*/ /*--------------------------------------------------------
--功能描述:申请总线:进行I2C总线的初始化-发送起始信号 --子程序状况: 09-23调试通过
---------------------------------------------------------- --*/
void I2C_Send(unsigned char ndatNum) {
// 注意:通讯结束,I2CMST 自动清零,再次通讯必须重新置位 P3OUT = 0x00; // clear P3 output register
P3SEL = 0x0A; // P3.1=SDA, P3.3=SCL,Select I2C pins, Setup I2C module U0CTL |= (I2C + SYNC); // select I2C mode;XA=0,7bit_addresing; U0CTL &= ~I2CEN; // i2c功能使能无效
// I2CTCTL = I2CRM + I2CSSEL_2; // x(x> …… 此处隐藏:2989字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [建筑文档]2018年公需课:专业技术人员创新能力与
- [建筑文档]2013年福建教师招考小学数学历年真题
- [建筑文档]高中信息技术课flash知识点总结 - 图文
- [建筑文档]电工实训 - 图文
- [建筑文档]最高院公告案例分析100篇(民商篇)
- [建筑文档]南开中学高2017级14-15学年(上)期末
- [建筑文档]五粮液集团战略分析
- [建筑文档]鲁教版(2012秋季版)九年级化学 酸碱
- [建筑文档]超星尔雅2017中国哲学概论自整理题库答
- [建筑文档]关于成为海口金盘饮料公司材料独家供货
- [建筑文档]LNG学习资料第一册 基础知识 - 图文
- [建筑文档]四年级品社下册《好大一个家》复习资料
- [建筑文档]现阶段领导权力腐败的特点及发展趋势
- [建筑文档]魏晋南北朝诗歌鉴赏—嵇康
- [建筑文档]坚持追求真爱是理智的行为 正方一辩稿
- [建筑文档]湘西州刑释解教人员帮教安置工作存在的
- [建筑文档]园林工程试题库及答案
- [建筑文档]计算机长期没有向WSUS报告状态
- [建筑文档]日语最新流行语
- [建筑文档]B62-016 景观进场交底专题会议
- 2018年中考语文课内外古诗词鉴赏专题复
- 高考试题研究心得体会
- C语言基础题及答案
- 电气控制及PLC习题及答案
- 都昌小学家长学校汇报材料
- GMAT作文模板正确使用方法
- 俄军办坦克大赛:中国99式有望与豹2A6
- 成本会计练习题
- 酒店餐饮业最流行的5S管理方法
- 2014-2015学年山东省菏泽市高二(下)
- 《黄鹤楼送孟浩然之广陵》教案、说课、
- 2013年结构化学自测题 有答案版
- 2011西安世界园艺博览会游览解说词(附
- 窗口文明单位示范单位创建活动总结
- 2018满分超星尔雅就业课后练习期末答案
- 韶山市城市总体规划-基础资料
- 苏教版第三单元知识点归纳
- 第4章 曲轴模态分析
- 加大查办案件力度的思考
- 武汉CPC导轨介绍




