Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Опрос кнопки на atmega 16

Непрочитано 20.02.2010, 02:05  
2517212
Частый гость
 
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
2517212 на пути к лучшему
По умолчанию Опрос кнопки на atmega 16

Доброго времени суток. Я студент Есть задача, в которой мне нужна помощь.Значит задача состоит в том, что есть реальная плата, на мега 16, и нужно ее запрограмить так чтоб при включении на семисегментнике горела определенная цифра, а при нажатии на кнопку, цифра каждый раз менялась на определенное значение(все время одинаковое, например изначально горит двойка, а после нажатия кнопки она меняеться на 5-ку, после следующего на 8-ку и т.д.). Но можно чтоб это все срабатывало не до бесконечноссти, а хотябы пару раз менялось значение после нажатия кнопки(т.е алгоритм такой, если нажата кнопка, то говорим какое зажигать число, после этого опять опрашиваем кнопку, и если нажата, то еще раз указываем какое число высвечивать). Т.е не нужно никаких сложных алгоритмов, чтоб оно само считало, какое следующее число выводить. Вот... зажечь первую циферку я могу, а вот опрашивать кнопку, и говорить, какое выводить следующее число, если кнопка была нажата, я не умею, собственно в этом и прошу помочь.
PS. Кнопка подключена к порту PA4, а семисигментник висит на порте С, а катод семисигментника на PA1. Вообще там три семисегментника и 3 кнопки, для управления каждым сегментом, но я думаю что если с одной кнопкой я разберусь, то и все остальное до кучи слеплю.
Заранее спасибо за помощь
Реклама:

Последний раз редактировалось 2517212; 20.02.2010 в 02:09.
2517212 вне форума  
Непрочитано 20.02.2010, 13:12  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16.

Исходник в студию
Classic001 вне форума  
Непрочитано 20.02.2010, 13:32  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16.

while (1)
{
if (!PINA.4)
{
//вывод на экран
delay_ms(50);
}
else
{
delay_ms(50);
};

};
spballiance вне форума  
Непрочитано 20.02.2010, 16:09  
2517212
Частый гость
 
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
2517212 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16.

ой, забыл написать, что программа нужна на асемблере! Исходник выложу попозже.
2517212 вне форума  
Непрочитано 20.02.2010, 20:18  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16.

Зайди на сайт ко мне, там подробно изложен алгоритм опроса кнопок. Есть код программы на Си.
__________________
www.samodelkin.kiev.ua - для тех, кто хочет научиться!
alex28411 вне форума  
Непрочитано 21.02.2010, 00:06  
2517212
Частый гость
 
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
2517212 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16

я же говорю, мне на асемблере нужно, в си я вообще дуб
2517212 вне форума  
Непрочитано 21.02.2010, 00:13  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16

Сообщение от 2517212 Посмотреть сообщение
я же говорю, мне на асемблере нужно, в си я вообще дуб
ну я до недавнего времени тоже придерживался такого мнения...
однако си для авр освоил за неделю
http://futurelink.h1.ru/bookc.htm
spballiance вне форума  
Непрочитано 21.02.2010, 16:18  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16

Цитата:
я же говорю, мне на асемблере нужно, в си я вообще дуб
Похоже это касается и асма

Вот должно быть примерно так

Код:
.include "m16def.inc"

.equ	MaxCnt	=	8		// Maximum numbers in loop


.def	Step1	=	r16	
.def	Tmp		=	r19
.def	Buttons	=	r20
.def	Changes	=	r21


	.org	0x00
	jmp		Reset

	.org	0x12
	jmp		Timer0_ovf


	.org	0x2a

Reset:		ldi		r16,	high(RAMEND)		// init stack
			out		SPH,	r16
			ldi		r16,	low(RAMEND)
			out		SPL,	r16

			ldi		r16,	0xff
			out		DDRC,	r16					// set PORTC as output

			ldi		r16,	(1 ‹‹ PA4)			// enable pullup resistor on button
			out		PORTA,	r16

			clr		Step1
			clr		Changes

			// init timer
			ldi		Tmp,		5
			out		TCCR0,		Tmp
			ldi		Tmp,		1
			out		TIMSK,		Tmp
			ldi		Tmp,		0x80			// reload timer (çíà÷åíèå íàïèñàë îò áàëäû)
			out		TCNT0,		Tmp
			sei

	main:	sbrc	Changes,	PA4				// skip next command if no changes button
			call	Change1
			rjmp	main


Timer0_ovf:
			in		Tmp,		PINA			// get current value of port A and check for changes with prev state
			eor		Buttons,	Tmp
			mov		Changes,	Buttons
			mov		Buttons,	Tmp

			ldi		Tmp,		0x80			// reload timer
			out		TCNT0,		Tmp

			reti
			
EE_Read:
			sbic	EECR,		EEWE
			rjmp	EE_Read
			out		EEARH,		r0
			out		EEARL,		r1
			sbi		EECR,		EERE
			in		r2,			EEDR
			ret

Change1:	andi	Changes,	~(1 ‹‹ PA4)		// clear "button position changed" flag
			sbrc	Buttons,		  PA4		// check for curr state. exit if released
			ret

			inc		Step1
			cpi		Step1,		MaxCnt
			brne	Change1_loadnext

			clr		Step1

	Change1_loadnext:
			mov		r1,			Step1
			call	EE_Read
			out		PORTC,		r2
			ret
Classic001 вне форума  
Непрочитано 21.02.2010, 19:06  
2517212
Частый гость
 
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
2517212 на пути к лучшему
По умолчанию Re: Опрос кнопки на atmega 16

Спасибо всем, задача ршена!
2517212 вне форума  
Непрочитано 31.03.2012, 00:35  
vadik01
Прохожий
 
Регистрация: 31.03.2012
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vadik01 на пути к лучшему
Восклицание Re: Опрос кнопки на atmega 16

подскажите пожалуйста, у меня про прошивки мк выпадает такая ошибка

Код:
Reading FLASH input file.. OK
Entering programming mode.. OK!
Reading FLASH ..      OK!
WARNING: FLASH byte address 0x0000 is 0xFF (should be 0x0F).. FAILED!
Leaving programming mode.. OK!
vadik01 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Энергосберегающий режим Atmega 16L zamsv Микроконтроллеры, АЦП, память и т.д 6 22.02.2010 06:29
ATmega + цифровой акселерометр kamigvik Микроконтроллеры, АЦП, память и т.д 9 16.12.2009 18:40
ATMega вместо ICC7106 OlexKey Микроконтроллеры, АЦП, память и т.д 19 20.11.2009 16:00
Я и моя помеха (Atmega) ua_gruzin Микроконтроллеры, АЦП, память и т.д 64 18.11.2009 15:15
Помогите с обработкой нажатия кнопки pic12f629 alexandr-nimnul Микроконтроллеры, АЦП, память и т.д 5 18.10.2009 13:15


Часовой пояс GMT +4, время: 00:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.