реклама на сайте
подробности

 
 
> запись данных во Flash (PIC16F877, не могу записать\прочитать Flash память программ
snek
сообщение May 18 2007, 13:29
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-07
Пользователь №: 27 746



В документации на микроконтроллер PIC16f877 описаны операции чтения\записи во Flash память программ. Делаю все по приведенным алгоритмам, но в результате чтения получаю лишь нули. Подскажите может есть какие проблемы связанные с записью\чтение Flash памяти в данном контроллере или может есть какие "заковырки" по этому поводу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
K_AV
сообщение May 19 2007, 08:01
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 492
Регистрация: 19-08-06
Пользователь №: 19 667



Цитата(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
Go to the top of the page
 
+Quote Post
snek
сообщение May 21 2007, 11:44
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 16-05-07
Пользователь №: 27 746



спасибо K_AV , очень помог.
Go to the top of the page
 
+Quote Post
K_AV
сообщение May 21 2007, 14:01
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 492
Регистрация: 19-08-06
Пользователь №: 19 667



Цитата(snek @ May 21 2007, 14:44) *
спасибо K_AV , очень помог.
Пожалуйста. Если не секрет - в чем именно была проблема?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016