задержка включения и выключения на 8-й меге
Добавлено: 11 янв 2015, 16:50
изучаю азы программирования, научился включать и мигать светодиодом. теперь попытался сделать задержку включения и выключения для трех независимых "каналов". но что-то не так, нет стабильности.
использую Atmel Studio 6
Можно ли еще как-то организовать задержку включения и выключения в 3-х каналах?
Код: Выделить всё
#include <avr/io.h>
/***функция задержки***/
void wait1 (void)
{
TCNT1 = 0;
while (TCNT1 < 7812){};
}
int main(void)
{
DDRC = 0x00; // Порт C вход
PORTC = 0xFF; // подключаем внутренние подтяг. резисторы
DDRD = 0xFF; // Порт D выход
PORTD = 0x00; // Лог. 0 на выходе
// Настройка таймера
TCCR1A = 0x00;
TCCR1B = (1 << CS12)|(0 << CS11)|(1 << CS10); //выбор коэффициента предделителя clk/1024
while(1)
{
//управление 1
if(PINC&(1 << PC0)) // Проверяем наличие сигнала PC0
{
PORTD &= ~(1 << PD0); // нагрузка отключена
wait1(); // Задержка
}
else
{
PORTD |= (1 << PD0); // нагрузка включена PD0
//wait1(); // Задержка
}
//управление 2
if(PINC&(1 << PC1)) // Проверяем наличие сигнала PC1
{
PORTD &= ~(1 << PD1); // нагрузка отключена
wait1(); // Задержка
}
else
{
PORTD |= (1 << PD1); // нагрузка включена PD1
//wait1(); // Задержка
}
//управление 3
if(PINC&(1 << PC2)) // Проверяем наличие сигнала PC2
{
PORTD &= ~(1 << PD2); // нагрузка отключена
wait1(); // Задержка
}
else
{
PORTD |= (1 << PD2); // нагрузка включена PD2
wait1(); // Задержка
}
}
}
Можно ли еще как-то организовать задержку включения и выключения в 3-х каналах?