Да как раз это и помогло, попробовал сделать инверсию, тут же все заработало) И да решил все таки через 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-выкл)
}