![]() |
|
|
|
|
#1 |
|
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
Tại e k chịu tìm hỉu , cứ đụng tới cái j là lên diễn đàn hỏi , có ng trả lời liền nên k chịu động não search google. Dễ òm chứ có j đâu . Chỉ có 2 hàm : write_eeprom(address,value) và read_eeprom(address) . Cu thể như sau :
Code:
int8 a;
main()
{ write_eeprom(0x01, 0xCA); // ghi 0xCA vào vị trí địa chỉ 0x01 trong eeprom
a= read_eeprom(0x01) ; // đọc eeprom tại địa chỉ 0x01 , gán vào biến a
while(1);
}
|
|
|
|
|
|
#2 | |
|
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
Trích:
thì ví dụ như vầy nè: thằng 77a có bộ nhớ là 8k nên nó sẽ có tổng cộng 256 ô nhớ (0 - 255)và mỗi ô nhớ dài 8bit.Với 8bit thì bạn sẽ có thể lưu được con số từ 0 - 255.Tới đây hiểu chưa nè? để thao tác với các ô nhớ đó bạn chỉ việc sử dụng 02 hàm là: write_eeprom(địa chỉ,giá trị);//nạp một giá trị vào eeprom tại địa chỉ a=read_eeprom(địa chỉ);//đọc giá trị trong eeprom tại ô nhớ địa chỉ rồi gán cho biến a. Với địa chỉ và giá trị bạn có thể sử dụng cơ số 10 cho nó dể! cố gắng lên bạn!!!
__________________
A&A |
|
|
|
|
|
|
#3 | |
|
Đệ tử 1 túi
Tham gia ngày: Apr 2010
Bài gửi: 16
: |
Trích:
|
|
|
|
|
|
|
#4 |
|
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
: |
Có lẽ bạn chưa nắm rõ về cấu trúc bộ nhớ của PIC.
Nên đọc kỹ datasheet hơn! ^^
__________________
Mechatronics Department University of Engineering and Technology, VNUH. |
|
|
|
|
|
#5 | |
|
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 3
: |
Trích:
lần đầu tiên em ghi dữ liệu 200 vào địa chỉ 0x01 của EEPROM , sau đó hiên thị lên terminal kết quả ra là 200, đúng như giá trị mình ghi #include <16F877a.h> #include <def_877a.h> #device *=16// ADC=10 #use delay(clock = 20000000) #fuses HS,NOWDT,PUT,NOPROTECT,NOLVP #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)) //Khai bao su dung rs232, baudbit = 9600, truyen la cong RC6, nhan la cong RC7 int8 i; void main(){ while(true) { write_eeprom(0x01,200); delay_ms(100); i=read_eeprom(0x01); delay_ms(200); printf("bo nho : %u \r",i); delay_ms(1000); } } Sau đó em comment đoạn code // write_eeprom(0x01,200); rồi hiển thị dữ liệu ở địa chỉ 0x01 của EEPROM để kiểm tra kết quả đã được lưu vào địa chỉ 0x01 của EEPROM chưa thì kết quả hiện ra là 255 , không phải là giá trị 200 đã ghi như trước đó .cho em hỏi chương trình em như vậy có chỗ nào thiếu xót không, nhờ anh giúp đỡ với #include <16F877a.h> #include <def_877a.h> #device *=16// ADC=10 #use delay(clock = 20000000) #fuses HS,NOWDT,PUT,NOPROTECT,NOLVP #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)) //Khai bao su dung rs232, baudbit = 9600, truyen la cong RC6, nhan la cong RC7 int8 i; void main() { while(true) { // write_eeprom(0x01,200); delay_ms(100); i=read_eeprom(0x01); delay_ms(200); printf("gia tri : %u \r",i); delay_ms(1000); } } |
|
|
|
|
|
|
#6 |
|
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 3
: |
nhờ mấy bác giúp đỡ em với, vấn đề này em làm mấy hôm rồi vẫn chưa ra, đã thử ở mấy con PIC 16f877a khác kết quả vẫn không có như mong muốn, nhờ các bác giúp với
|
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|