Trích:
Nguyên văn bởi vokihut
Bổ sung thêm thông tin :
Em dùng mạch nạp cổng LPT (không rõ của hãng nào, hộp màu đen, xuất sứ từ USA, nhưng made in china  ).
Nhưng có một vấn đề là : mạch nạp báo địa chỉ của con 16F876A từ 0 - 41FF ???? mặc dù con này chỉ có 8k bộ nhớ Flash, và datasheet ghỉ địa chỉ của nó từ 0 - 1FFF
Khi nạp xong, bộ nạp báo lỗi tại địa chỉ 4001 ??
Theo em, địa chỉ này không có trong bộ nhớ của 16F876A . Em đã đọc Flash của nó và so sánh code của nó vói file nguồn, thấy giống , tất nhiên không thể test hết đc. Nhưng có lẽ ít nhất là không có lỗi từ địa chỉ 0000 - 1FFF , nếu không, mạch nạp đã báo lỗi rồi
Mong được chỉ giáo .
|
Địa chỉ tính theo word (14-bit) của PIC16F876A là 0x0000-0x1FFF, nhưng tập tin .hex chỉ đánh số theo byte, do đó trong tập tin .hex phạm vi bộ nhớ chương trình của PIC16F876A là 0x0000-0x3FFF (vì dùng 2 byte do mỗi 14-bit từ lệnh). Nếu phần mềm của bạn chỉ dùng địa chỉ byte thì nó sẽ hiển thị bộ nhớ chương trình trong phạm vi đó. Và như vậy từ địa chỉ 0x4000 đến 0x41FF là dùng cho các từ cấu hình và data EEPROM (data EEPROM từ 0x4100 đến 0x41FF).
Địa chỉ 0x4001 bị báo lỗi chính là địa chỉ nằm trong vùng User ID, thường không được sử dụng. Nếu phần mềm cho phép thì bạn nên tắt chức năng verify vùng nhớ này, vì chắc là bạn không có dùng nó.
Với triệu chứng của mạch như bạn mô tả, bạn hãy kiểm tra xem từ cấu hình nằm ở địa chỉ 0x2007 (hay 0x400E trong phần mềm, cũng có thể nó được đặt trong một vùng riêng) xem có đúng hay không. Nếu đúng thì thử thêm với cấu hình HS:
Code:
#fuses HS, NOWDT, NOPROTECT, NOLVP
Thân,