Перейти к содержанию

PIC16F628A помогите написать программу


Максим Павленко

Рекомендуемые сообщения

Задача в следующем
Есть два светодиода и кнопка
Нужно чтобы при нажатии кнопки, светодиоды поочередно светились, при повторном нажатии кнопки - светодиоды тухнут. 

Кнопка -> порт А5 
Светодиоды А1 и А2

int a;
void main() {
PORTA = 0;                 // Инициализация PORTA
TRISA = 0b11111001;                 // Настройка PORTA как выход   0 and 0 are diodes

                                                                                        /* PORTA |= (1<<1);             
                                                                                         PORTA |= (1<<2); */
    
while(1) {                                     
         if PORTA |= (PORTA.F5<<2);
                  a =
}
}

 Тема программирования микроконтроллеров заинтересовала, но пока что все упирается в незнание синтаксиса Си  :(
Заранее спасибо

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Засуньте в вечный цикл , и будет работать так как надо. Порта2 и 3 выходы. Пина5 - кнопка.

Int flags=0;

if(PINA&(1<<5)==0) flags=1;

if(flags)

{

if(PORTA&(1<<2)==0)

{ PORTA|=(1<<2); 

PORTA&=~(1<<3);}

else

{ PORTA&=~(1<<2);

PORTA|=(1<<3); }

}

else

{

PORTA&=~(1<<2);

PORTA&=~(1<<3);

}

delay_ms(100);

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Спасибо большое. 
Подскажите пожалуйста PINA это тоже самое что и PORTA я так понял? (вначале кода) if(PINA&(1<<5)==0) flags=1;

Изменено пользователем Falconist
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Изучите регистры своего микроконтроллера . Код приведен для атмега аттини микроконтроллеров .

У пиков там чуток по другому . У pic там TRISA PORTA , а у некоторых может быть GPIOA .Я сразу не посмотрел какой у вас микроконтроллер

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

29.02.2020 в 01:03, Максим Павленко сказал:

Задача в следующем
Есть два светодиода и кнопка

На выбранный Вами компилятор есть мануал и есть хедер для этого контроллера, где Вы найдете структуру порта с именами элементов этой структуры. Чтобы не выдумывать самому эти имена.

Во вторых, кнопка всегда имеет дребезг, поэтому требуется программное подавление этого дребезга заключающееся в том, что опрос кнопки нужно проводить с интервалом превышающем время этого дребезга - то есть примерно 30...50 мс. Иначе нажатия на кнопку будут восприниматься как многократные с произвольным их числом.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

#pragma config MCLRE = ON // MCLR pin enable         
void main() {
  TRISA = 0b11111001;
  PORTA = 0b00000000;

  while (1)
  {

  if (RA5_BIT = 1) {          

          RA1_BIT = ~RA1_BIT;        
          delay_ms(100);                
          RA1_BIT = ~RA1_BIT;             
          delay_ms(100);                 
          RA2_BIT = ~RA2_BIT;             
          delay_ms(100);                 
          RA2_BIT = ~RA2_BIT;             
          delay_ms(100);                 
          }
  else
{
           RA1_BIT = 0;
         RA2_BIT = 0;
         delay_ms(100);
}
}
}

Ребята, вот код, который в Proteus выдает следующее:

Нажимаешь кнопку и держишь  нажатие (1) -> диоды поочередно моргают
Отпускаешь кнопку, -> диоды тухнут. 

Как мне сделать следующее, чтобы когда один раз нажимаю и отпускаю кнопку диоды моргали, при повторном однократном нажатии диоды тухли.
( Код сделан в MikroC -> PIC16F628A )

Уже голова закипела. Нужно же как то использовать переменную для запоминания состояния кнопки, но как это организовать - не пойму 

И еще вопрос насчет MCLRE, нужен ли этот конфиг тут?   --->  #pragma config MCLRE = ON

Ссылка на комментарий
Поделиться на другие сайты

55 минут назад, Максим Павленко сказал:

Как мне сделать следующее, чтобы когда один раз нажимаю и отпускаю кнопку диоды моргали, при повторном однократном нажатии диоды тухли.

читать https://forum.cxem.net/index.php?/topic/183908-как-подружить-attiny-2313-и-биполярный-шаговый-двигатель/&do=findComment&comment=2690436

https://forum.cxem.net/index.php?/topic/210783-помощь-с-кодом/&tab=comments#comment-3196257

 

до полного просветления.

ЗЫ эта архи сложная задача подымается на форуме каждые две-три недели.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Я вскрываю металлической линейкой. Очень часто у таких блоков есть паз вдоль шва, туда вставляю линейку по всей длине шва и как рычагом вскрываю корпус. Если вначале немного промять корпус вдоль шва (бывает достаточно пальцами), то шансы легко вскрыть значительно увеличиваются.
    • При включении в ранее опубликованном виде устройство стало генератором. Частота до 140кГц, на индуктивности размах (от мин. до макс.) до 20В при напряжении на испытуемом БП ~3В. Добавил несколько конденсаторов, в том числе как рекомендовали Z_VIP и Starichok. Немного изменил номиналы резистора в компараторе. Удалил шунтирующее сопротивление на резисторе регулятора тока. Компаратор буду еще отлаживать - в приведённой ниже схеме срабатывает при 4В, но не не отпускает при отсутствии напряжения.  Ограничение тока выставил на 4А. Регулировка тока плавная от 0 до  4А. Выставленный ток стабильный при изменении напряжения от 1В до 10В. Напряжение выше 10В пока не поднимал. Ниже 0,95В ток снижается пропорционально напряжению. Схема в приложении. Все изменения-дополнения делал на существующей плате навесным монтажом. Позже выложу актуальную разводку. Отлаживал с транзисторами AP60T30 (ранее выкладывал фото транзисторов на радиаторе) - без обдува при комнатной температуре длительно держат 20Вт (10В, 2А) при температуре радиатора ~40гр.C. Приобрёл транзисторы IRFP460. С радиатором пока не определился. Схема и фото отладки на текущий момент времени. На фото стрелочный прибор - амперметр с током полного отклонения 6А. и в DipTrace:  
    • Ведь этож надо... такое совпадение. И я тоже делаю без сверлений. Более того, прилагаю фото имеющихся у меня  "хоть чуток острых предметов", несмотря на наличие которых, столь несложный и общедоступный  способ зачистки, к.м.к.  имеет право на демонстрацию в данной теме. Вдруг кому-то пригодится... Тем более, что тема простаивает аж с марта, будто на белом свете нет ничего, что можно было бы сюда  разместить,  хотя бы для сведения. 
    • В описании сказано, что МК включится после размыкания кнопки включения.
    • Мои слова ни как не относятся к тому куску кода Знаете что такое функция, аргумент, результат?
    • Устройство сделано на базе МК ATtiny44A. Так как девайс нужен был мобильный, то в качестве индикатора был выбран модуль ЖКИ на НТ1621. Схема устройства: Так как питание девайса 3 В, то пришлось на плате дисплея заменить резистор контрастности и резистор подсветки ЖКИ. R1 установил 4,7 кОм в место 20 кОм, а R2 в место 100 Ом поставил 300 Ом. Прошивка для МК: test_LCD.hex МК тактируется на заводских установках (от внутреннего генератора 1 МГц.)   Аккумулятор Li-ion 1100 мАч. В качестве зарядного устройства, используется модуль ТР4056.   При полной зарядке аккумулятора, устройство работает без подзаряда около 27 дней. Индикатор на дисплее, помогает визуально контролировать уровень заряда для последующей подзарядки аккумулятора. При напряжении на аккумуляторе ниже 3,4 В подсветка индикатора гаснет для снижении потребляемого тока. Подсветка гаснет и в ночное время (при недостаточном освещении), чтобы свет дисплея не мешал во время сна.
    • @korsaj Ну согласно твоих слов и этот код примерно тоже самое и получается. Я и не вижу особых отличий. Но нужно только как то доработать чтоб оно работало. В том то всё и дело что оно не работает. А учитывая как раз таки что мне нужны будут определённые фрагменты где хранятся данные, то это очень хорошее решение, но нужно его доработать до рабочего состояния.
×
×
  • Создать...