Чтение онлайн

ЖАНРЫ

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

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

Шрифт:

}

break;

case 0x7F: //PB7 "S-MUTE" (0111_1111)

if (process_valid_input_PORTB(new_PORTB)) {

mute_toggle;

}

break;

default:; //all other cases

} //конец switch(new_PORTB)

 } //конец if new_PORTB

 old_PORTB=new_PORTB; //update PORTB

}

//******************************************************************

//process_PORTA_input_task:определяется
выбранный вход от PORTA

//******************************************************************

void process_PORTA_input_task(void) {

 new_PORTA = PORTA; //Читать PORTA

 if (new_PORTA != old_PORTA) { //выбор входа по состоянию порта PORTA

switch (new_PORTA) { //PORTA переводится в высокое состояние

case 0x01: //РАО "R-PREAMP-PWR" (0000_0001)

if (process_valid_input_PORTA(new_PORTA)) {

preamp_off;

keep_going=0;

}

break;

case 0x02: //PA1 R-PHONO" (0000_0010)

if (which_input != 1) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 1;

change_input;

}

}

break;

case 0x04: //PA2 "R-CD" (0000_0100)

if (which_input != 2) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 2;

change_input;

}

}

break;

case 0x08: //РАЗ "R-TUNER" (0000_1000)

if (which_input != 3) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 3;

change_input;

}

}

break;

case 0x10: //PA4 "R-TAPE#1" (0001_0000)

if (which_input != 4) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 4;

change_input;

}

}

break;

case 0x20: //PA5 "R-TAPE#2M (0010_0000)

if (which_input != 5) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 5;

change_input;

}

}

break;

case 0x40: //PA6 "R-ДОПОЛНИТЕЛЬНЫЙ КАНАЛ" (0100_0000)

if (which_input != 6) {

if (process_valid_input_PORTA(new_PORTA)) {

which_input = 6;

change_input;

}

}

break;

case 0x80: //PA7 "R-MUTE" (1000_0000)

if (process_valid_input_PORTA(new_PORTA)) {

mute_toggle;

}

break;

default:; //all other cases

} //конец switch(new_PORTA)

 }//конец if new_PORTA

 old_PORTA = new_PORTA; //изменяется
состояние PORTA

}

//******************************************************************

//initialize_timer:установка частоты таймера обслуживающего счетчик

//******************************************************************

void initialize_timer(void) {

 TMSK2 = 0x05; //установка на 250 КГц

 TSCR = 0x80; //разрешение работы таймера

}

//******************************************************************

//initialize_ports: начальная конфигурация портов

//******************************************************************

void initialize_ports(void) {

 DDRA=0x00; //конфигурация PORTA в качестве входного

 PORTA=0x00; //запрет на подключение подтягивающих резисторов в PORTA

 DDRB=0x00; //конфигурация PORTB в качестве входного

 PORTB=0xff; //разрешение подключения подтягивающих резисторов в PORTB

 DDRT=0xff; // конфигурация PORTT в качестве выходного

 PORTT=0x00; // установка на низкий уровень

 DDRP=0xff; // конфигурация PORTD в качестве выходного

 PORTP=0xff // установка на высокий уровень

}

//******************************************************************

//******************************************************************

//initialize_pins: установка отдельных выводов

//******************************************************************

void initialize_pins(void) {

 PORTT=0x01; //сброс реле PT0(1) 5 мс импульс с

 // активным уровнем (0000_0001)

 //delay_5ms:

 PORTT=0x00;

}

//******************************************************************

Поделиться с друзьями: