msp430f149的24c02标准C语言程序.docx

上传人:b****2 文档编号:1991085 上传时间:2023-05-02 格式:DOCX 页数:27 大小:197.92KB
下载 相关 举报
msp430f149的24c02标准C语言程序.docx_第1页
第1页 / 共27页
msp430f149的24c02标准C语言程序.docx_第2页
第2页 / 共27页
msp430f149的24c02标准C语言程序.docx_第3页
第3页 / 共27页
msp430f149的24c02标准C语言程序.docx_第4页
第4页 / 共27页
msp430f149的24c02标准C语言程序.docx_第5页
第5页 / 共27页
msp430f149的24c02标准C语言程序.docx_第6页
第6页 / 共27页
msp430f149的24c02标准C语言程序.docx_第7页
第7页 / 共27页
msp430f149的24c02标准C语言程序.docx_第8页
第8页 / 共27页
msp430f149的24c02标准C语言程序.docx_第9页
第9页 / 共27页
msp430f149的24c02标准C语言程序.docx_第10页
第10页 / 共27页
msp430f149的24c02标准C语言程序.docx_第11页
第11页 / 共27页
msp430f149的24c02标准C语言程序.docx_第12页
第12页 / 共27页
msp430f149的24c02标准C语言程序.docx_第13页
第13页 / 共27页
msp430f149的24c02标准C语言程序.docx_第14页
第14页 / 共27页
msp430f149的24c02标准C语言程序.docx_第15页
第15页 / 共27页
msp430f149的24c02标准C语言程序.docx_第16页
第16页 / 共27页
msp430f149的24c02标准C语言程序.docx_第17页
第17页 / 共27页
msp430f149的24c02标准C语言程序.docx_第18页
第18页 / 共27页
msp430f149的24c02标准C语言程序.docx_第19页
第19页 / 共27页
msp430f149的24c02标准C语言程序.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

msp430f149的24c02标准C语言程序.docx

《msp430f149的24c02标准C语言程序.docx》由会员分享,可在线阅读,更多相关《msp430f149的24c02标准C语言程序.docx(27页珍藏版)》请在冰点文库上搜索。

msp430f149的24c02标准C语言程序.docx

msp430f149的24c02标准C语言程序

分享到

∙一键分享

∙QQ空间

∙新浪微博

∙XX搜藏

∙人人网

∙腾讯微博

∙XX相册

∙开心网

∙腾讯朋友

∙XX贴吧

∙豆瓣网

∙搜狐微博

∙XX新首页

∙QQ好友

∙和讯微博

∙更多...

XX分享

51单片机,msp430,avr单片机,单片机开发板

单片机教程网()是专业提供各种单片机教程、资料、程序,为初学者打造一个良好的学习交流的平台!

窗体顶端

msp430f149的24c02标准C语言程序

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

#defineSCL_HP3OUT|=BIT3

#defineSCL_LP3OUT&=~BIT3

#defineSDA_HP3OUT|=BIT1

#defineSDA_LP3OUT&=~BIT1

#defineSDA_inP3DIR&=~BIT1//SDA改成输入模式

#defineSDA_outP3DIR|=BIT1//SDA变回输出模式

#defineSDA_valP3IN&BIT1//SDA的位值

#defineTRUE1

#defineFALSE0

#definedeviceaddress0xa0//AT24C02的设备地址/********************************************/

/*******************************************

函数名称:

delay

功能:

延时约15us的时间

参数:

返回值:

********************************************/

voiddelay(void)

{

uchari;

for(i=0;i15;i++)

_NOP();

}

/*******************************************

函数名称:

start

功能:

完成IIC的起始条件操作

参数:

返回值:

********************************************/

voidstart(void)

{

SCL_H;

SDA_H;

delay();

SDA_L;

delay();

SCL_L;

delay();

}

/*******************************************

函数名称:

stop

功能:

完成IIC的终止条件操作

参数:

返回值:

********************************************/

voidstop(void){

SDA_L;

delay();

SCL_H;

delay();

SDA_H;

delay();

}

/*******************************************

函数名称:

mack

功能:

完成IIC的主机应答操作

参数:

返回值:

********************************************/

voidmack(void)

{

SDA_L;

_NOP();_NOP();

SCL_H;

delay();

SCL_L;

_NOP();_NOP();

SDA_H;

delay();

}

/*******************************************

函数名称:

mnack

功能:

完成IIC的主机无应答操作

参数:

返回值:

********************************************/

voidmnack(void)

{

SDA_H;

_NOP();_NOP();

SCL_H;

delay();

SCL_L;

_NOP();_NOP();

SDA_L;

delay();

}

/**********检查应答信号函数******************/

/*如果返回值为1则证明有应答信号,反之没有*/

/*******************************************

函数名称:

check

功能:

检查从机的应答操作

参数:

返回值:

从机是否有应答:

1--有,0--无

********************************************/

ucharcheck(void)

{

ucharslaveack;

SDA_H;

_NOP();_NOP();

SCL_H;

_NOP();_NOP();

SDA_in;

_NOP();_NOP();

slaveack=SDA_val;//读入SDA数值

SCL_L;

delay();

SDA_out;

if(slaveack)returnFALSE;

elsereturnTRUE;

}

/*******************************************

函数名称:

write1

功能:

向IIC总线发送一个1

参数:

返回值:

********************************************/

voidwrite1(void)

{

SDA_H;

delay();

SCL_H;

delay();

SCL_L;

delay();

}

/*******************************************

函数名称:

write0

功能:

向IIC总线发送一个0

参数:

返回值:

********************************************/

voidwrite0(void)

{

SDA_L;

delay();

SCL_H;

delay();

SCL_L;

delay();

}

/*******************************************

函数名称:

write1byte

功能:

向IIC总线发送一个字节的数据

参数:

wdata--发送的数据

返回值:

********************************************/

voidwrite1byte(ucharwdata)

{

uchari;

for(i=8;i>0;i--)

{

if(wdata&0x80)write1();

elsewrite0();

wdata<=1;

}

SDA_H;

_NOP();

}

/*******************************************

函数名称:

writeNbyte

功能:

向IIC总线发送N个字节的数据

参数:

outbuffer--指向发送数据存放首地址

的指针

n--数据的个数

返回值:

发送是否成功的标志:

1--成功,0--失败

********************************************/

ucharwriteNbyte(uchar*outbuffer,ucharn)

{

uchari;

for(i=0;in;i++)

{

write1byte(*outbuffer);

if(check())

{

outbuffer++;

}

else

{

stop();

returnFALSE;

}

}

stop();

returnTRUE;

}

/*******************************************

函数名称:

read1byte

功能:

从IIC总线读取一个字节

参数:

返回值:

读取的数据

********************************************/

ucharread1byte(void)

{

ucharrdata=0x00,i;

ucharflag;

for(i=0;i8;i++)

{

SDA_H;

delay();

SCL_H;

SDA_in;

delay();

flag=SDA_val;

rdata<=1;

if(flag)rdata|=0x01;

SDA_out;

SCL_L;

delay();

}

returnrdata;

}

/*******************************************

函数名称:

readNbyte

功能:

从IIC总线读取N个字节的数据

参数:

inbuffer--读取后数据存放的首地址

n--数据的个数

返回值:

********************************************/

voidreadNbyte(uchar*inbuffer,ucharn)

{

uchari;

for(i=0;in;i++)

{

inbuffer[i]=read1byte();

if(i(n-1))mack();

elsemnack();

}

stop();

}

/*******************************************

函数名称:

delay_10ms

功能:

延时约6ms,等待EEPROM完成内部写入

参数:

返回值:

********************************************/

voiddelay_10ms(void)

{

uinti=1000;

while(i--);

}

/*******************************************

函数名称:

Write_1Byte

功能:

向EEPROM中写入1个字节的数据

参数:

Wdata--写入的数据

dataaddress--数据的写入地址

返回值:

写入结果:

1--成功,0--失败

********************************************/

ucharWrite_1Byte(ucharwdata,uchardataaddress)

{

start();

write1byte(deviceaddress);

if(check())

write1byte(dataaddress);

else

return0;

if(check())

write1byte(wdata);

else

return0;

if(check())stop();

elsereturn0;

delay_10ms();//等待EEPROM完成内部写入

return1;

}

/*******************************************

函数名称:

Write_NByte

功能:

向EEPROM中写入N个字节的数据

参数:

outbuf--指向写入数据存放首地址的指针

n--数据个数,最大不能超过8,由页地址

决定其最大长度

dataaddress--数据写入的首地址

返回值:

写入结果:

1--成功,0--失败

********************************************/

ucharWrite_NByte(uchar*outbuf,ucharn,uchardataaddress)

{

ucharflag;

start();

write1byte(deviceaddress);//写入器件地址

if(check()==1)

write1byte(dataaddress);//写入数据字地址

else

return0;

if(check())

flag=writeNbyte(outbuf,n);

else

return0;

delay_10ms();//等待EEPROM完成内部写入

if(flag)return1;

elsereturn0;

}

/*******************************************

函数名称:

Read_1Byte_currentaddress

功能:

从EEPROM的当前地址读取1个字节的数据

参数:

返回值:

读取的数据

********************************************/

ucharRead_1Byte_currentaddress(void)

{

uchartemp;

start();

write1byte((deviceaddress|0x01));

if(check())

temp=read1byte();

else

return0;

mnack();

stop();

returntemp;

}

/*******************************************

函数名称:

Read_NByte_currentaddress

功能:

从EEPROM的当前地址读取N个字节的数据

参数:

readbuf--指向保存数据地址的指针

n--读取数据的个数

返回值:

读取结果:

1--成功,0--失败

********************************************/

ucharRead_NByte_currentaddress(uchar*readbuf,ucharn)

{

start();

write1byte((deviceaddress|0x01));

if(check())

readNbyte(readbuf,n);

else

return0;

return1;

}

/*******************************************

函数名称:

Read_1Byte_Randomaddress

功能:

从EEPROM的指定地址读取1个字节的数据

参数:

dataaddress--数据读取的地址

返回值:

读取的数据

********************************************/

ucharRead_1Byte_Randomaddress(uchardataaddress)

{

uchartemp;

start();

write1byte(deviceaddress);

if(check())

write1byte(dataaddress);

else

return0;

if(check())

{

start();

write1byte((deviceaddress|0x01));

}

else

return0;

if(check())

temp=read1byte();

else

return0;

mnack();

stop();

returntemp;

}

/*******************************************

函数名称:

Read_NByte_Randomaddress

功能:

从EEPROM的指定地址读取N个字节的数据

参数:

readbuf--指向保存数据地址的指针

n--读取数据的个数

dataaddress--数据读取的首地址

返回值:

读取结果:

1--成功,0--失败

********************************************/

ucharRead_NByte_Randomaddress(uchar*readbuf,ucharn,uchardataaddress)

{

start();

write1byte(deviceaddress);

if(check())

write1byte(dataaddress);

else

return0;

if(check())

{

start();

write1byte(deviceaddress|0x01);

}

else

return0;

if(check())

readNbyte(readbuf,n);

else

return0;

return1;

}

本例程是基于msp430f149单片机的24C02的程序,主要让我们熟悉的掌握IIC协议的操作,虽然没有写主函数进行读写操作,但是这模块化非常实用,无论是扩展成24C16还是其它I2C对新手朋友有非常好的参考价值。

分享到:

QQ空间新浪微博腾讯微博人人网0

本文标签:

24C02msp430

文章链接:

(转载时请注明本文出处及文章链接)

上一篇:

avr单片机的数码管显示按键的键值

下一篇:

51单片机的PS2键盘LCD1602显示C语言程序

相关文章:

∙+msp430f449的485的主机通讯协议

∙+msp430f149的P1.0口控制按键加数码管显示键值

∙+avr单片机的Eeprom的c语言程序(IIC协议)

∙+MPS430F149单片机交替闪烁的LED灯

∙+MPS430F149单片机之的数码管显示0~60秒

∙+MSP430单片机的串口通信程序

∙+msp430单片机之对自带内部FLASH读写操作

∙+msp430单片机的比较器的C语言程序

∙+msp430单片机看门狗定时器的使用

∙+msp430单片机的内部辅助时钟的使用

热门文章:

∙+51单片机驱动HC-SR04超声波测距模块测试程序

∙+51单片机实现数码管显示999秒倒计时C语言程

∙+MSP430F1232驱动ADS1255采集芯片C程序

∙+51单片机控制LCD1602液晶篇

∙+51单片机控制8X8LED点阵屏滚动显示汇编程序

∙+基于AT89S52单片机的时钟日历整点报时及温度

∙+51单片机万年历之DS18B20驱动程序

∙+51单片机控制24C08多花样LED流水等实验

∙+51单片机驱动BH1750FVI光照LCD液晶显示

∙+基于MSP430单片机的8*8点阵显示0~9C程序

本月热门:

∙+51单片机控制24C08多花样LED流水等实验

∙+51单片机控制LCD1602液晶篇

∙+基于AT89S52单片机的时钟日历整点报时及温度

∙+51单片机万年历之DS18B20驱动程序

∙+51单片机驱动HC-SR04超声波测距模块测试程序

∙+51单片机实现数码管显示999秒倒计时C语言程

∙+MSP430F1232驱动ADS1255采集芯片C程序

∙+51单片机控制8X8LED点阵屏滚动显示汇编程序

相关商品

直插AT24C02代号02B存储器/串口EEPROM2.7-5.5V2KDIP-8

¥0.33原价去看看

彩电存储器AT24C02/AT24C08/AT24C16读写器/EEPROM读写器

¥29.80原价去看看

(B6A5)AT24C02DIP

¥0.38原价去看看

贴片AT24C02串口EEPROM2.7-5.5V2KSOP-8深圳育松

¥0.70原价去看看

AT24C02C-PUMEEPROM存储器㊣【进口原装,质量保证.专营ATMEL】

¥0.85原价去看看

单片机开发板单片机学习板配件-集成ICAT24C02EEPROM存储器

¥0.50原价去看看

AT24C02NAT24C02直插DIP-8国产全新原装直接拍

¥0.28原价去看看

【文达电子冲3皇冠店铺】全新24C0224C0424C1624C32

¥0.50原价去看看

关键|24C02AT24C02BN-SH-TSOP-8存储器芯片【正品特价】

¥0.60原价去看看

AT24C02AAT24C02直插全新直拍

¥0.25原价去看看

关键|M24C02-WMN6TPM24C02SOP8存储器AT24C02【正品特价】

¥0.45原价去看看

贴片ICAT24C02N-10SU-2.7串口EEPROM存储器芯片2KSOP8正品现货

¥0.40原价去看看

51单片机开发板带点阵单片机学习开发板DS130224C02笔记本

¥55.00原价去看看

复旦微FM24C02A24c02存储器存储芯片SOP贴片亏本疯抢元器件

¥0.26原价去看看

IC芯片24C02原装拍前请咨询

¥8.00原价去看看

IC芯片24C02AT-ISN原装拍前请咨询

¥8.00原价去看看

IC芯片24C02EM8原装拍前请咨询

¥8.00原价去看看

IC芯片24C02IP原装拍前请咨询

¥8.00原价去看看

IC芯片24C02J原装拍前请咨询

¥8.00原价去看看

IC芯片24C02LM8原装拍前请咨询

¥8.00原价去看看

51单片机

∙51单片机

∙avr单片机

∙msp430

∙网站地图

avr单片机

∙单片机教程网

∙51单片机

∙msp430

∙avr单片机

msp430

∙单片机教程网

∙51单片机

∙msp430

∙avr单片机

单片机教程网

∙单片机教程网

∙51单片机

∙msp430

∙avr单片机

Copyright2011-2013PoweredByZ-blog.ThemedBy单片机教程网

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2