Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.02.2010, 02:05
|
|
Частый гость
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Опрос кнопки на atmega 16
Доброго времени суток. Я студент ![Улыбка](images/smilies/icon_smile.gif) Есть задача, в которой мне нужна помощь.Значит задача состоит в том, что есть реальная плата, на мега 16, и нужно ее запрограмить так чтоб при включении на семисегментнике горела определенная цифра, а при нажатии на кнопку, цифра каждый раз менялась на определенное значение(все время одинаковое, например изначально горит двойка, а после нажатия кнопки она меняеться на 5-ку, после следующего на 8-ку и т.д.). Но можно чтоб это все срабатывало не до бесконечноссти, а хотябы пару раз менялось значение после нажатия кнопки(т.е алгоритм такой, если нажата кнопка, то говорим какое зажигать число, после этого опять опрашиваем кнопку, и если нажата, то еще раз указываем какое число высвечивать). Т.е не нужно никаких сложных алгоритмов, чтоб оно само считало, какое следующее число выводить. Вот... зажечь первую циферку я могу, а вот опрашивать кнопку, и говорить, какое выводить следующее число, если кнопка была нажата, я не умею, собственно в этом и прошу помочь.
PS. Кнопка подключена к порту PA4, а семисигментник висит на порте С, а катод семисигментника на PA1. Вообще там три семисегментника и 3 кнопки, для управления каждым сегментом, но я думаю что если с одной кнопкой я разберусь, то и все остальное до кучи слеплю.
Заранее спасибо за помощь
Последний раз редактировалось 2517212; 20.02.2010 в 02:09.
|
|
|
|
20.02.2010, 13:12
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: Опрос кнопки на atmega 16.
Исходник в студию
|
|
|
|
20.02.2010, 13:32
|
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Опрос кнопки на atmega 16.
while (1)
{
if (!PINA.4)
{
//вывод на экран
delay_ms(50);
}
else
{
delay_ms(50);
};
};
|
|
|
|
20.02.2010, 16:09
|
|
Частый гость
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Опрос кнопки на atmega 16.
ой, забыл написать, что программа нужна на асемблере! ![Улыбка](images/smilies/icon_smile.gif) Исходник выложу попозже.
|
|
|
|
20.02.2010, 20:18
|
|
Прописка
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
|
Re: Опрос кнопки на atmega 16.
Зайди на сайт ко мне, там подробно изложен алгоритм опроса кнопок. Есть код программы на Си.
|
|
|
|
21.02.2010, 00:06
|
|
Частый гость
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Опрос кнопки на atmega 16
я же говорю, мне на асемблере нужно, в си я вообще дуб
|
|
|
|
21.02.2010, 00:13
|
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Опрос кнопки на atmega 16
Сообщение от 2517212
|
я же говорю, мне на асемблере нужно, в си я вообще дуб
|
ну я до недавнего времени тоже придерживался такого мнения...
однако си для авр освоил за неделю
http://futurelink.h1.ru/bookc.htm
|
|
|
|
21.02.2010, 16:18
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
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 |
|
|
|
|
21.02.2010, 19:06
|
|
Частый гость
Регистрация: 08.11.2008
Сообщений: 19
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Опрос кнопки на atmega 16
Спасибо всем, задача ршена!
|
|
|
|
31.03.2012, 00:35
|
|
Прохожий
Регистрация: 31.03.2012
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Опрос кнопки на atmega 16
подскажите пожалуйста, у меня про прошивки мк выпадает такая ошибка
![Вопрос](images/smilies/icon_question.gif) ![Вопрос](images/smilies/icon_question.gif)
Код:
|
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! |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 12:41.
|
|