Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Не получается прочитать с PORTB. (PIC18, Assembler)

Непрочитано 05.04.2011, 11:18  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Не получается прочитать с PORTB. (PIC18, Assembler)

Соединил RB0 c питанием 5В, RB1-RB7 - с землёй.
При симуляции вывод RB0 помечен красным, остальные - синим.
Исполняется код:
Код:
	CLRF    PORTB
	MOVLW	0xFF
	MOVWF	TRISB		;установить все разряды PORTB на ввод информации
	LFSR	FSR0,0x0200
	MOVLW	.255
LOOP_ADC
	MOVFF	PORTB,POSTINC0	;ТУТ ДАННЫЕ ДОЛЖНЫ СОХРАНЯТЬСЯ, НО НЕ СОХРАНЯЮТСЯ
	DECFSZ	WREG,1
	GOTO	LOOP_ADC
В окошке "Watch" значения регистров с адресами 0x0200 и далее не изменяются (остаются 0).

Заменил
Код:
MOVFF	PORTB,POSTINC0
на
Код:
MOVF	PORTB,WREG	; тут в WREG всегда читается 0
MOVWF	POSTINC0


Как сохранять числа, подаваемые извне на PORTB?
Реклама:
Opasif вне форума  
Непрочитано 05.04.2011, 12:40  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Возможно мне слегка изменяет склероз, но в процессоре есть еще биты выбора банка для косвенной адресации. В частности смотрите в сторону регистра BSR. К тому же Ваш код больше похож на код для 16, а не для 18 семейсва.
Или переходите на С. Там все существенно проще. При правильном использовании в скорости не проиграете.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 05.04.2011, 12:51  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Сообщение от Opasif Посмотреть сообщение
Код:
MOVF	PORTB,WREG	; тут в WREG всегда читается 0
Ващще нужно указывать тип проца, в чём производится симуляция... А то догадайся, что у вас красное, а что синее...

Судя по результату чтения PORTB... у вас PORTB настроен как аналоговый...
st_1 вне форума  
Непрочитано 05.04.2011, 13:11  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Конечно. Старые грабли с регистром ANSEL и ANSELH!
CLRF PORTB -› выкинуть. Не нужно
MOVLW 0xFF -› не нужно
MOVWF TRISB -› не нужно. Все порты по умолчанию и так входы
добавить запись в ANSEL и ANSELH нуля!
LFSR FSR0,0x0200
MOVLW .255
Easyrider83 вне форума  
Непрочитано 06.04.2011, 12:33  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

MisterDi, команда MOVFF игнорирует содержимое регистра BSR (из мануала).
st_1, использую MPLAB IDE + Proteus VSM; PORTB не может быть настроен как аналоговый (в отличие от PORTA и PORTE).
Easyrider83, регистр ANSEL у PIC18 не существует.

Всё ещё хочу узнать, как сохранять числа, подаваемые извне на PORTB?
Opasif вне форума  
Непрочитано 06.04.2011, 13:20  
master.k
Частый гость
 
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
master.k на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Все-таки какой проц симулируешь?
Читать доку по нему касательно порта B.

Твой вариант сохранения - зависит от тактирования проца

Лучше наверно через таймер и прерывания (или только таймер)
так можно настроить период опроса порта
и запись в буфер.
master.k вне форума  
Непрочитано 06.04.2011, 13:32  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Сообщение от Opasif Посмотреть сообщение
Easyrider83, регистр ANSEL у PIC18 не существует.


На примере PIC18F43K20
Миниатюры:
Нажмите на изображение для увеличения
Название: anselh.png
Просмотров: 77
Размер:	55.7 Кб
ID:	20259  
Easyrider83 вне форума  
Непрочитано 06.04.2011, 14:11  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Сообщение от Opasif Посмотреть сообщение
PORTB не может быть настроен как аналоговый (в отличие от PORTA и PORTE).
А что говорит даташит проца? Или вы работаете по переводу среднего семейства?
st_1 вне форума  
Непрочитано 06.04.2011, 14:36  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Re: Не получается прочитать с PORTB. (PIC18, Assembler)

Оказывается, PIC18F4520 (у меня) сильно отличается от PIC18F452 (манул по которому я читал вначале).

Из мануала по PIC18F4520.
Регистры, связанные с PORTB:
PORTB
LATB
TRISB
INTCON
INTCON2
INTCON3
ADCON1 (т.е. PORTB может быть аналоговым! st_1, вы были правы)
Надеюсь, в этом была проблема.
Всем спасибо за помощь.
Opasif вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами (PIC18, Assembler) Opasif Микроконтроллеры, АЦП, память и т.д 23 27.11.2011 23:38


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.