Вход/Регистрация
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
вернуться

Пак Дэниэл Дж.

Шрифт:

Рис. 5.11. Функциональная схема аппаратных средств для примера 5.3.3

/*----------------------------------------------------------------------*/

/*filename: debounced_swith.c */

/*осуществляет опрос 8 переключателей с программной защитой от дребезга */

/*выполняет специальные действия для каждого нажатого переключателя */

/*зажигает зеленый светодиод в разряде активизированного переключателя */

/*----------------------------------------------------------------------*/

/*подключаемые файлы*/

#include <912b32.h>

/*используемые функции*/

int process_valid_input(unsigned char input_value); //управление

//процессом опроса в реальном времени

void initialize_ports(void); //инициализация портов

void timer_init(void); //инициализация таймера

//глобальные переменные

int keep_going=1; //переменная цикла

unsigned char old_PORTB= 0xff; //предыдущее значение порта PORTB

unsigned char new_PORTB; //новое значение порта PORTB

void main{void) {

 initialize_ports;

 timer_init;

 while(keep_going) {

new_PORTB=PORTB; //читать порт PORTB

if (new_PORTB != old_PORTB) {

//выполнять, если значение порта изменилось

swith(new_PORTB) {

case 0xFE: //переключатель PB0

if (process_valid_input(new_PORTB)) //процедура

//антидребезга

{ //выполнять действия, связанные

: //с нажатием клавиши PB0

:

PORTC = 0х01;//зажечь зеленый в разряде PB0

keep_going = 1;

}

break;

case 0xFD: // переключатель PB01

if (process_valid_input(new_PORTB)) // процедура

// антидребезга

{ //выполнять действия, связанные

: //с нажатием клавиши PB1

PORTC = 0х02; //зажечь зеленый в разряде PB1

keep_going = 1;

}

break;

case 0x7F: // переключатель PB7

if (process_valid_input(new_PORTB)) // процедура

//антидребезга

{ //выполнять действия, связанные

: //с нажатием клавиши PB7

PORTC = 0х80; //зажечь зеленый в разряде PB7

keep_going = 1;

}

break;

default:

; //аll other cases

} //окончание распозвания, какая клавиша нажата (switch(new_PORTB))

} //окончание обработки нажатой клавиши (if new_PORTB)

old_PORTB = new_PORTB; //обновить PORTB

 } //окончание (while(keep_going))

} //окончание (main)

/*-----------------------------------------------------------------*/

/* Функция void initialize_ports устанавливает режим работы портов */

/*-----------------------------------------------------------------*/

void initialize_ports(void) {

 DDRC=0xff; //порт PORTC на вывод

 PORTC=0x00; //выходы порта PORTC в 0, зажгутся красные светодиоды

  • Читать дальше
  • 1
  • ...
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: