Например TDA7294

Форум РадиоКот • Просмотр темы - Как считать байт с портов pic18?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт фев 20, 2026 08:56:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как считать байт с портов pic18?
СообщениеДобавлено: Ср мар 01, 2023 13:54:47 
Первый раз сказал Мяу!

Зарегистрирован: Ср янв 18, 2023 13:01:27
Сообщений: 35
Рейтинг сообщения: 0
Уважаемые форумчане! Простите за тупой вопрос, но я не могу понять, как считать с порта. Написал программу преобразования из двоичного в десятичный код. Подставляю просто число (movlw .24 к примеру) работает всё замечательно. Чтобы считать с порта меняю строчку на movf porta, 0 и тишина. Pic18fxxxx.


Последний раз редактировалось Hailmary Чт мар 02, 2023 11:41:09, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 12:00:00 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2962
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
movf porta и тишина. Pic18fxxxx.

Может стоит вначале ознакомится с системой команд этой архитектуры?
У инструкции movf ТРИ аргумента. То есть она в общем случае выглядит как movf reg, d, a
Где reg - регистр в ОЗУ, d - назначение (f или w), a - тип доступа в ОЗУ (accessed/banked)
Отсутствие d и a означает дефолтную запись регистра в самого себя с доступом через BSR (banked).

Добавлено after 2 hours 46 minutes 7 seconds:
movf porta, 0

Как определено имя porta?
Какая используется среда и какой ассемблер?
Доступ к SFR лучше всего производить через accessed.


Последний раз редактировалось КРАМ Чт мар 02, 2023 12:01:14, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 12:07:45 
Первый раз сказал Мяу!

Зарегистрирован: Ср янв 18, 2023 13:01:27
Сообщений: 35
Рейтинг сообщения: 0
Про movf reg, d я понял, а вот про a не совсем. Читал мануал, но всё равно не дошло.
Чтобы понять, как считать с порта, я написал так:

Main
Movf porta, 0 ;считывает с порта а и сохраняем в w
Movwf portb ; загружаем в порт b из регистра w
Goto main
End

В pic16f84a всё работает, а в pic18f4520 нет. :?

Добавлено after 7 minutes 30 seconds:
Как определено имя porta?
Какая используется среда и какой ассемблер?

Porta equ 0xf80
Mplab x, mpasm


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 12:11:40 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2962
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
про a не совсем. Читал мануал, но всё равно не дошло.

Абисняю.
Разрядность инструкций в PIC18 - 16 бит.
Это позволяет адресовать операнд в команде только 8 битами. Поэтому есть ДВА варианта доступа к пространству ОЗУ. Либо через регистр переключающий страницы ОЗУ - BSR (в нем располагаются старшие разряды адреса), либо через accessed - в этом случае НУЛЕВАЯ СТРАНИЦА оперативной памяти делится на две половины. В начале расположены адреса первой половины нулевой страницы ОЗУ, а в конце ремапированные адреса SFR (спецрегистров, к которым относится и PORTA). Это позволяет не переключать BSR при размещении наиболее часто используемых переменных в первой половине нулевой страницы ОЗУ.
ЗЫ. Размещение SFR в последних 18-х моделях МК Микрочипа изменено. Поэтому при использовании МК типа PIC18F27Q43 и аналогичных на это следует обратить внимание.

Добавлено after 1 minute 55 seconds:
Porta equ 0xf80

Чудовищное безобразие. :facepalm: У каждой модели МК есть INC-файл. Присоединяете его проекту и пользуетесь определенными в нем именами.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 12:21:30 
Первый раз сказал Мяу!

Зарегистрирован: Ср янв 18, 2023 13:01:27
Сообщений: 35
Рейтинг сообщения: 0
Чудовищное безобразие. :facepalm: У каждой модели МК есть INC-файл. Присоединяете его проекту и пользуетесь определенными в нем именами.

Да я знаю про это, меня уже разок ткнули лицом. :?
Но это потом, а сейчас хочу понять элементарную вещь, а то стыдно так, жуть просто. До этого в avr немного программировал, там с этим делом проще простого, а тут... :?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 12:21:48 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2962
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
В догон.
Вот так следует начинать листинг исходника на MPASM для PIC18:
Код:
;----------
   list      p=pic18f25k20
   #include <P18F25K20.INC>
;----------
; CONFIGURATION WORD SETUP
;----------
#define   swp   ON
     ;Setup CONFIG11H
     CONFIG FOSC = HSPLL, FCMEN = OFF, IESO = OFF
     ;Setup CONFIG2L
     CONFIG PWRT = ON, BOREN = OFF, BORV = 30
     ;Setup CONFIG2H
     CONFIG WDTEN = swp, WDTPS = 256
     ;Setup CONFIG3H
     CONFIG MCLRE = ON, HFOFST = OFF, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = PORTC
     ;Setup CONFIG4L
     CONFIG STVREN = OFF, LVP = OFF, XINST = OFF, DEBUG = OFF
     ;Setup CONFIG5L
     CONFIG CP0 = swp, CP1 = swp, CP2 = swp, CP3 = swp
     ;Setup CONFIG5H
     CONFIG CPB = swp, CPD = swp
     ;Setup CONFIG6L
     CONFIG EBTR0 = OFF
     ;Setup CONFIG6H
     CONFIG EBTR1 = OFF
     ;Setup CONFIG7L
     CONFIG EBTR2 = OFF
     ;Setup CONFIG7H
     CONFIG EBTR3 = OFF
;----------
   udata_acs
count0xCC   res 1
count0x33   res 1
time_alarm   res 1
time_flash   res 1
result      res 1
adjust      res 1
sum_L      res 1
sum_H      res 1
temp      res 1
temp0      res 1
temp1      res 1
cnt_sloop   res 1
cnt_dly_connect   res 1
cnt_flash   res 1
flags      res 1
;----------
alarm_on         equ   0   ;
ADC_ready         equ   1   ;
jamming_on         equ   2   ;
req_on_off_RS485      equ   3   ;
RS485_on         equ   4   ;
;----------
buf1   udata_ovr 0x100
arrCurrent   res 64
;----------
buf2   udata_ovr 0x200
arrTime      res 64
;----------



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 13:56:14 
Первый раз сказал Мяу!

Зарегистрирован: Ср янв 18, 2023 13:01:27
Сообщений: 35
Рейтинг сообщения: 0
Благодарю за пример. А у Вас нет кода для pic18 с настроенными портами, чтобы на примере разобраться, для меня так проще. А то я искал в инете, везде в основном с 16 пиками. Мне самый простой, чтобы при наличии 1 на входе появлялась бы 1 на выходе.

Добавлено after 18 minutes 42 seconds:
Вроде бы разобрался. Я неправильно порт А инициализировал. Сейчас пробую правильно прописать, вроде что-то получается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как считать байт с портов pic18?
СообщениеДобавлено: Чт мар 02, 2023 14:45:19 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2962
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24840
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
чтобы на примере разобраться

Поскольку во всех PIC18 имеется железная отладка, проще всего ее включить (через PICkit, естественно) и наблюдать что и как переключается и настраивается.
Что касается PORTA, то единственной блокировкой его работы может быть включенная по умолчанию аналоговая функция пинов. Так как в разных МК имеются различия в инициализации. то гораздо конструктивнее будет озвучить тип МК и проблему с точностью до пина.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y