Програмування мікроконтролера я б назвав подієво-орієнтованим Відбуваються деякі події в зовнішньому світі, які може «побачити» мікроконтролер (вірніше, програма, завантажена в нього) Наприклад, якщо на бампері рухається робота встановлений кінцевий датчик, підключений до цифрового входу мікроконтролера, то при зіткненні робота з перешкодою датчик спрацює, замикаючи контакти На цю подію мікроконтролер (програма) відреагує тим, що робот зупиниться, відїде назад, повернеться і продовжить рух

У випадку з датчиками такого роду, а це може бути не тільки кінцевий датчик на бампері, ясно, що зміна стану датчика – це подія, що вимагає відповідної реакції пристрою Але що можна сказати, покладемо, про вольтметрі на базі мікроконтролера

І в цьому випадку, коли вбудований модуль АЦП закінчує вимір напруги, це теж подія, що вимагає уваги з боку контролера Можна відразу вивести значення напруги на індикатор Можна справити кілька вимірів і вивести на індикатор середнє значення Навіщо отримувати середнє значення

Справа в тому, що вимірюючи постійна напруга, ми маємо справу не зовсім з постійною напругою Згадаймо, постійна напруга – це напруга, яке визначить постійний струм через навантаження, тобто, струм, який не буде змінюватися ні за величиною, ні за напрямком Візьмемо батарейку і лампочку кишенькового ліхтаря Якщо ми включимо ліхтар і будемо спостерігати за ним досить довго, то переконаємося, що напруга на лампочці буде зменшуватися Батарейка розряджається Але струм при цьому змінюється за величиною Тобто, такий струм, строго кажучи, не назвеш постійним Мало того, опір лампочки буде змінюватися При зменшенні струму через лампочку змінюється розсіюється на ній потужність, змінюється температура спіралі, а з нею міняється опір спіралі

Звичайно, АЦП проводить процес вимірювання напруги дуже швидко Але в реальному пристрої відбуваються різні процеси, що впливають на зміни струму Будь-яке джерело живлення, батарейка або акумулятор, мають внутрішній опір, на якому утворюється падіння напруги, нехай невелике, але все-таки А змінюється струм сформує змінне падіння напруги Та й сам процес вимірювання може мати деякі мінливі від вимірювання до вимірювання варіації значення Так що, усереднити отримані дані корисно

Але зараз нас не дуже цікавить вольтметр Важливіше інше – навіть до виміру напруги можна підійти з наступною схемою: відбулася подія, програма повинна обробити цю подію

Приклад такої подієво-орієнтованої програми можна знайти в керівництві до IE-ROBOPIC

void main()

{

Sound_Init (& PORTC, 0) / / Ініціалізація Звукового сигналу while (1)

{

if ( PORTAF4) / / Тестування стану кнопки RA4 sound_play (250,50) / / Видача звукового сигналу 2кГц на висновок RC0

}

}

Давайте перевіримо цю програму, а потім обговоримо її

Рис 391 Створення та трансляція програми в MicroC PRO Для першої перевірки я використовую Proteus

Рис 392 Перевірка роботи програми

У динаміках компютера чути звук при кнопці Програма працює Тепер макетна плата .. Завантажую програму за допомогою PICkit2 Натискаючи кнопку, я чую звук з динаміка на макетної платі

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012