1不同容量的at24xx分析
1.1 at24c01~at21c16,容量分別是128,256,512,1024,2048個位元組,頁長度分別是8,8,16,16,16讀寫都是先發裝置位址,然後發乙個位元組的位元組位址
它們的裝置位址如下所示:
1.2 at24c32-at24c64,容量分別是4096,8192個位元組,頁長度分別是32,32位元組,讀寫都是先發裝置位址,然後發乙個位元組的高位址,再發乙個位元組的低位址
它們的裝置位址如下所示:
1.3 at24c128~at24c512容量分別是16384,32768個位元組,頁長度分別是64,64,128位元組,讀寫都是先發裝置位址,然後發乙個位元組的高位址,再發乙個位元組的低位址,它們的裝置位址如下所示:
2 **分析
//在at24cxx指定位址讀出乙個資料
//readaddr:開始讀數的位址
//返回值 :讀到的資料
u8 at24cxx_readonebyte(u16 readaddr)
else iic_send_byte(0xa0+((readaddr/256)<<1)); //傳送器件位址0xa0,寫資料
iic_wait_ack();
iic_send_byte(readaddr%256); //傳送低位址
iic_wait_ack();
iic_start();
iic_send_byte(0xa1); //進入接收模式
iic_wait_ack();
temp=iic_read_byte(0);
iic_stop();//產生乙個停止條件
return temp;
}//在at24cxx指定位址寫入乙個資料
//writeaddr :寫入資料的目的位址
//datatowrite:要寫入的資料
void at24cxx_writeonebyte(u16 writeaddr,u8 datatowrite)
else
iic_wait_ack();
iic_send_byte(writeaddr%256); //傳送低位址
iic_wait_ack();
iic_send_byte(datatowrite); //傳送位元組
iic_wait_ack();
iic_stop();//產生乙個停止條件
hal_delay(10);
}3.最後注意多位元組跨頁的讀寫問題
(P24)管道 管道的讀寫規則
當要寫入的資料量小於等於pipe buf,linux將保證寫入的原子性 原子性 假設a程序和b程序都要向管道寫入資料,a程序寫入的資料量小於等於pipe buf,則a程序寫入的資料是連續的,中間並不會插入b程序寫入的資料,man 7 pipe看pipe buf 否則多個程序往管道寫入資料,可能會出現...
2 4 朋友圈 25 分
某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入格式 輸入的第一行包含兩...
2 4 分割鍊錶
template typename t singlylinkednode partition singlylinkednode head,t partition singlylinkednode newhead head singlylinkednode newtail head singlylin...