Jump to content
BonTens86

Подключение тактовой кнопки к PIC

Recommended Posts

Доброго времени суток господа!) Вопрос к знатокам, начал изучать С++, писать начал на PIC16F628A, по мере изучения столкнулся с несколькими проблемами, первая это нужна помощь с подключением тактовой кнопки к PIC, суть проблемы в том, что при нажатии кнопки светодиод загорается, если нажать еще раз, то ничего не происходит.... Вопрос в том, как сделать выключение на эту же кнопку???? 



unsigned char CheckButton(void)
{
unsigned char result=0;
unsigned int butcount=0;
while(!RB2)
{
if(butcount < 10000)
{
butcount++;
}
else
{
result = 1;
break;
}
}
return result;
}


void kkk2 (void)
{
if(CheckButton ())
{
RB3 = 1;
{
//__delay_ms(100);
}
return;
}
}

 

Share this post


Link to post
Share on other sites

a) кидайте полный код

б) навскидку (код особо не смотрел) - сделайте инверсию вывода 

в) изучайте лучше мк авр

Share this post


Link to post
Share on other sites
8 минут назад, Grig96 сказал:

a) кидайте полный код

б) навскидку (код особо не смотрел) - сделайте инверсию вывода 

в) изучайте лучше мк авр

Да как раз это и помогло, попробовал сделать инверсию, тут же все заработало) И да решил все таки через if else делать
Щас другая проблема возникла, почему то работает только одна кнопка и все.... Остальные просто загораться не хотят, что ни так, ума не приложу

Как то С больше понравился))

 

#include <pic.h>
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS );

#define uph1 RB0 // Вверх щуп
#define pump RA0 // Помпа
#define auto1 RA1 // Клапан автоподкачки
#define downh2 RB1 // Низ щуп
#define head RA2 // Тен
#define kk1 RB2 // Кнопка 1 - Эспрессо мал
#define kk2 RB3 // Кнопка 2 - Эспрессо большой
#define kk3 RB4 // Кнопка 3 - Американо мал
#define kk4 RB5 // Кнопка 4 - Американо большой 
#define kk5 RB6 // Кнопка 5 - Горячая вода
#define kk6 RB7 // Кнопка 6 - Программирование времени работы кнопок - ???
#define exitkk1 RA3 // Выход кнопки 1 
#define exitkk2 RA4 // Выход кнопки 2
#define exitkk3 RA5 // Выход кнопки 3
#define exitkk4 RA6 // Выход кнопки 4
#define exitkk5 RA7 // Выход кнопки 5
#define _XTAL_FREQ 4000000

void podgot (void); // Подготовка МК
void down (void); // Щуп низ 
void up (void); // Щуп вверх
void kkk1 (void); // Программа кнопки 1 - Эспрессо мал
void kkk2 (void); // Программа кнопки 2 - Эспрессо большой 
//void kkk3 (void); // Программа кнопки 3 - Американо мал
// void kkk4 (void); // Программа кнопки 4 - Американо большой
// void kkk5 (void); // Программа кнопки 5 - Горячая вода
// void kkk6 (void); // Программирование времени работы кнопок - ???

bit NAG;
int counter;

void main (void)
{
podgot();
while(1)
{
up (); //Функция Вверх щупа
down (); //Функция Низ щупа
kkk1 (); //Функция Кнопки 1
kkk2 (); //Функция Кнопки 2 
}
} 

void kkk1 (void) // Программа кнопки 1
{
if (kk1==0)	// тестируем состояние порта
{
__delay_ms(100); // ожидаем 10 мс, пропускаем дребезг
if (kk1==0&&NAG==0) // снова тестируем состояние порта и флага "кнопка была нажата"
{  // если уровень низкий и клавиша, до этого не была нажата" выполняем код в скобках
NAG=1; // устанавливаем флаг кнопка нажата
exitkk1=!exitkk1; // переключаем свечение светодиода
counter++;
}
}	
else if (kk1==0)	// тестируем состояние порта
{
__delay_ms(100); // ожидаем 10 мс, пропускаем дребезг
if (kk1==0&&NAG==0) // снова тестируем состояние порта и флага "кнопка была нажата"
{  // если уровень низкий и клавиша, до этого не была нажата" выполняем код в скобках
NAG=1; // устанавливаем флаг кнопка нажата
exitkk1=!exitkk1; // переключаем свечение светодиода
counter--;
}
}
else
{
NAG=0; // сбросить флаг "кнопка нажата" - исходя из логики
}
}

void kkk2 (void) // Программа кнопки 2
{
if (kk2==0)	// тестируем состояние порта
{
__delay_ms(100); // ожидаем 10 мс, пропускаем дребезг
if (kk2==0&&NAG==0) // снова тестируем состояние порта и флага "кнопка была нажата"
{  // если уровень низкий и клавиша, до этого не была нажата" выполняем код в скобках
NAG=1; // устанавливаем флаг кнопка нажата
exitkk2=!exitkk2; // переключаем свечение светодиода
counter++;
}
}	
else if (kk2==0)	// тестируем состояние порта
{
__delay_ms(100); // ожидаем 10 мс, пропускаем дребезг
if (kk2==0&&NAG==0) // снова тестируем состояние порта и флага "кнопка была нажата"
{  // если уровень низкий и клавиша, до этого не была нажата" выполняем код в скобках
NAG=1; // устанавливаем флаг кнопка нажата
exitkk2=!exitkk2; // переключаем свечение светодиода
counter--;
}
}
else
{
NAG=0; // сбросить флаг "кнопка нажата" - исходя из логики
}
}

void up (void) //Программа вверх щупа
{
if (uph1 = 0) //Если, щуп не замкнут на землю, то
{
pump = 1; //Включение помпы
auto1 = 1; //Включение клапана автоподкачки
}
else //Если, уровень воды достиг до щупа и замкнул цепь на землю, то
{
pump = 0; //Выключение помпы
auto1 = 0; //Выключение клапана автоподкачки
}
}

void down (void)//Программа низ щупа
{
if (downh2 = 1) //Если, щуп замкнут на землю
{
head = 0; //Выключение тена
}
else //Если, вода наже уровня, то
{
head = 1; //Включение тена
}
}

void podgot (void) //Подготовка МК
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b11111111; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0b00000000; // очищаем порт А
PORTB = 0b00000000; // очищаем порт Б
RBPU = 0;  // подтягивающие R (0-вкл, 1-выкл)
}

 

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Я конечно не спец, но не понятно, что это "кнопка" и "выход  кнопки"

 и это

В 04.06.2018 в 14:49, BonTens86 сказал:

PORTA = 0b00000000; // очищаем порт А

PORTB = 0b00000000; // очищаем порт Б

насколько я знаю, вы все выхода, куда вы подключили кнопки, устанавливаете в "0".

И что получится?

И что у вас в реале на схеме?

Share this post


Link to post
Share on other sites
Posted (edited)

ТС появлялся последний раз 10 июля 2018 года, т.е. сдал и забыл. Итого: ничего не получится и ничего в реале.

Edited by солар

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

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

Подробнее...

Дату видел, но начинающим, ищущим свои пути, наверное  нужно сразу указывать на ошибки.:)

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By pribor458
      Куплю изделия:
       
      Микропереключатели МП-10В  500-1000шт.
      Клистроны усилительные КИУ-102
      Магнетроны импульсные МИ-513  20шт.
      Кнопки 2КР
      Видиконы ЛИ-501-1МК
      Тиратроны ртутные ТР1-6/15  45шт.
      Триоды 1504-Г  52шт.
      Лампы генераторные ГМ-4Б
      Распределители ГА163Т/16
      Тиратроны ртутные ТР1-6/15
      Модули СВЧ 1ГИ11/01-1
      Конденсаторы КП1-12А 4кВ 10-1200пФ
       
      Лампы генераторные:
      ГУ-39Б-1
      ГУ-61Б
      ГУ-71Б
       
      Микросхемы 590КН13 (золото)  100шт.
       
      Лампы генераторные:
      ГМ-4Б
      ГУ-68А
       
      Реле электромагнитные ТКЕ54ПОДГ
      Фильтры перестраиваемые ФФЛК3-5
       
      Конденсаторы:
      ЭЭВК-0,8-10У3
      ЭЭПВП-0,8-10 У3
       
      Магнетроны МИ-176  40шт.  дорого
       
       
      Россия, Москва:
      Конт. тел. +7-495-260-12-54
      Украина, Львов:
      Конт. тел. +38-050-410-57-87
      pribor458@gmail.com

    • By pribor458
      Куплю изделия:
       
      Микросборки С1.151.ПУ2
      Контакторы постоянного тока КМ4100 24В
      Переключатели нажимные П4НГ-15К
      Фоторезисторы охлаждаемые ФРО-139
       
      Преобразователи манометрические:
      ПМТ-2
      ПМТ-4М
       
      Кнопки 2КР
      Клистроны усилительные КУ-153-1
      Лампы бегущей волны УВ-420
      Выключатели путевые ВПФ11-01-062100-54У2
       
       
      Россия, Москва:
      Конт. тел. +7-495-260-12-54
      Украина, Львов:
      Конт. тел. +38-050-410-57-87
      pribor458@gmail.com

    • By Andrey2
      Куплю приборы:
       
      Ротаметры Р50/20
      Пиранометры М-115М
      Реле электромагнитные 8Э18  дорого  срочно
      Кнопки командные КН-П  100шт.
       
      Пластины керамические ВК-96:
      60х48х1мм  75шт.
      60х48х0,5мм  75шт.
       
      Комплексы гидрологические ГРС-3, ГРС-3М  очень дорого  срочно
      Динамометры ДОСМ-3-500У (на 500кН)
      Интерферометры шахтные ШИ-11
      Аппараты переговорные АП-КМ
       
       
      Также покупаю любые б/у и новые электро- и радиоизмерительные приборы в СНГ. Возможен самовывоз. Предлагайте.
       
      Россия, Москва:
      Конт. тел. +7-495-374-54-18, Виктор
      Конт. тел. +7-925-667-33-89, VIBER, WHATSAPP
      Украина, Львов:
      Конт. тел. +38-050-370-91-94, Андрей
      Казахстан, Алматы:
      Конт. тел. +7-727-346-98-00
      prylad@gmail.com
      Skype: prylad

    • Guest Сергей
      By Guest Сергей
      Добрый день. Обращаюсь с просьбой помочь определить название кнопки левой и правой кнопки компьютерной мыши Microsoft Arc Mouse. Мышка очень понравилась, уже 10 лет пользуюсь. Но есть большая проблема - через некоторое время начинает плохо срабатывать левая кнопка мыши (срабатывает через раз или нужно сильнее нажимать). Мне приходится разбирать мышь и кнопку, протирать там всё спиртом, хватает примерно на месяц. Даже уже менял с правой кнопкой. В общем решил заказать на алиэкспрессе эти кнопки, но по тем комплектам кнопок, которые там продаются, нужных мне нет. А по названию кнопки искать не могу, т.к. его я не знаю.
      На фото кнопка в собранном и разобранном виде. Может кто узнает её.



    • By Lil Sandwich
      Здравствуйте, столкнулся с проблемой блока питания от маяка-233. Достался отдельно от всего магнитофона, в нем выпаяна кнопка включения. 
      В данный момент есть идея использовать этот БП в другом усилителе, но наугад подключать трансформатор страшно. Если у кого-то есть возможность пояснить принцип подключения, прошу помочь.
  • Сообщения

    • Проанализировав прочитанное в этой теме языкочесание, я пришёл к выводу, что совершил ошибку, открыв подобную тему.  Ошибку я уже исправил и нашёл способ, как не тратить время на дискуссии с "теоретиками". Теперь я , читая темы самодельщиков на различных радио форумах, которые выставляют там схемы различных конструкций , предлагаю желающим повторить выставленную конструкцию набор радиодеталей для её сборки. Заказы на комплектации уже пошли. А эту тему прошу администрацию или закрыть,  или - вообще снести, как неконструктивную.
    • Посоветуйте схему унч на П605-х, спс. 
    • Собрать НЧ бокс с Э_ОС и там все будет... И кишки трястись, и мурашки, и штаны ходуном на теле... Все это без какого-либо бубнежа, если грамотно собрать. При этом нужен просто хорошо собранный усилитель в этот бокс, а СЧ-ВЧ можно наперебираться по усилителям...
    • Можно протеусом (ломанным) заменить . Kомпас 3d Домашний - недорого стоит .  
    • Прочитайте внимательней! Сверху Вашей цены докинуть 2-3 тыс.! У кого Червонец в кармане на покупку Осцила -2-3 докинуть не проблема, и взять в 10 раз лучше Вашего!.. И кстати я нашёл за 3,5, с экраном чуть поменьше Вашего, в остальном лучше, но и тут меня жаба задавила, потому что Грамотный человек говорит - возьми лучше Китайский Карманный за эти деньги...
    • Я вилки стачиваю со штангельциркулем до старого стандарта и у меня дома все розетки тугие. Сейчас розетки без пружин и от толстых вилок "рашепериваются". После этого тонкие там болтаются. Пару микроволновок с электронным управлением приносили. Горит микроконтроллер из - за подгоревшей розетки. Самое прикольное, что один из владельцев работает электриком. В начале, когда у аппарата гарантия - включаю через переходник. Так там вроде не просто L - C контур, а взаимно компенсирующие обмотки, т.е. встречно - параллельно намотанные. Первый раз слышу про слышу про источник помех от фильтра от помех.
×
×
  • Create New...