Описание алгоритма работы главной программы main()

При включении питания микроконтроллер начинает выполнение программы с функции main(). В ней описаны команды инициализации контроллера: настройка АЦП на порт RA0, настройка LCD-дисплея (4-х разрядная шина данных, 2 сточки, последовательное перемещение курсора), конфигурация портов на ввод и на вывод, разрешение прерываний от порта В и таймера 0. Далее происходит зацикливание при помощи бесконечного цикла while(1), в теле которого происходит проверка управляющих флагов и в зависимости от состояния этих флагов осуществляется вызов соответствующих процедур и сброс состояния флага.

Листинг программы

#include <pic.h>

#define PORTBIT (adr, bit) ((unsigned) (&adr)*8+ (bit))bit RS @ PORTBIT (PORTC, 6);bit RW @ PORTBIT (PORTC, 5);bit E @ PORTBIT (PORTC, 4);probel=0x20 ;//0x20; //0x5Fint _time=0,_settime, _time1=0,_time2=0,_time3=0,_time4=0;char status=0, temperature, settemperature=50, regim=1, subregim=0, mig=0;char d1=0, d2=0, d3=0, d4=0, d5=0, d6=0, kl=0, displayed=1;

//Функция корректировки представления времениCorrectTime(unsigned int &ttime)

{(ttime>24*60-1)

{ttime=_time1=_time2=_time3=_time4=0;

}

}

//Функция корректирования температурыCorrectTemperature(unsigned char &ttemperature)

{(ttemperature>99) ttemperature=99;(ttemperature<30) ttemperature=30;

}

//ПаузаWait(uchar kk)

{(kk--);

}

//Читаем из индикатораchar ReadInd(void)

{char DATA;=0x0F;//на ввод 4мл бита порта

RW=1;=1;=(PORTC&&0x0F)<<4;//считываем 4ст. бита=0;=1;=DATA||(PORTC&&0x0F);//считываем 4мл бита=0;=0;(DATA);

}

//Записываем в индикатор код

void WriteInd(uchar Dann)

{stDann, mlDann;=Dann&&0xF0;//старшие тетрады=Dann&&0x0F;//младшие тетрады=0;=0;=PORTC&&0xF0;//очищаем 4мл бита порта С=PORTC||stDann;//передаём 4ст бита

E=1;=0;=PORTC&&0xF0;//очищаем 4мл бита порта С=PORTC||mlDann;//передаём 4мл бита=1;=0;=0x0F;

}

//Проверка готовности индикатораCheck(void)

{DATA;//описали переменную DATA типа uchar

RS=0;

{=ReadInd();<<=1;

}(CARRY);//если бит переноса равен 1,то индикатор не готов

}WriteData(uchar kod)

{(20);

Check();=1;(kod);//записать в индикатор код

}WriteCommand(uchar kod)

{(20);//пауза(20 машинных циклов)();//проверить состояния индикатора=0;(kod);//записать в индикатор код

RS=1;

}

//Вывод на дисплейDisplay(int i)

{(_time);(settemperature);(_settime);

WriteCommand(0x01);//(00000001)очистка экрана

// -------Вывод 1-го режима------------

if (i==1) {(status==1)

{(0x4f); //O(0x6E); //n(probel); //_

} else

{(0x4f); //O(0x66); //f(0x66); //f

}(0x7c); //|(probel); //_(0x54); //T(0x69); //i(0x6D); //m(0x65); //e(0x3A); //:(probel); //_(0x30+(_time/60)/10); //desyatki chasov(0x30+(_time/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time%60)/10); // desytki minut(0x30+(_time%60)%10); // edinitsy minut

//вторая строка(0x54); //T(0x65); //e(0x6D); //m(0x70); //p(0x65); //e(0x72); //r(0x61); //a(0x74); //t(0x75); //u(0x72); //r(0x65); //e(0x3A); //:(probel); //_(0x30+temperature/10); // desyatki temperatury(0x30+temperature%10); // edinitsy temperatury((temperature<settemperature)||(mig==0))(probel); //_(0x21); //!

Перейти на страницу: 1 2 3 4

Прочтите также:

Субмикронные полевые транзисторы с барьером Шоттки
Характерные размеры современных полупроводниковых приборов могут быть значительно меньше 1 мкм. В таких условиях длина прибора может стать сравнимой со средней длиной свободного пробега ...

Планирование кинозала
Зрительный зал кинотеатра является основным помещением и от его формы и размеров зависит экономическая часть и техника кинопоказа из-за дешевизны в строительстве выбирается прямоугольная ...

Система управления роботизированной платформой перемещения предметов
Несмотря на то что современная технология переводит все на уровень сверхбольших чипов и микросхем и в большинстве случаев ремонт представляет собой замену блоков или в крайнем случае чип ...

Основные разделы

2022 © Все права защищены! >> www.techeducator.ru