Пт сен 21, 2018 16:10:35
Пт сен 21, 2018 16:25:05
Вт сен 25, 2018 12:00:58
#include <pic.h>
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS );
#define uph1 RB0 // Вверх щуп
#define pump1 RA0 // Помпа
#define auto1 RA1 // Клапан автоподкачки
#define downh1 RB1 // Низ щуп
#define head RA2 // Тен
#define flap RA3 // Клапан группы
#define flapvalve RA7 // Клапан горячий воды
#define h1 RB2 // Кнопки
#define h2 RB3 // *
#define h3 RB4 // *
#define h4 RB5 // *
#define h5 RB6 // *
#define h6 RB7 // Кнопки
#define exitmk2 RA6
#define DLITUD 25 // Таймер задерэки
#define _XTAL_FREQ 4000000
char es1 (void); // Программа кнопи
char es2 (void); // Программа кнопи
char es3 (void); // Программа кнопи
char es4 (void); // Программа кнопи
char es5 (void); // Программа кнопи
char es9 (void); // Программа кнопи
void es8 (void); // Программа щуп
bit h1DOUN, h2DOUN, h3DOUN, h4DOUN, h5DOUN;
char timerpovtor01,timerpovtor02,timerpovtor03, timerpovtor04,timerpovtor05;
bit NAG;
int counter;
void main (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b11111111; // направление работы ножек порта В
CMCON = 0b11111111; // отключение компараторов
PORTA = 0b00000011; // очищаем порт А
PORTB = 0b11111111; // очищаем порт Б
RBPU = 0; // подтягивающие R (0-вкл, 1-выкл)
while(1)
{
if(es1()==1) // Если присвоили "1" то
{
flap = 1; // Включается Клапан группы // Запускается клапан группы (Порт RA3 = 1)
pump1 = 1; //Включается Помпа // Запускается помпа (Порт RA0 = 1)
//exitmk2 = 0;
}
else if(es1()==2) // Если присвоили "2" то
{
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0)
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
if(es2()==1)
{
flap = 1; // Включается Клапан группы
pump1 = 1; //Включается Помпа
}
else if(es2()==2) // Если присвоили "2" то
{
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0)
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
if(es3()==1)
{
flap = 1; // Включается Клапан группы
pump1 = 1; //Включается Помпа
}
else if(es3()==2) // Если присвоили "2" то
{
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0)
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
if(es4()==1)
{
flap = 1; // Включается Клапан группы
pump1 = 1; //Включается Помпа
}
else if(es4()==2) // Если присвоили "2" то
{
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0)
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
if(es5()==1)
{
flapvalve = 1; // Включается Клапан группы
pump1 = 1; //Включается Помпа
}
else if(es5()==2) // Если присвоили "2" то
{
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0)
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
es8 (); // Функция Клапана горячий воды
}
}
char es1 (void) // Программа 1 кнопки
{
if (h1==0) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if (h1==0) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor01&&!h1DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor01=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие, присваиваем "1" для "if es1"
}
else if (h1==0) // Иначе
{
timerpovtor01--; //
if(!timerpovtor01) //
{
timerpovtor01=DLITUD; //
h1DOUN=1; //
return 2; // удержание кнопки, присваиваем "2" для "else if es1"
}
return 0; // ожидание отработки таймера
}
}
/*else
{
/*__delay_ms(10000); // ? Не получается сделать задержку через timerpovtor06
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0) // ? Не могу обраться к функции "else if(es1()==2)" через "return 2"
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
*/
}
h1DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor01=0;
return 0;
}
char es2 (void)
{
if (h2==0)//&&(auto1==0)) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if (h2==0)//&&(auto1==0)) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor02&&!h2DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor02=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие
}
else if (h2==0)
{
timerpovtor02--; //
if(!timerpovtor02) //
{
timerpovtor02=DLITUD; //
h2DOUN=1; //
return 2; // удержание кнопки
}
return 0; // ожидание отработки таймера
}
}
}
h2DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor02=0;
return 0;
}
char es3 (void)
{
if (h3==0) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if (h3==0) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor03&&!h3DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor03=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие
}
else if (h3==0)
{
timerpovtor03--; //
if(!timerpovtor03) //
{
timerpovtor03=DLITUD; //
h3DOUN=1; //
return 2; // удержание кнопки
}
return 0; // ожидание отработки таймера
}
}
else
{
__delay_ms(15000); // ? Не получается сделать задержку через timerpovtor06
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0) // ? Не могу обраться к функции "else if(es1()==2)" через "return 2"
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
}
h3DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor03=0;
return 0;
}
char es4 (void)
{
if (h4==0) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if ((h4==0)&&(auto1==0)) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor04&&!h4DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor04=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие
}
else if (h4==0)
{
timerpovtor04--; //
if(!timerpovtor04) //
{
timerpovtor04=DLITUD; //
h4DOUN=1; //
return 2; // удержание кнопки
}
return 0; // ожидание отработки таймера
}
}
else
{
__delay_ms(10000); // ? Не получается сделать задержку через timerpovtor06
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0) // ? Не могу обраться к функции "else if(es1()==2)" через "return 2"
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
}
h4DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor04=0;
return 0;
}
char es5 (void)
{
if (h5==0) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if (h5==0)//&&(auto1==0)) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor05&&!h5DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor05=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие
}
else if (h5==0)
{
timerpovtor05--; //
if(!timerpovtor05) //
{
timerpovtor05=DLITUD; //
h5DOUN=1; //
return 2; // удержание кнопки
}
return 0; // ожидание отработки таймера
}
}
else
{
__delay_ms(10000); // ? Не получается сделать задержку через timerpovtor06
flap = 0; // Включается Клапан группы // Отключается клапан группы (Порт RA3 = 0) // ? Не могу обраться к функции "else if(es1()==2)" через "return 2"
pump1 = 0; //Включается Помпа // Отключается помпа (Порт RA0 = 1)
}
}
h5DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor05=0;
return 0;
}
void es8 (void)
{
if (uph1==0)
{
_delay(5000); // ожидаем 10 мс, пропускаем дребезг
if (uph1==0&&NAG==0) // снова тестируем состояние порта и флага "кнопка была нажата" // Программа кнопки 1 - Эспрессо мал иначе если h3=1
{ // то
NAG=1;
head = 1;
auto1 = 0; // Включается Клапан группы
pump1 = 0; //Включается Помпа
counter++;
}
else if (uph1==0)
{
_delay(5000);
if (uph1==0&&NAG==0)
{
NAG=1;
// auto1 =1;
// pump1 =1;
counter--;
}
}
else
{
auto1 = 1;
pump1 = 1;
head = 0;
NAG=0;
}
}
}
Вт сен 25, 2018 13:04:41
Вт сен 25, 2018 17:54:46
Ср сен 26, 2018 11:24:21
Ср сен 26, 2018 12:15:25
Button= h1; // опросили кнопку для первоначальной установки переменной
while(1)
{
_delay_ms(10); // для подавления дребезга кнопки
oldButton= Button; // предыдущее состояние кнопки
Button= h1; // текущее состояние кнопки
if(oldButton && !Button) // момент нажатия кнопки
{
if(DataTimer) DataTimer= 0; // если кнопка нажата во время работы таймера, то останавливаем таймер
else DataTimer= 555; // если таймер стоял, то запускаем его
// число 555 соответствует 555*10мсек= 5550мсек= 5,55 сек таймера
}
if(DataTimer) --DataTimer;
}
Ср сен 26, 2018 14:13:53
Button= h1; // опросили кнопку для первоначальной установки переменной
while(1)
{
_delay_ms(10); // для подавления дребезга кнопки
oldButton= Button; // предыдущее состояние кнопки
Button= h1; // текущее состояние кнопки
if(oldButton && !Button) // момент нажатия кнопки
{
if(DataTimer) DataTimer= 0; // если кнопка нажата во время работы таймера, то останавливаем таймер
else DataTimer= 555; // если таймер стоял, то запускаем его
// число 555 соответствует 555*10мсек= 5550мсек= 5,55 сек таймера
}
if(DataTimer) --DataTimer;
}
Ср сен 26, 2018 15:24:28
while(1)
{
_delay_ms(10); // для подавления дребезга кнопки
...
}
Пт сен 28, 2018 10:33:20
while(1)
{
_delay_ms(10); // для подавления дребезга кнопки
...
}
Пт сен 28, 2018 11:28:02
Пт сен 28, 2018 11:31:15
Button= h1; // опросили кнопку для первоначальной установки переменной
while(1)
{
_delay_ms(10); // для подавления дребезга кнопки
oldButton= Button; // предыдущее состояние кнопки
Button= h1; // текущее состояние кнопки
if(oldButton && !Button) // момент нажатия кнопки
{
if(DataTimer) DataTimer= 0; // если кнопка нажата во время работы таймера, то останавливаем таймер
else DataTimer= 555; // если таймер стоял, то запускаем его
// число 555 соответствует 555*10мсек= 5550мсек= 5,55 сек таймера
}
if(DataTimer) --DataTimer;
}
Пт сен 28, 2018 11:46:30
Пт сен 28, 2018 11:54:33
Пт сен 28, 2018 12:03:13
Пт сен 28, 2018 16:47:52
Пт сен 28, 2018 17:50:53
Пт сен 28, 2018 18:20:33
dosikus писал(а):... о вертикальных счетчиках...
Пт сен 28, 2018 18:37:19
Пт сен 28, 2018 18:51:59