View Single Post
Old 03-09-2009, 06:40 PM   #4
pdtung
Nhập môn đệ tử
 
Tham gia ngày: May 2009
Bài gửi: 1
:
Em cũng thử dùng chương trình trên của bác để nạp vào PIC18F97J60 nhưng chuyển sang Program Memory tại địa chỉ 0x2000 thì không thấy có data nào ghi vào địa chỉ đó cả. Cho em hỏi có cần phải thiết lập gì thêm nữa không ạ? Đoạn chương trình e chỉnh sửa:

TBLPTR = 0x2000; // địa chỉ của vùng nhớ mà data đc ghi, ở đây mình dùng 0x2000

EECON1bits.WREN = 1; // enable write to memory
EECON1bits.FREE = 1; // enable Row Erase operation
INTCONbits.GIE = 0; // disable interrupts
// EECON2 = 0x55;
// EECON2 = 0xAA;
// EECON1bits.WR = 1;
_asm
MOVLW 0x55
MOVWF 0xfa7, ACCESS
MOVLW 0xaa
MOVWF 0xfa7, ACCESS
BSF 0xfa6, 0x1, ACCESS
_endasm

INTCONbits.GIE = 1; // enable interupt

// ghi 64 bytes data vào holding register trước khi bắt đầu write
for (j=0;j<64;j++) {
TABLAT = 0x43; // kí tự C sẽ đc ghi vào từng byte bộ nhớ
_asm
TBLWTPOSTINC
_endasm
}

EECON1bits.WREN = 1; // bật bít write, cho phép ghi
INTCONbits.GIE = 0; // tạm thời disable interrupt
//EECON2 = 0x55; // unlock register
//EECON2 = 0xAA;
//EECON1bits.WR = 1; // bắt đầu ghi
_asm
MOVLW 0x55
MOVWF 0xfa7, ACCESS
MOVLW 0xaa
MOVWF 0xfa7, ACCESS
BSF 0xfa6, 0x1, ACCESS
_endasm
while (EECON1bits.WR); // trong khi đang ghi thì chờ

INTCONbits.GIE = 1; // enable interupt
EECON1 = 0x00; // disable WREN , ko cho phép ghi nữa

Cảm ơn các bác nhiều.
pdtung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn