Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.03.2010, 18:19
|
#11
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
Сообщение от picavr
|
Если честно не совсем понял о переменных, это ведь директивы препроцессора.
|
Ну что вы...
Код:
|
MyVar equ 0x110
BANKSEL MyVar |
|
|
|
|
02.03.2010, 18:23
|
#12
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
|
|
|
|
02.03.2010, 18:31
|
#13
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
Сообщение от Paveel
|
зачем они вообще зашифровали ОЗУ с этими банками я так и не понял, что нельзя было сделать одним массивом? Кто бы объяснил.
|
Когда ширина кода комманды ограничена (12-14-16 бит), а хочется(и нужно) иметь доступ к большему количеству данных, то для этих целей и используется разделение памяти данных на банки. Основная идея заключается в том, что можно организовать хранение денных так, чтобы например для одной процедуры (функции) данные были доступны в одном банке, а для другой - в другом. Сама идея не нова и используется очень давно, даже в РС,(правда с несколько другими целями)
|
|
|
|
02.03.2010, 19:13
|
#14
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
Сообщение от realid
|
Ну что вы...
Код:
|
MyVar equ 0x110
BANKSEL MyVar |
|
так это то же самое
Код:
|
#define TEMP_CUNTER 0xA7;1 банк
#define SAVE_CUNTER 0x120;2 банк
BANKSEL TEMP_CUNTER
MOVF TEMP_CUNTER,W
BANKSEL SAVE_CUNTER
MOVWF SAVE_CUNTER |
Хотя я адреса переменных объявляю не фиксировано:
Код:
|
REGISTERS_BANK0 UDATA_SHR 20;0 банк
;или REGISTERS_BANK0 UDATA 20
TMR0W RES 1 ;СОХРАНЯТЬ W
TMR0S RES 1 ;СОХРАНЯТЬ STATUS
TMR0F RES 1 ;СОХРАНЯТЬ FSR
TMR0P RES 1 ;СОХРАНЯТЬ PCLATH
TEMPT0 RES 1 ;ВРЕМЕННЫЙ ДЛЯ ПРЕРЫВАНИЙ TMR0
FLAGS0 RES 1 ;флаги
FLAGS1 RES 1 ;
REGISTERS_BANK1 UDATA 0A0 ;1 банк
#define LENG_BUFER_ADC_CHN0 8
#define LENG_BUFER_ADC_CHN1 8
#define LENG_BUFER_USART 32
TMR0WB1 RES 1 ;СОХРАНЯТЬ W
TMR0SB1 RES 1 ;СОХРАНЯТЬ STATUS
TMR0FB1 RES 1 ;СОХРАНЯТЬ FSR
TMR0PB1 RES 1 ;СОХРАНЯТЬ PCLATH
BUFER_ADC_CHN0 RES LENG_BUFER_ADC_CHN0
BUFER_ADC_CHN1 RES LENG_BUFER_ADC_CHN1
BUFER_USART_TX RES LENG_BUFER_USART
BUFER_USART_RX RES LENG_BUFER_USART
REGISTERS_BANK2 UDATA 00x120 ;2 банк
TMR0WB2 RES 1 ;СОХРАНЯТЬ W
TMR0SB2 RES 1 ;СОХРАНЯТЬ STATUS
TMR0FB2 RES 1 ;СОХРАНЯТЬ FSR
TMR0PB2 RES 1 ;СОХРАНЯТЬ PCLATH
SET_CUNTER RES 1 |
Последний раз редактировалось picavr; 02.03.2010 в 19:42.
|
|
|
|
02.03.2010, 19:25
|
#15
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
Сообщение от picavr
|
Хотя я адреса переменных объявляю не фиксировано
|
Я тоже......
|
|
|
|
03.03.2010, 17:14
|
#16
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Косвенная адресация данных в PIC16F690
ИМХО для доступа к банкам 1,2,3 лучше пользовать FSR, лучше выделить в подпрограмму, располагать их во всех страничках програмной памяти по одному адресу: Тогда из всех страниц програмной памяти будет доступна без переключения банков.
Код:
|
MOVLW ADR_VARIABLE
CALL READ_INDF_BANK01
MOVLW ADR_VARIABLE
CALL READ_INDF_BANK23
INDF_READ_RAM_P0 CODE 20
READ_INDF_BANK23
BSF STATUS,IPR0
GOTO READ_INDF_BANK01+1
READ_INDF_BANK01
BCF STATUS,IPR0
MOVWF FSR
MOVF INDF,W
RETURN
INDF_READ_RAM_P1 CODE 820
READ_INDF_BANK23
BSF STATUS,IPR0
GOTO READ_INDF_BANK01+1
READ_INDF_BANK01
BCF STATUS,IPR0
MOVWF FSR
MOVF INDF,W
RETURN
INDF_READ_RAM_P2 CODE 1020
READ_INDF_BANK23
BSF STATUS,IPR0
GOTO READ_INDF_BANK01+1
READ_INDF_BANK01
BCF STATUS,IPR0
MOVWF FSR
MOVF INDF,W
RETURN
INDF_READ_RAM_P3 CODE 1820
READ_INDF_BANK23
BSF STATUS,IPR0
GOTO READ_INDF_BANK01+1
READ_INDF_BANK01
BCF STATUS,IPR0
MOVWF FSR
MOVF INDF,W
RETURN |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:37.
|
|