Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запись данных во Flash (PIC16F877
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
snek
В документации на микроконтроллер PIC16f877 описаны операции чтения\записи во Flash память программ. Делаю все по приведенным алгоритмам, но в результате чтения получаю лишь нули. Подскажите может есть какие проблемы связанные с записью\чтение Flash памяти в данном контроллере или может есть какие "заковырки" по этому поводу.
K_AV
Цитата(snek @ May 18 2007, 16:29) *
В документации на микроконтроллер PIC16f877 описаны операции чтения\записи во Flash память программ. Делаю все по приведенным алгоритмам, но в результате чтения получаю лишь нули. Подскажите может есть какие проблемы связанные с записью\чтение Flash памяти в данном контроллере или может есть какие "заковырки" по этому поводу.
Вот подпрограммы из программы, работающей на PIC16F876 (с 877 полностью одинаков).
Код
;============================================================================
; подпрограмма чтения байта данных из EEPROM
;----------------------------------------------------------------------------
; адрес ячейки берется из EE_adr, результат чтения - в W
;----------------------------------------------------------------------------
ReadEE: bcf     STATUS,RP0    ;|
        bcf     STATUS,RP1    ;|выбор банка 0
        movf    EE_adr,W      ;  копируем значение нужного адреса в W
        bcf     STATUS,RP0    ;|
        bsf     STATUS,RP1    ;|выбор банка 2
        movwf   EEADR         ;  указание требуемого адреса ячейки EEPROM
        bsf     STATUS,RP0    ;|выбор банка 3
        bsf     STATUS,RP1    ;|
        bcf     EECON1,EEPGD  ;выбрать EEPROM память
        bsf     EECON1,RD     ;инициализировать чтение
        bcf     STATUS,RP0    ;|
        bsf     STATUS,RP1    ;|выбор банка 2
        movf    EEDATA,W      ;забрать прочитанный байт
        bcf     STATUS,RP0    ;|
        bcf     STATUS,RP1    ;| выбрать банк 0
        return
;============================================================================
; подпрограмма записи байта данных в EEPROM
;----------------------------------------------------------------------------
; адрес ячейки берется из EE_adr, байт для записи - в EE_data
;----------------------------------------------------------------------------
WriteEE: bsf    STATUS,RP0    ;|
        bsf     STATUS,RP1    ;|выбор банка 3
        btfsc   EECON1,WR     ; |проверить, что завершены
        goto    $-1        ; |предыдущие операции записи
        bcf     STATUS,RP0    ;|
        bcf     STATUS,RP1    ;|выбрать банк 0
        movf    EE_adr,W      ;
        bcf     STATUS,RP0    ;|выбрать банк 2
        bsf     STATUS,RP1    ;|
        movwf   EEADR         ;пересылка адреса байта
        bcf     STATUS,RP0    ;|
        bcf     STATUS,RP1    ;|выбрать банк 0
        movf    EE_data,W     ;
        bcf     STATUS,RP0    ;|выбрать банк 2
        bsf     STATUS,RP1    ;|
        movwf   EEDATA        ;пересылка собственно байта
        bsf     STATUS,RP0    ;|
        bsf     STATUS,RP1    ;|выбрать банк 3
        bcf     EECON1,EEPGD  ;выбрать EEPROM память данных
        bsf     EECON1,WREN;разрешить операции записи в EEPROM
        bcf     INTCON,GIE    ;запретить прерывания на время записи
        movlw   0x55          ;|
        movwf   EECON2        ;|записать 55h в регистр EECON2
        movlw   0xAA          ;|
        movwf   EECON2        ;|записать AAh в регистр EECON2
        bsf     EECON1,WR     ;инициализировать запись
        bsf     INTCON,GIE    ;разрешить прерывания
        bcf     EECON1,WREN;запретить запись в EEPROM память данных
        bcf     STATUS,RP0    ;|
        bcf     STATUS,RP1    ;| выбрать банк 0
        return
snek
спасибо K_AV , очень помог.
K_AV
Цитата(snek @ May 21 2007, 14:44) *
спасибо K_AV , очень помог.
Пожалуйста. Если не секрет - в чем именно была проблема?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.