msp430f149的24c02标准C语言程序.docx
《msp430f149的24c02标准C语言程序.docx》由会员分享,可在线阅读,更多相关《msp430f149的24c02标准C语言程序.docx(27页珍藏版)》请在冰点文库上搜索。
![msp430f149的24c02标准C语言程序.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/a4431d43-1150-4901-8d8e-982feaf59493/a4431d43-1150-4901-8d8e-982feaf594931.gif)
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单片机教程网