#define IN0 PIND.0 // Сигнал -15dB
#define IN1 PIND.1 // Сигнал -9dB
#define IN2 PIND.2 // Сигнал -3dB
#define IN3 PIND.3 // Сигнал 0dB
#define IN4 PIND.4 // Сигнал +3dB
К выводам PC0-PC4 подключена мс ULN2003 (для коммутации реле).Чтобы ею управлять,необходим высокий уровень на выходе.
#define U0 PORTC.0 // 160В
#define U1 PORTC.1 // 175В
#define U2 PORTC.2 // 190В
#define U3 PORTC.3 // 205В
#define U4 PORTC.4 // 220В
На вход AN6884 подается аудиосигнал
Необходимо сделать так,чтобы при отсутствии сигналов на входах PD0-PD4 на выходах PC0-PC4 были низкие уровни
При 0 на входе PD0 на выводах PC0-PC4 были высокие уровни
При 0 на входе PD1 на выходах PC1-PC4 были высокие уровни
При 0 на входе PD2 на выходах PC2-PC4 были высокие уровни
При 0 на входе PD3 на выходах PC3-PC4 были высокие уровни
При 0 на входе PD4 на выходе PC4 был высокий уровень
Код: Выделить всё
/*****************************************************
Project :
Chip type : ATmega8
*****************************************************/
#include <mega8.h>
#include <delay.h>
void Init(void)
// Функция инициализации контроллера
{
PORTB=0x00;DDRB=0x00; PORTC=0x00;DDRC=0x1F; PORTD=0x1F;DDRD=0x00;
// Timer/Counter 0
TCCR0=0x00; TCNT0=0x00;
// Timer/Counter 1
TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;
// Timer/Counter 2
ASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;
// External Interrupt(s)
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s)
TIMSK=0x00;
// Analog Comparator
ACSR=0x80;SFIOR=0x00;
}
#define IN0 PIND.0 // Сигнал -15dB
#define IN1 PIND.1 // Сигнал -9dB
#define IN2 PIND.2 // Сигнал -3dB
#define IN3 PIND.3 // Сигнал 0dB
#define IN4 PIND.4 // Сигнал +3dB
// Выходы (индикация)
#define U0 PORTC.0 // 160В
#define U1 PORTC.1 // 175В
#define U2 PORTC.2 // 190В
#define U3 PORTC.3 // 205В
#define U4 PORTC.4 // 220В
//----------
void main(void)
{
Init(); // Инициализация контроллера
// Основной цикл
start: while (!(IN0))
{
U0=0;
U1=1;
U2=1;
U3=1;
U4=1;
}
while ((!IN1))
{
U0=0;
U1=0;
U2=1;
U3=1;
U4=1;
}
while ((!IN2))
{
U0=0;
U1=0;
U2=0;
U3=1;
U4=1;
}
while ((!IN3))
{
U0=0;
U1=0;
U2=0;
U3=0;
U4=1;
}
while ((!IN4))
{ U1=0;
U2=0;
U3=0;
U4=0;
}
goto start;
}