Здравствуйте, коллеги! Столкнулся с проблеммой при работе с портом А PIC18F25K80 не работает чтение порта. Проверено на двух устройствах. На криворукость не думать. Смотрел листинг программы, сам пишу на Си. Там четко перевод входов на вход и чтение откуда надо. Порты В и С читает. После танцев с бубном Перепаял на 18F2520 (цоколёвка позволяет) и сразу всё заработало. Хотелось узнать , чего я не знаю. Или баг.
Да, забыл указать -Выдача с порта идёт. Когда меняю назначение входов естественно. Но вот замена на 18f2520 без всякой перестройки программы( только добавил 2520.h) решило проблему. Вашу версию буду проверять.Спасибо.
Причем тут ADC? Речь идет о регистрах порта. И зачем искать функцию, если есть название регистра? Возможно в компиляторе он называется ANSELA. Ну и на дорожку. Вы когда с МК работаете, даташит на него открываете? Кроме даташита на МК есть хедер на него в папках компилятора.
REGISTER 23-8: ANCON0: A/D PORT CONFIGURATION REGISTER 0
bit 7-0 ANSEL<7:0>: Analog Port Configuration bits (AN7 and AN0)(1) 1 = Pin configured as an analog channel: digital input disabled and any inputs read as ‘0’ 0 = Pin configured as a digital port
Код:
ANCON0 = 0x00; // set all analog pins to digital mode
Здравствуйте, veso74! Да похоже в этом всё и дело. В 2520 этого регистра нет. Потому и работает. Осталось понять, как к нему попасть через Си. Могу конечно через АСМ. Пока микросхемы сдул. и напаял другие 18F2520. Поди угадай где за этими настройками на Си стоит функция перевода в цифру. Спасибо за науку.
Это не шутка. В Си это можно сделать только АСМ вставку, что не хотелось. Типа acm ANCON0=0 end acm Буду разбираться. Ещё раз спасибо.
Что за чушь? ANCON0=0; - это Си. В АСМ нет такого синтаксиса. В АСМе это присвоение будет таким: clrf ANCON0 или movlw 0x00 movwf ANCON0 И это без учета управления секциями ОЗУ. Вы даже в слове asm делаете ошибку ЗЫ. Впрочем, я знаю истоки такой чуши. У вас не присоединен хедер контроллера к проекту и потому компилятор ничего не знает про регистры МК.
то используете CCS для PIC? Ето так? --- Если да, то объявите порт как IO с помощью макросов/функций CCS
Код:
#use fast_io (port) или #use standard_io (port) или #use fixed_io (port_outputs=pin, pin?)
Если всe же нужны регистры, есть и такой вариант
Код:
#byte ANCON0 = 0xF5D ... ANCON0 = 0x00;
--- Не знаю: вопросы о программном коде без информации о программном коде - это просто догадки ... В общем, дайте информацию о том, с чем вы работаете: среда написания кода IDE, компилятор, предоставьте копию/фрагмент инициализации, скриншот, иначе это будет похоже на "взгляд фокусника в хрустальный шар" ... (частично пользуюсь переводчиком БГ->РУ)
Последний раз редактировалось veso74 Пт окт 10, 2025 14:01:40, всего редактировалось 2 раз(а).
Коллеги, доброй ночи! Два дня посвятил чтению документации. Да , проглядел. Каюсь. Си немного разбаловал. Пользуюсь CCS. Сделал ряд конструкций на ней , порт А на выход везде. А тут влип. Итоговая вставка, Всё заработало.
Код:
#asm movlw 0x00 movwf ANCON0,1 #endasm
В кампиляторе была попытка это сделать, есть команда с синтаксисом, но описано не внятно. И не указано как перевести в цифровые входы. Только как в аналоговые. и не работает. Но есть конечно , вопросы.
Код:
#define ANCON0 0xF5d;
С точки зрения АСМ вы не можете присвоить ANCON0 в команде movwf ANCON0,1 такой адрес.
Код:
MOVWF Move W to f Syntax: MOVWF f {,a} Operands: 0 < f < 255 a [0,1] Operation: (W) в f
Однако работает с 0xF5d. Банки , как оказалось. роли не играют. При переключении банков всё пишется в нулевой, если адрес 0x5d . Спросить только на форуме можно. Мои знакомые не в теме. Ещё раз большое спасибо.
Коллеги, доброй ночи! Два дня посвятил чтению документации. Да , проглядел. Каюсь. Си немного разбаловал. Пользуюсь CCS. Сделал ряд конструкций на ней , порт А на выход везде. А тут влип.
Вы не то читаете видимо. Зачем так сложно, если есть базовая команда:
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения