Сенсорный выключатель

Модератор: boogyman

Ответить
Аватара пользователя
Maxim
Любитель
Сообщения: 11
Зарегистрирован: 23 окт 2016, 00:32

Сенсорный выключатель

#1

Сообщение Maxim »

autor: antonchip
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-го сенсора
			}
	}	
}
Последний раз редактировалось Maxim 16 май 2017, 00:44, всего редактировалось 1 раз.
Аватара пользователя
Maxim
Любитель
Сообщения: 11
Зарегистрирован: 23 окт 2016, 00:32

Re: Сенсорный выключатель

#2

Сообщение Maxim »

К сообщению №1
Протеус 8.1
Добавления

Изображение

Изображение
Ответить