Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.01.2005, 13:25
|
|
khorght213
Гость
|
pic 16f84a проблема с выбором банка
Никак не могу заставить переключаться банки регистров. банк один по умолчанию работает, а вот переключиться с помощбю RP0 на банк 1 не получается.компилирую в mpasmwin. если кто знает в чём дело объясните пожалуйста или приведите листинг рабочий с выбором банков.Очень хочется освоить микроконсроллеры, ассемблер понимаю и разбираюсь, а вот с банками застрял.заранее спасибо.
|
|
|
|
18.01.2005, 15:51
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: pic 16f84a проблема с выбором банка
Сообщение от khorght213
|
Никак не могу заставить переключаться банки регистров. банк один по умолчанию работает, а вот переключиться с помощбю RP0 на банк 1 не получается..
|
А нельзя ли подробнее - признаки какие?
Судя по всему, речь идет о серии 16
У них там память действительно дырявая, причем в начале IO регистры, потом память... Переключается несклькими битами, уж не помню - помню что для прямой адресаци два и ддля косвенной один. Причем банки "прямой" и "косвенной" разные... Именно потому я и не сталд работать с ПИКами, перешел на AVR где таких заморочек нет
|
|
|
|
18.01.2005, 15:57
|
|
vet
Гость
|
Заголовок сообщения: pic 16f84a проблема с выбором банка
Вообщето банки должны переключаться у 84-ки с помощью
установления бита RP0 в 1 или 0
Это можно сделать командами BCF или BSF
например BSF STATUS,RP0
Я постоянно так делаю и все работает.
|
|
|
|
19.01.2005, 13:18
|
|
Гость
|
вот листинг.при компиляции в mpasmwin в файле ошибок пишет, что необходимо проверить регистры, так как они находятся не в том банке, т.е регистры из банка 0 определяются правильно, а вот регистры банка 1 не определяются, потомучто RP0 не ставится в единицу и банк 1 не выбирается! в чем здесь поьлема.за основу листинга был взят листинг из очень распространенного примера в интернете, в котором с помощью микроконтроллера управляют светодиодами!
TMR0 EQU 01h
PC EQU 02h
STATUS EQU 03h
OPTREG EQU 81h
FSR EQU 04h
PORTA EQU 05h
PORTB EQU 06h
SCRATCH EQU 0Ch
DIGIT EQU 0Dh
; биты pегистpа STATUS
C EQU 0h
DC EQU 1h
Z EQU 2h
PD EQU 3h
TO EQU 4h
RP0 EQU 5h
TRISA EQU 85h
TRISB EQU 86h
INITA EQU 0x0F
INITB EQU B'00000000'
ORG 0
GOTO BEGIN
ORG 100h
BEGIN
BCF STATUS,RP0
CLRF PORTA ;Очистить регистр PORTA
MOVLW B'00010000'
MOVWF STATUS
;BSF STATUS,5 ;Выбор банка 1
MOVLW INITA ;Загpузить B'00010000' в pегистp W
MOVWF TRISA ;RA0-RA3 разряды порта А установить как входы, RA4 -выход
BCF STATUS,RP0
CLRF PORTB ;Очистить регистр DATAPORT
BSF STATUS,RP0 ;Выбор банка 1
MOVLW INITB ;Загpузить B'00000000' в pегистp W
MOVWF TRISB ;Все разряды порта В установить как выходы
...
END
|
|
|
|
19.01.2005, 14:28
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от Anonymous
|
вот листинг.при компиляции в mpasmwin в файле ошибок пишет, что необходимо проверить регистры, так как они находятся не в том банке,
|
... Не совсем уверен, дело давно было... Сталкивался с таким глюком (илине глюком?) что компилятор так ругался, он хотел чтобы использовались макро для переключения банков. Но макро устанавливали оба бита, а меня это злило - потому как мне надо было поменять один. Лишняя команда.
Но вот что за макро - увы, не помню
|
|
|
|
20.01.2005, 10:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
это не ошибки - это предупреждения компилер дает. Ему можно в лоб указать, какой банк, и больше не будет ругаться. Например:
MOVWF TRISA^80h
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
02.02.2005, 17:36
|
|
Гость
|
Re: pic 16f84a проблема с выбором банка
Сообщение от khorght213
|
Никак не могу заставить переключаться банки регистров. банк один по умолчанию работает, а вот переключиться с помощбю RP0 на банк 1 не получается.компилирую в mpasmwin. если кто знает в чём дело объясните пожалуйста или приведите листинг рабочий с выбором банков.Очень хочется освоить микроконсроллеры, ассемблер понимаю и разбираюсь, а вот с банками застрял.заранее спасибо.
|
А зачем изобретать велосипед? В MPLAB-е все прекрасно работает, и никаких проблем не возникает к тому же он фриварный в отличии от mpasm
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:07.
|
|