PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-04-2011, 08:07 PM   #1
tomato2711
Đệ tử 2 túi
 
tomato2711's Avatar
 
Tham gia ngày: Jan 2010
Bài gửi: 26
:
Smile Hỏi về EEPROM 24c256

Em đang làm giao tiếp pic16f877a với eeprom 24c256 bằng I2C, nhưng khi đọc datasheet cua con 24c256 thì thấy nó không cho biết dãy địa chỉ của eeprom, vậy mình muốn lưu mỗi lần 10byte (ví dụ 10 số) thì khi đọc lại thì sao nó biết mà trả data về cho con pic? Nhờ các bác tư vấn giúp em!
__________________
Càng học càng thấy ngu ra.(~.~)...............
tomato2711 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2011, 03:55 PM   #2
hawking1122
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 10
:
Tớ đọc trong datasheet của nó phần 8.3 có nói đấy chứ, 24c256 có 256 Kbits = 32KBytes = 2^15 bytes, vậy địa chỉ của một word (8bit) dài 15 bit tử 0000 đến 7FFF.
Trong CCS có lệnh read_eeprom(address) đấy thôi.
hawking1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-12-2011, 09:48 PM   #3
dong08101991
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 1
:
Unhappy giao tiep pic6f877a voi epprom 24c256 mo phong tren protues ko dc??

em dang lam giao tiep giua 16f877a voi 24c256 ghi va doc xuat ra cong com.nhung sao moi lan xuat ra thi no hien tren mang hinh la ff chu ko hien ra du lieu em ghi vao epprom.xim cac anh giup do?day la code em ghi
#include <16f877a.h>
#include <2402.c>
#fuses nowdt, noprotect, nolvp, xt, put
#use delay(clock = 4000000)
#use fast_io(b)
#use rs232 (baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
#byte portb = 0x06
#bit b0 = portb.0
#bit b1 = portb.1
int8 x,b;
void ghi ();
void doc ();
void main()
{
set_tris_b(0b00000011);
init_ext_eeprom();
while (1) {
if (b0 == 0) {
ghi ();
}
else {
if (b1==0) {
doc ();}
else {}}
}}
void ghi()
{
loop:
if (b0 == 1) {
write_ext_eeprom(0x0a, 2);}
else {
goto loop;}
}
void doc()
{
loop1:
if (b1 == 1){
x = read_ext_eeprom(0x0a);
printf("data ghi: %x \r ",x );
}
else {
goto loop1;}
}
dong08101991 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2011, 06:50 PM   #4
eunix
Đệ tử 2 túi
 
Tham gia ngày: Nov 2009
Bài gửi: 36
:
Bạn tham khảo code cho 24256 tại đây.
24256 dùng địa chỉ 16bit, bạn nên dọc kỹ datasheet. khi kết nối eeprom vào bus i2c bạn cũng cần chú ý là 24256 sử dụng nhiều địa chỉ trong bus i2c, không chú ý có thể bị trùng địa chỉ gây ra lỗi.

http://www.ccsinfo.com/forum/viewtopic.php?t=17787
__________________
DT:0932668464
Mail: eunix@live.com
Nắng không ưa, mưa không chịu, ghét gió, kỵ mùi sương.
eunix vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:06 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam