Составляем программу МК 12F629

Слайд 2

Состав микроконтроллера PIC16

Состав микроконтроллера PIC16

Слайд 3

Задача №3 Пишем программу для устройства полива цветов. Этапы решения читаем

Задача №3

Пишем программу для устройства полива цветов.

Этапы решения

читаем PDF.
Читаем

схему электрическую принципиальную
Составляем блок схему программы
Пишем код по блок схеме
Программируем
Слайд 4

Читаем схему включения

Читаем схему включения

Слайд 5

Составляем блок схему программы Полив по датчику

Составляем блок схему программы

Полив по датчику

Слайд 6

Пишем код #include __CONFIG(0x00b4);// b4- внутр кварц , MCLR void Delay(int

Пишем код

#include
__CONFIG(0x00b4);// b4- внутр кварц , MCLR
void Delay(int count)
{
int

i;
for(i = 0; i < count; i++)
{
i++;
i--;
}
}
void main(void)
{
unsigned int time_on=0; //время полива
int LOOP=0; //круги
char sek=0; //секунды
char min=0; //минуты
char chas=0; //часы
char currstat=0; //текущее состояние
char prevstat=0; //предшествующее состояние
CMCON=7; //компаратор выкл
Слайд 7

WPU = 0; T0IE=0; TMR0=0; GIE=0; TRISIO=0b001011; //1-вход, 0-выход GPIO=0b000000; Delay(200);

WPU = 0;
T0IE=0;
TMR0=0;
GIE=0;
TRISIO=0b001011; //1-вход, 0-выход
GPIO=0b000000;

Delay(200);
while(1)
{
LOOP++;
if((GPIO & 0b000001) == 1) // проверяем наличие внешнего питания
GPIO = ((GPIO & 0b101111) | ((sek&1)<<4));
else GPIO = (GPIO & 0b101111);
currstat = GPIO;
if (((currstat & 0b000001) == 1)&&((prevstat & 0b000001) == 0)) //фронт внешнего питания
{
sek = 0; // сброс таймера по фронту внеш питания
min = 0;
chas = 0;
}

Пишем код

Слайд 8

prevstat=currstat; if((GPIO & 0b000001) == 1) // проверяем наличие внешнего питания

prevstat=currstat;
if((GPIO & 0b000001) == 1) // проверяем наличие внешнего питания
{

if((chas == 0)&&(sek == 10)&&(min == 0))
time_on=8; // питание есть
if((chas == 8)&&(min == 0)&&(sek == 10))
time_on=8;
GPIO = (GPIO & 0b111011); //выкл притание датчика
}
else {
GPIO = (GPIO | 0b000100); //вкл притание датчика
if((GPIO & 0b000010)==2) // 0-мокро, 1-сухо. и питанеия нет
time_on = 5;
}
if (time_on > 0)
GPIO = (GPIO | 0b100000);
else GPIO = (GPIO & 0b011111);

Пишем код