Сб окт 06, 2018 19:19:01
/*
* Project name:
|<A...y> (PIC12F675)
* Copyright:
(c) <A...7,
v.1.0 - (Start(21.07.2015) and Finish(25.07.2015))>
* Revision History:
<versionNo> - 1.0
*/
#include <pic.h>
//PIC12F675
#include <htc.h>
#include <delay.c>
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
#define OpenTR3 TRIS0 //Открытие тр-ра #3(7-ая нога МК(GP0/AN0)).
#define OpenTR2 TRIS1 //Открытие тр-ра #2(6-ая нога МК(GP1/AN1/VREF)).
#define OpenTR1 TRIS2 //Открытие тр-ра #1(5-ая нога МК(GP2/T0CKI/INT/AN2)).
#define KnopkaStop GPIO3 //Аварийное отключение(4-ая нога МК(GP3/$MCLR$)).
#define KnopkaDown GPIO4 //Понижение темперетуры(3-ья нога МК(GP4/$T1G$/OSC2/AN3))).
#define KnopkaUp GPIO5 //Повышение темперетуры(2-ая нога МК(GP5/T1CKI/OSC1)).
__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);
//----------
//unsigned int g,k,s;
unsigned char i;
//----------
void ZX1(void) //Подготовка МК.
{
TRISIO = 0b111111;//Направление работы ножек порта(1-вход, 0-выход).
CMCON = 0x07; //Отключение компараторов.
GPIO = 0b000111; //Очищаем порт(0-приём напряж., 1-подача напряж.).
WPU4 = 1; //Подтягивающий резистор(1-вкл., 0-откл.).
WPU5 = 1; //Подтягивающий резистор(1-вкл., 0-откл.).
ANSEL = 0b000101; //Настройка аналогового входа.
i = 1;
}
//----------
void main(void)//Начало программы.
{
ZX1(); //Вызов функции подготовки МК.
while(1) //Бесконечный цикл.
{
MT: if (KnopkaUp==1)//Повышение темперетуры.
{
if(i==1)//1
{
i=2;
OpenTR2=1;
OpenTR3=1;
OpenTR1=0;
DelayMs(500);
goto MT;
}
if(i==2)//2
{
i=3;
OpenTR1=1;
OpenTR3=1;
OpenTR2=0;
DelayMs(500);
goto MT;
}
if(i==3)//3
{
OpenTR1=1;
OpenTR2=0;
OpenTR3=0;
DelayMs(500);
goto MT;
}
}
if(KnopkaDown==1)//Понижение темперетуры.
{
if(i==3)//2
{
i=2;
OpenTR1=1;
OpenTR3=1;
OpenTR2=0;
DelayMs(500);
goto MT;
}
if(i==2)//1
{
i=1;
OpenTR2=1;
OpenTR3=1;
OpenTR1=0;
DelayMs(500);
goto MT;
}
if(i==1)//OFF
{
OpenTR1=1;
OpenTR3=1;
OpenTR2=1;
DelayMs(500);
goto MT;
}
}
if(KnopkaStop==1)//Аварийное отключение.
{
i=1;
TRISIO = 0b111111;
DelayMs(1);
return;
}
DelayMs(5);//Задержка 0,005 сек.
}
}
Сб окт 06, 2018 20:48:31
Сб окт 06, 2018 22:59:51
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;
}
Вс окт 07, 2018 05:44:52
Вс окт 07, 2018 18:59:26
XL1: if (KnopkaUp){goto XL1;}
MT: if (KnopkaUp==1)//Повышение темперетуры.
{
DelayMs(10);//Для подавления дребезга кнопки.
if (KnopkaUp)
{
if(i==0||i==1||i==2)
{
i++;
XL1: if (KnopkaUp){goto XL1;}
}
if(i==1)//1
{
OpenTR2=1;
OpenTR3=1;
OpenTR1=0;
DelayMs(10);
goto MT;
}
if(i==2)//2
{
OpenTR1=1;
OpenTR3=1;
OpenTR2=0;
DelayMs(10);
goto MT;
}
. . .
Пн окт 08, 2018 10:30:05
Пн окт 08, 2018 11:05:00
pyzhman писал(а):...чтобы при долгом нажатии все тэны сразу не включились?...
При долгом нажатии чего? какой кнопки?
#define KnopkaDown GPIO4 //Понижение темперетуры(3-ья нога МК(GP4/$T1G$/OSC2/AN3))).
#define KnopkaUp GPIO5 //Повышение темперетуры(2-ая нога МК(GP5/T1CKI/OSC1)).
Пн окт 08, 2018 11:14:01
Пн окт 08, 2018 12:29:01
pyzhman писал(а):Что-то я не могу понять, что за беда с подключением ТЭНов. По идее должна быть общая масса, а реле должны подключать соответствующий ТЭН. Не?
__________
Просчитал по положениям реле (все 8 возможных состояний). Полная ахинея получается.
Пн окт 08, 2018 13:04:33
Пн окт 08, 2018 13:35:47
Пн окт 08, 2018 13:44:21
Пн окт 08, 2018 15:18:36
Пн окт 08, 2018 19:14:13
Аlex писал(а):Alexander90h, глюкнет ваше изобретение при первых же включениях ТЕН'ов.
Аlex писал(а):Поставьте тумблеры и не занимайтесь ерундой. МК тут явно излишен.
Вт окт 23, 2018 09:16:36
Вы правы, гораздо проще поставить пару тумблеров, наверное так и сделаю...
Вт окт 23, 2018 13:00:49
настоящие практические навыки, создания цифровых систем контроля и управления