Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 19.10.2014, 14:17  
Max1987
Прохожий
 
Регистрация: 19.10.2014
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Max1987 на пути к лучшему
По умолчанию PIC16F873A

Здравствуйте! Очень нужна помощь! Никак не могу разобраться, как можно перекинуть данные из 0 банка в 1 банк в обратном порядке. Всё это реализуется в MPLAB, на языке ассемблер. PIC 16F873A
Реклама:
Max1987 вне форума  
Непрочитано 19.10.2014, 14:50  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: PIC16F873A

Можно через регистр INDF. Адрес регистра в регистре FSR. Адрес вычисляется математически. Addr_Source = 0x20 + i, Addr_Dest = 0xFF - i, i = 0, 1, 2, 3... и так далее до 95.
FSR, INDF действуют на оба банка без переключения банков.

Последний раз редактировалось NewWriter; 19.10.2014 в 14:54.
NewWriter вне форума  
Непрочитано 19.10.2014, 17:16  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,508
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: PIC16F873A

Поскольку у этого МК только 2 банка регистров и нет других свободных, то в качестве временных можно использовать регистры для EEPROM. Вот так:
Код:
    bsf STATUS, RP1     ;‹‹Bank2››
    bcf STATUS, RP0     ;
    bcf STATUS, IRP
    movlw 0x20
    movwf EEADR         ;начало адресов в Bank0

Copy_Cycle
        movf EEADR, W       ;адрес регистра Bank0
        movwf FSR           ;в указатель
        movf INDF, W        ;чтение регистра из Bank0
        movwf EEDATA        ;временное сохранение
    
        movf EEADR, W       ;текущий адрес
        sublw 0xFF          ;0xFF - текущий адрес
        addlw 0x20          ;+ 0x20
        movwf FSR           ;дарес рег.Bank1 в указатель
        movf EEDATA, W      ;из временного
        movwf INDF          ;запись регистра в Bank1			
    
    incf EEADR          ;инкремент адреса
    movlw 0x80          ;проверка на достижение..
    xorwf EEADR, W      ;..конца Bank0
    btfss STATUS, Z
    goto Copy_Cycle     ;повтор копирования
    nop                 ;ЗАВЕРШЕНИЕ КОПИРОВАНИЯ
NewWriter вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PicKit2 не пишет в pic16f873a sonartiflo PIC 7 14.02.2014 23:06
Прошу помощи по ШИМ на PIC16F873A niko56K Микроконтроллеры, АЦП, память и т.д 3 11.02.2011 00:01
[Решено] Прерывания от компаратора в Pic16f873a ushi_3 Proteus 1 27.03.2010 00:14


Часовой пояс GMT +4, время: 08:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot