Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2017, 11:47   #81
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
блин а почему у тебя на выходах переключателя единицы? у меня или нольили ничего
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 11:52   #82
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

вот пояему так вроде подключено одинаково да и код одинаковый
Изображения
Тип файла: jpg Безымянный1.jpg (99.6 Кб, 103 просмотров)
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 11:55   #83
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Создать в STUDIO другой проект, а в свойствах Atmeg8 укажи путь к новому проекту.
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 11:59   #84
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А лучше всё удали и построй схему заново.
Может быть есть какие-то настройки... переключателя или МК???
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 12:05   #85
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
А лучше всё удали и построй схему заново.
Может быть есть какие-то настройки... переключателя или МК???
всё работает нормально осталось сопоставить первую часть и вторую
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 12:09   #86
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от scccorp Посмотреть сообщение
всё работает нормально осталось сопоставить первую часть и вторую

Цитата:
Сообщение от ura_111 Посмотреть сообщение
А лучше всё удали и построй схему заново.
Может быть есть какие-то настройки... переключателя или МК???
теперь получился вот полный код
Код:
#include <avr/io.h>
#include <util/delay.h>


char flag = 0;
char count = 0;

void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void switchLed7 ()
{
	PORTD ^=0b10000000;// инвертируем значение на ножке
}

void checkButt()
{
	
	if ((PINB==0b00011101)||(PINB==0b00001101)) //защита
	{
		if (!(PINB==0b00011101)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed6();// выполняем действие
				}
				count++;
			}
			else count = 0;

		}
	}
	
	
	if ((PINB==0b00011111)||(PINB==0b00001111)) //защита
	{
		
		
		if (!(PINB==0b00011111)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed7();// выполняем действие
				}
				count++;
			}
			else count = 0;
		}
	}
}

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b00000000;
	PORTB=0b00011111;
	while (1)
	{
		  _delay_ms(100);
		  if(PINB==0b00000100)
		  {
			  PORTD=0b00000001;
			  continue;
		  }
		  else
		  {
			  PORTD=0x00;
		  }
		  if (PINB==0b00001100)
		  {
			  PORTD=0b00000010;
			  continue;
		  }
		  if(PINB==0b00000010)
		  {
			  PORTD=0b00000100;
			  continue;
		  }
		  if (PINB==0b00000110)
		  {
			  PORTD=0b00001000;
			  continue;
		  }
		  if(PINB==0b00001001)
		  {
			  PORTD=0b00010000;
			  continue;
		  }
		  if (PINB==0b00001010)
		  {
			  PORTD=0b00100000;
			  continue;
		  }
		  
		  //PORTB = 0b00000000;
		checkButt();
	}
}
но 6 и 7 диод с 1-вой частью программы не работают что может его блочить?
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 13:21   #87
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Код:
#include <avr/io.h>
#include <util/delay.h>


char flag = 0;
char count = 0;

void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void switchLed7 ()
{
	PORTD ^=0b10000000;// инвертируем значение на ножке
}

void checkButt()
{
	
	if ((PINB==0b00011101)||(PINB==0b00001101)) //защита
	{
		if (!(PINB==0b00011101)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed6();// выполняем действие
				}
				count++;
			}
			else count = 0;

		}
	}
		
	if ((PINB==0b00011111)||(PINB==0b00001111)) //защита
	{	
		
		if (!(PINB==0b00011111)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed7();// выполняем действие
				}
				count++;
			}
			else count = 0;
		}
	}
}

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b00000000;
	PORTB=0b00011111;
	while (1)
	{
		_delay_ms(10);	
		if ((PINB==0b00011101)||(PINB==0b00001101)||(PINB==0b00011111)||(PINB==0b00001111))
		{
			checkButt();			
		}						
		else
		{
		
		if(PINB==0b00000100)
		{
			PORTD=0b00000001;
			continue;
		}
		if (PINB==0b00001100)
		{
			PORTD=0b00000010;
			continue;
		}
		if(PINB==0b00000010)
		{
			PORTD=0b00000100;
			continue;
		}
		if (PINB==0b00000110)
		{
			PORTD=0b00001000;
			continue;
		}
		if(PINB==0b00001001)
		{
			PORTD=0b00010000;
			continue;
		}
		if (PINB==0b00001010)
		{
			PORTD=0b00100000;
			continue;
		}
		PORTD = 0b00000000;
		}
	}
}
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 13:34   #88
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Код:
#include <avr/io.h>
#include <util/delay.h>


char flag = 0;
char count = 0;

void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void switchLed7 ()
{
	PORTD ^=0b10000000;// инвертируем значение на ножке
}

void checkButt()
{
	
	if ((PINB==0b00011101)||(PINB==0b00001101)) //защита
	{
		if (!(PINB==0b00011101)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed6();// выполняем действие
				}
				count++;
			}
			else count = 0;

		}
	}
		
	if ((PINB==0b00011111)||(PINB==0b00001111)) //защита
	{	
		
		if (!(PINB==0b00011111)) //проверяем на лог.0
		{
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed7();// выполняем действие
				}
				count++;
			}
			else count = 0;
		}
	}
}

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b00000000;
	PORTB=0b00011111;
	while (1)
	{
		_delay_ms(10);	
		if ((PINB==0b00011101)||(PINB==0b00001101)||(PINB==0b00011111)||(PINB==0b00001111))
		{
			checkButt();			
		}						
		else
		{
		
		if(PINB==0b00000100)
		{
			PORTD=0b00000001;
			continue;
		}
		if (PINB==0b00001100)
		{
			PORTD=0b00000010;
			continue;
		}
		if(PINB==0b00000010)
		{
			PORTD=0b00000100;
			continue;
		}
		if (PINB==0b00000110)
		{
			PORTD=0b00001000;
			continue;
		}
		if(PINB==0b00001001)
		{
			PORTD=0b00010000;
			continue;
		}
		if (PINB==0b00001010)
		{
			PORTD=0b00100000;
			continue;
		}
		PORTD = 0b00000000;
		}
	}
}
да ты волшебник
огромное спасибо. возьму такой способ себе на заметку
только что означает "||"??
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 13:52   #89
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Это из разряда:

1.jpg


которое ты учишь...
Но означает этот значёк и его функция в коде:

https://www.youtube.com/watch?v=r9MfVPCGQFA
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 13:57   #90
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот ещё неплохо объяснил:

https://www.youtube.com/watch?v=EEYRjEykOsM


там много о чём говорил, а тебе надо секунд 20...
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты Novichek_1996 Помощь студентам 3 22.04.2014 19:55
Не могу открыть порты. aszaszasz Помощь студентам 0 26.05.2010 14:27
Порты Троян Помощь студентам 1 12.02.2010 14:55
порты Rabitka Безопасность, Шифрование 0 16.10.2009 16:09
COM Порты Skazi21101 Помощь студентам 0 02.11.2008 12:24