PDA

View Full Version : Hỏi về eeprom pic16f877


dongphutho
17-07-2009, 11:14 AM
Có bạn nào biết cho mình hỏi?
pic 16f877 có 256 bye vậy giá trị địa chỉ pic bắt đầu từ 0 và kết thúc ở 255, giá trị data la những so 8bit phải ko?

set_tris_b(0);
write_program_eeprom(0,0xf0);
value= read_eeprom(0);
output_b(valuve);

Mình viết thử cách lưu và đọc chương trình từ eeprom nhưng mô phỏng không thấy bít xuất ra chân b(11110000)? bạn nào biết giải thích rùm mình nhé

lequocbao
17-07-2009, 05:56 PM
Có bạn nào biết cho mình hỏi?
pic 16f877 có 256 bye vậy giá trị địa chỉ pic bắt đầu từ 0 và kết thúc ở 255, giá trị data la những so 8bit phải ko?

set_tris_b(0);
write_program_eeprom(0,0xf0);
value= read_eeprom(0);
output_b(valuve);

Mình viết thử cách lưu và đọc chương trình từ eeprom nhưng mô phỏng không thấy bít xuất ra chân b(11110000)? bạn nào biết giải thích rùm mình nhé
write_program_eeprom(0,0xf0);----------->bạn thử thay = write_eeprom(0,0xf0);
Bạn chịu khó post đầy đủ code lên,rùi mình nghâm cứu cho!

dongphutho
19-07-2009, 11:23 AM
ý của mình là muốn ghi dữ liệu lên eeprom và đọc thử ra một port nào đó để kiểm tra lại xem đúng không.
#include<16f877.h>
#use delay(clock=20000000)
int8 value;
void main()
{
set_tris_c(0);
write_program_eeprom(0,0xf0);
value=read_eeprom(0);
output_c(value);
}

lequocbao
20-07-2009, 12:27 PM
ý của mình là muốn ghi dữ liệu lên eeprom và đọc thử ra một port nào đó để kiểm tra lại xem đúng không.
#include<16f877.h>
#use delay(clock=20000000)
int8 value;
void main()
{
set_tris_c(0);
write_program_eeprom(0,0xf0);
value=read_eeprom(0);
output_c(value);
}
bít ngay mà!bạn phải để đoạn code của bạn vào vòng while(true) chứ bạn!

Bluetek212
23-07-2009, 09:39 AM
bạn chạy mô phỏng bằng Protues phải ko!Nếu đúng vậy thì mô phỏng eeprom trong proteus chạy ko đúng đâu bạn nhé!mình cũng đã thử rồi, cứ nạp chạy thực tế, mô phỏng đôi khi không tin tưởng được đâu!chúc bạn thành công

silvadk2
26-07-2010, 05:21 PM
Chú ý việc đưa lệnh ghi và đọc eeprom vào vòng lặp while(), số lần ghi và đọc vào eeprom là có hạn

nbb3i
27-07-2010, 10:01 AM
write_program_eeprom(add,value) là dùng cho dòng 16bit
bạn dùng hàm write_eeprom(add,value) giống như lequocbao nói ý.
Và nên cẩn thận với ghi đọc eeprom vì nó chỉ ghi/xóa được vài trăm nghìn lần thôi à :)
1ms ghi/đọc 1 lần thì chắc dùng được 1 ngày :-P