Twitter推特。
Twitter(通称推特)是一家美国社交网络及微博客服务的网站,是全球互联网上访问量最大的十个网站之一。是微博客的典型应用。它可以让用户更新不超过140个字符的消息,这些消息也被称作“推文(Tweet)”。
这个服务是由杰克·多西在2006年3月创办并在当年7月启动的。Twitter在全世界都非常流行, 据Twitter现任CEO迪克·科斯特洛宣布,截至2012年3月,Twitter共有1.4亿活跃用户,Twitter被形容为“互联网的短信服务”。
扩展资料:
Twitter发展。
2007年时,平均每季度会产生400,000条消息,而到了2008年,这个数字已经增长至1亿。在2010年2月,Twitter用户平均每天会发送5000万条消息。到2010年3月,Twitter官方一共记录了超过70,000款第三方应用程序。到2010年6月,根据Twitter提供的数据,平均每天会产生6500万条消息,也就是每秒750条消息。Compete.com网站显示,Twitter早在2009年1月就已经从排名第22位的社交网络站点上升至第三位。
参考资料来源:百度百科-Twitter
这个是MEGA128和24c64 twi 通信的程序,我已经实现 你参考下,单字节读写没问题,连续读还有问题!#include"main.h"
#include"delay.h"
//TWI状态定义
//MT 主方式传输 MR 主方式接收
#define START 0x08
#define RE_START 0x10
#define MT_SLA_ACK 0x18
#define MT_SLA_NOACK 0x20
#define MT_DATA_ACK 0x28
#define MT_DATA_NOACK 0x30
#define MR_SLA_ACK 0x40
#define MR_SLA_NOACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NOACK 0x58
//常用TWI *** 作(主模式写和主模式读)
#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
#define Wait() {while(!(TWCR&(1<<TWINT)))}
#define TestAck() (TWSR&0xf8)
#define SetAck() (TWCR|=(1<<TWEA))
#define SetNoAck() (TWCR&=~(1<<TWEA))
#define Twi() (TWCR=(1<<TWINT)|(1<<TWEN))
#define Write8Bit(x) {TWDR=(x)TWCR=(1<<TWINT)|(1<<TWEN)}
#define rd_24c64_add 0xa1
#define wr_24c64_add 0xa0
uint8 i2c_Write_One_24c64(uint8 Wdata,uint16 RomAddress)
{
Start()//I2C启动
Wait()
if(TestAck()!=START) return 1//ACK
Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式
Wait()
if(TestAck()!=MT_SLA_ACK) return 1//ACK
Write8Bit((uint8)(RomAddress>>8))//写24C32的ROM高地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
Write8Bit((uint8)RomAddress)//写24C32的ROM低地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
Write8Bit(Wdata)//写数据到24C32的ROM
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
Stop()//I2C停止
Delayms(10)//延时等EEPROM写完
return 0
}
/************************************************
*函数名称: uint8 i2c_Read_One_24c64(uint8 RomAddress)
*入口参数: uint8 RomAddress,ROM地址
*出口参数: uint8,读到的数据,如果读失败也返回0
*函数功能: I2C总线读一个字节24c64
*创建时间: 2009-09-24 eleShrimp
*修改说明:
/************************************************/
uint8 i2c_Read_One_24c64(uint16 RomAddress)
{
uint8 temp
Start()//I2C启动
Wait()
if (TestAck()!=START) return 0//ACK
Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式
Wait()
if(TestAck()!=MT_SLA_ACK) return 0//ACK
Write8Bit((uint8)(RomAddress>>8))//写24c64的ROM高地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 0//ACK
Write8Bit((uint8)RomAddress)//写24c64的ROM低地址
Wait()
if (TestAck()!=MT_DATA_ACK) return 0
Start()//I2C重新启动
Wait()
if (TestAck()!=RE_START) return 0
Write8Bit(rd_24c64_add)//写I2C从器件地址和读方式
Wait()
if(TestAck()!=MR_SLA_ACK) return 0//ACK
Twi()//启动主I2C读方式
Wait()
if(TestAck()!=MR_DATA_NOACK) return 0//ACK
temp=TWDR//读取I2C接收数据
Stop()//I2C停止
return temp
}
/************************************************
*函数名称: uint8 i2c_Write_Num_24c64(uint8 *Wdata,uint8 num,uint8 RomAddress)
*入口参数: uint8 *Wdata,数据指针;uint8 num,写入的数据个数;uint8 RomAddress,ROM地址
*出口参数: uint8,返回0:写成功返回非0:写失败
*函数功能: I2C总线写N个字节24c64
*创建时间: 2009-09-24 eleShrimp
*修改说明:
/************************************************/
uint8 i2c_Write_Num_24c64(uint8 *Wdata,uint8 num,uint16 RomAddress)
{
uint8 i
Start()//I2C启动
Wait()
if(TestAck()!=START) return 1//ACK
Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式
Wait()
if(TestAck()!=MT_SLA_ACK) return 1//ACK
Write8Bit((uint8)(RomAddress>>8))//写24c64的高8位ROM地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
Write8Bit((uint8)(RomAddress))//写24c64的低8位ROM地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
for(i=0i<numi++)
{
Write8Bit(Wdata[i])//写数据到24C02的ROM
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
}
Stop()//I2C停止
Delayms(100)//延时等EEPROM写完
return 0
}
/************************************************
*函数名称: uint8 i2c_Read_Num_24c64(uint8 *Wdata,uint8 num,uint8 RomAddress)
*入口参数: uint8 *Wdata,数据指针;uint8 num,写入的数据个数;uint8 RomAddress,ROM地址
*出口参数: uint8,返回0:写成功返回非0:写失败
*函数功能: I2C总线读N个字节24c64
*创建时间: 2009-09-24 eleShrimp
*修改说明:
/************************************************/
uint8 i2c_Read_Num_24c64(uint8 *Wdata,uint8 num,uint16 RomAddress)
{
uint8 temp,i
Start()//I2C启动
Wait()
if (TestAck()!=START) return 1//ACK
Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式
Wait()
if(TestAck()!=MT_SLA_ACK) return 1//ACK
Write8Bit((uint8)(RomAddress>>8))//写24c64的高8位ROM地址
Wait()
if(TestAck()!=MT_DATA_ACK) return 1//ACK
Write8Bit((uint8)(RomAddress))//写24c64的低8位ROM地址
Wait()
if (TestAck()!=MT_DATA_ACK) return 1
Start()//I2C重新启动
Wait()
if (TestAck()!=RE_START) return 1
Write8Bit(rd_24c64_add)//写I2C从器件地址和读方式
Wait()
if(TestAck()!=MR_SLA_ACK) return 1//ACK
Twi()//启动主I2C读方式
for(i=0i<num-1i++)
{
SetAck()
Wait()
if(TestAck()!=MR_DATA_ACK) return 1//NOACK
Wdata[i]=TWDR//读取I2C接收数据
}
SetNoAck()
Wait()
if(TestAck()!=MR_DATA_NOACK) return 1//NOACK
Wdata[i]=TWDR//读取I2C接收数据
Stop()//I2C停止
return 0
}
/************************************************
*函数名称: void i2c_init(void)
*入口参数: 无
*出口参数: 无
*函数功能: I2C初始化
*创建时间: 2009-09-24 eleShrimp
*修改说明:
/************************************************/
void i2c_init(void)
{
TWBR=24
TWSR=00
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)