delay_5ms();
PORTT &= ~0x02; // выключается PT1(0)
PORTP = 0x7E; //гасятся все светодиоды
PORTP &= ~0x02; //включается светодиод 1 (0)
}
//******************************************************************
//CD_task: конфигурируется вход от CD
//******************************************************************
void CD_task(void) {
//CD
PORTT |= 0x04; // устанавливается PT2(1) (0000_0100)
delay_5ms();
PORTT &= ~0x04; // выключается PT2(0)
PORTP |= 0x7E; //гасятся все светодиоды
PORTP &= ~0x04; // включается светодиод 2 (0)
}
//******************************************************************
//tuner_task: конфигурируется вход от тюнера
//******************************************************************
void tuner_task(void) {
//TUNER PORTT |= 0x08; // устанавливается PT3(1) (0000_1000)
delay_5ms();
PORTT & = 0x08; // выключается PT3(0
PORTP |= 0x7E; //гасятся все светодиоды
PORTP &= ~0x08; // включается светодиод 3 (0)
}
//******************************************************************
//tape1_task: конфигурируется вход от магнитофона 1
//******************************************************************
void tape1_task(void) {
//TAPE#1
PORTT |= 0x10; //assert PT4(1) (0001_0000)
delay_5ms();
PORTT &= ~0x10; // выключается PT4(0)
PORTP |= 0x7E; //гасятся все светодиоды
PORTP &= ~0x10; // включается светодиод 4 (0)
}
//******************************************************************
//tape2_task: конфигурируется вход от магнитофона 2
//******************************************************************
void tape2_task(void) {
//TAPE#2
PORTT |= 0x20; // устанавливается PT5(1) (0010_0000)
delay_5ms();
PORTT &= ~0x20; // выключается PT5(0)
PORTP |= 0x7E; //гасятся все светодиоды
PORTP & = ~0x20; // включается светодиод 5 (0)
}
//******************************************************************
//aux_task: конфигурируется вход от дополнительного канала
//******************************************************************
void aux_task(void) {
//ДК
PORTT |= 0x40; // устанавливается PT6(1) (0100_0000)
delay_5ms();
PORTT &= ~0x40; // выключается PT6(0)
PORTP |= 0x7E; //гасятся все светодиоды
PORTP &= ~0x40; // включается светодиод 6(0)
}
//******************************************************************
//activate_power_relay_task(): включается реле силового питания
//******************************************************************
void activate_power_relay_task(void) {
PORTT |= 0x80; // устанавливается PT7(1) импульсом 10 мс
delay_5ms();
delay_5ms();
PORTT &= ~0x80; // выключается PT7
}
//******************************************************************
//process_PORTB_input_task(): определяется выбранный вход от PORTB
//******************************************************************
void process_PORTB_input_task(void) {
new_PORTB = PORTB; //read PORTB
if (new_PORTB != old_PORTB) { //считывание состояния порта PORTB
switch(new_PORTB) { //PORTB устанавливается на низкий уровень
case 0xFE: //PB0 "S-PREAMP-PWR" (1111_1110)
if (process_valid_input_PORTB(new_PORTB)) {
preamp_off();
keep_going=0;
}
break;
case 0xFD: //PB1 "S-PHONO" (1111_1101)
if (which_input !=1) {
if (process_valid_input_PORTB(new_PORTB) {
which_input = 1;
change_input();
}
}
break;
case 0xFB: //PB2 "S-CD" (1111_1011)
if (which_input!=2) {
if (process_valid_input_PORTB(new_PORTB)) {
which_input = 2;
change_input();
}
}
break;
case 0xF7: //PB3 "S-TUNER" (1111_0111)
if (which_input != 3) {
if (process_valid_input_PORTB(new_PORTB)) {
which_input = 3;
change_input();
}
}
break;
case 0xEF: //PB4 "S-TAPE#1" (1110_1111)
if (which_input != 4) {
if (process_valid_input_PORTB(new_PORTB)) {
which_input = 4;
change_input();
}
}
break;
case 0xDF: //PB5 "S-TAPE#2" (1101_1111)
if (which_input != 5) {
if (process_valid_input_PORTB(new_PORTB)) {
which_input = 5;
change_input();
}
}
break;
case 0xBF: //PB6 "S-AUX" (1011_1111)
if (which_input != 6) {
if (process_valid_input_PORTB(new_PORTB)) {
which_input = 6;
change_input();
}
}
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
Читать дальше