Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: atMega16
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
neggatif
Помогите, пожалуйста, написать программу для решения поставленной задачи:

Организовать подсчёт нажатий на кнопку SW3, подключённую к PB1, и
выдачу 4-битного результата в двоичном коде на выводы PB4, PB3, PB2, PB0
(светодиоды VD4-VD1).

Используется компилятор AVRstudio.
Буду благодарен, я сам чайник, но хочу разобраться на конкретном примере.
ibiza11
Ассемблер:
-вектора прерываний
-инициализация портов
-порты ввода/вывода
все примеры есть в даташите
-программный антидребезг пока не рассматриваю, сейчас лучше аппаратный (кондер на выводы кнопки)
cool.gif
а если серьезно, то тебе в обучалку какую-нибудь или в раздел для начинающих.
domowoj
Вам необходимо программно избавиться от дребезга
контактов кнопки.
Если на пальцах ТО
Допустим PB1 подтянут к плюсу питания резистором, а кнопка "садит"
PB1 на землю.
Вы постоянно опрашиваете(читаете) этот порт, сигнал = "1".
Как только появился "0", т.е. кнопка нажата, вы не сколько
раз подряд прочитать этот ноль,только в этом случае ноль - есть ноль.
Аналогично определяется и отжатие.
Xenia
Пин PB1 на контроллере этого типа является по совместительству счетным входом 1-го таймера (Timer/Counter1 External Counter Input).
Отсюда следует самый простой алгоритм решения задачи: Timer1 программируется в режим счета внешних импульсов, а младшие 4 бита двоичного счетчика этого таймера оправляются в порт зажигать светодиоды.

Косвенным свидетельством того, что задача решается именно так, является использование для кнопки именно PB1, несмотря на то, что порядок пинов, зажигающих светодиоды при этом нарушается: PB4, PB3, PB2, PB0, где PB1 пропущен. Если бы задача решалась периодическим опросом пина с кнопкой, то не имело бы смысла устраивать чехарду с порядком пинов.

Поскольку автор топика утверждает, что он в этом деле чайник, то очевидно, что данная задача чисто учебная. В противном случае автор должен был бы знать причину, по которой ему приспичило использовать для кнопки именно PB1, но тогда бы он и сам знал, как эта задача решатся.
ibiza11
Согласен с Ксенией, задача наверняка учебная) да и название кнопки SW3 наводит на мысль, что уже есть схема)
nk@
Как уже стало понятно, решений может быть много wacko.gif Особенно, разнообразия вносит реализация антидребезга (тут у каждого свой рояль в кустах sm.gif)
Вы хоть уточните, на чем программка должна быть (C, ASM) и какой алгоритм Вы хотите - простой цикл, с использованием таймера+прерываний итп.
Marto
на ассемблере бы написал: ресет - старт инит, берем регистр куда будем плюсовать значение -> считываем состояние - нажато -> инкремент (+1) в регистр, далее выводим на порт -> возвращаемся к опросу кнопки. антидребезг задержкой и все.

Ах да, писать в порт значение - через битмаски
Xenia
Цитата(ibiza11 @ Apr 4 2011, 22:33) *
Согласен с Ксенией, задача наверняка учебная) да и название кнопки SW3 наводит на мысль, что уже есть схема)

Конечно, учебная. Это - лабораторная работа sm.gif
И вот уже три форума (включая наш) во всю над нею корпят:
http://forum.cxem.net/index.php?showtopic=84107
http://www.cyberforum.ru/assembler/thread268284.html
domowoj
"Не суди, да не судим будешь"

Никто не собирается писАть ТС програмульку,
а объяснить, напавить, ...
defunct
Цитата(Xenia @ Apr 5 2011, 00:10) *
Конечно, учебная. Это - лабораторная работа sm.gif
И вот уже три форума (включая наш) во всю над нею корпят:
http://forum.cxem.net/index.php?showtopic=84107

Мда... к чему котится мир, студент может зайти на форум, найти добродушного дурачка добрячка, готового на двух языках радостно решить учебную задачку, - в результате лаба сдана, знаний 0....
При этом добрячку написавшему программу, можно и "спасибо" не говорить... эх sad.gif

Всё таки еще раз убеждаюсь Electronix самый адекватный форум, тут народ хоть понимает, что студентам решение лаб/курсовиков на блюдечке подносить нельзя, иначе завтра не будет специалистов.

Xenia a14.gif за проницательность! еще в первом посте разгядели не только, что задачка учебная, но и суть работы - изучение работы таймера.

Цитата(domowoj @ Apr 5 2011, 04:47) *
Никто не собирается писАть ТС програмульку,

Не поверите, таки нашлись уникумы по ссылкам выше... написали на двух языках... думаю и на четырех бы написали.
Идтить колотить! sm.gif
nk@
bb-offtopic.gif Раз уж пошли разоблачения, то вставлю свои 3 копейки.
Преподаватели, которые дали это задание, Вы читаете наш форум? Отзовитесь! Если нет, то вы безнадежно отстали от жизни. Грош вам цена. Немедленно на пенсию.
Уже достали ваши выпускники с красными(!) дипломами, которые не могут даже месячный испытательный срок выдержать. Похоже система образования, которая в прежние времена была одной из лучших в мире, погибла (рухнула, сдохла). Обидно. Радует то, что остались еще жаждущие знаний молодые люди, которые самостоятельно грызут орешек знаний. Жаль, что современный университетский планктон ничего им дать не может.
Сорри, за оффтоп.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.