реклама на сайте
подробности

 
 
> Кнопки на atmega16
SpiritCoat
сообщение Jul 30 2008, 09:53
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 14-04-08
Пользователь №: 36 773



Искал поиском, но самого простого и базового объяснения нигде не нашел.
В общем идея такова: нажимается кнопочка и двоичное число, высвечиваемое на светодеодах, увеличивается на единичку. Деоды прикреплены к порту D, кнопочка висит на порте А. Вот код:

Код
.include "m16def.inc"

.def     Temp=R16
.def     Temp1=R17
.def     Temp2=R18
.def     Temp3=R19
.def     Temp4=R20


.cseg
.org 0

ldi Temp, 0b11111111  
out DDRB,Temp        

ldi Temp,0b00000001    
out PortB,Temp        

BUT:

sbis PinA,0x00; если нажато - переходим к SWITCH
rjmp BUT

SWITCH:

inc Temp
out PortB,Temp
ldi Temp1,0
ldi Temp2,0

DLY:

dec Temp1 ; задержка
brne DLY
dec Temp2
brne DLY

rjmp BUT


Вроде бы все логично, но почему-то работает как угодно, но не так как описано. Что я делаю неверно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jul 30 2008, 10:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(SpiritCoat @ Jul 30 2008, 12:53) *
Вроде бы все логично, но почему-то работает как угодно, но не так как описано. Что я делаю неверно?

smile.gif
А как описано?

Как говорил Сергей Борщ "Даю наводку" smile.gif

1) У тебя когда кнопка нажата будет с периодичностью задержки наращиваться значение выводимое в порт.
2) Кнопку обычно подключают на 0. А оборванный выход подпирают резистором (Или внутренней подпоркой)
3) Есть такое понятие как "гашение дребезга"

Видишь ли любую задачу в программировании можно реализовать десятком способов. Чтобы не гасить дребезг предлагаю следующий алгоритм.

a:
ждём нуля на кнопке. если нет то на а
задержка 0.3 сек
б:
ждём 1 на кнопке. если нет то на б
задержка 0.3 сек
инкрементируем значение
выводим в порт
переход на а
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016