mod: maxvest
12.05/2017
ATtiny 2313/ MOC3063/ BT136-600D
Код: Выделить всё
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
void preset()
{
DDRD = 0x0F; //младший нимбл PORTD настроен на ВХОД /лог.1/
PORTD = 0x0F; //на младшем нимбле подтянуты внутренние "pull-up" резисторы /лог.1/
DDRB = 0xFF; //PORTB целиком настроен на ВЫХОД /лог.1/
PORTB = 0xF0; //на старшем нимбле лог. 1 /горят индикаторы при выключенном свете/, на младшем нимбле лог.0 /пины управляют светом - свет везде выключен/
}
int main(void)
{
preset();
while(1)
{
/*BUTTON1=================================================*/
if((PIND&(1 << PD0)) == 0) // если 1-я кнопка нажата
{ while((PIND&(1 << PD0)) == 0){} // ждем отпускания кнопки
_delay_ms(50);
PORTB ^= (1 << PB0); // включаем свет и ореол подсветки 1-го сенсора
PORTB ^= (1 << PB4); // гасим индикатор 1-го сенсора
}
/* BUTTON2================================================*/
if((PIND&(1 << PD1)) == 0) // если 2-я кнопка нажата
{while((PIND&(1 << PD1)) == 0){} // ждем отпускания кнопки
_delay_ms(50);
PORTB ^= (1 << PB1); // включаем свет и ореол подсветки 2-го сенсора
PORTB ^= (1 << PB5); // гасим индикатор 2-го сенсора
}
/*BUTTON3=================================================*/
if((PIND&(1 << PD2)) == 0) // если 3-я кнопка нажата
{while((PIND&(1 << PD2)) == 0){} // ждем отпускания кнопки
_delay_ms(50);
PORTB ^= (1 << PB2); // включаем свет и ореол подсветки 3-го сенсора
PORTB ^= (1 << PB6); // гасим индикатор 3-го сенсора
}
/* BUTTON4================================================*/
if((PIND&(1 << PD3)) == 0) // если 4-я кнопка нажата
{while((PIND&(1 << PD3)) == 0){} // ждем отпускания кнопки
_delay_ms(50);
PORTB ^= (1 << PB3); // включаем свет и ореол подсветки 4-го сенсора
PORTB ^= (1 << PB7); // гасим индикатор 4-го сенсора
}
}
}