Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Светодиод, управляемый кнопкой
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Игорек
Только начал изучать AVR, решил собрать на ATmega8 схему включения-выключения светодиода одной кнопкой(Нажимаем на кнопку, она коротит одну из ножек контроллера на землю, светодиод припаянный к другой ножке тухнет, нажимаем еще раз - светодиод загорается). На ножке PB0 - светодиод, на ножке PB1 - кнопка.
Код
.include "m8def.inc"  
.org 0
    RJMP Reset
Reset:  
    LDI R16,Low(RAMEND)    
    OUT SPL,R16    
    LDI R16,High(RAMEND)
    OUT SPH,R16    
    
    LDI R16,1<<DDB0  
    OUT DDRB,R16    
    LDI R16,1<<PORTB1    
    OUT PORTB, R16        
Start:    
    IN R16,PINB
    SBRS R16,1
    RCALL Change
    RJMP Start
Change:
    LDI R17,0x3
    EOR R16,R17
    OUT PORTB,R16
    RET



1. Подскажите, если не сложно, какие явные косяки в коде имеются (чувствую, что они там точно есть rolleyes.gif ).
2. Не всегда срабатывает переключение светодиода, иногда происходит так: светодиод светится, я нажимаю кнопку где-то на секунду, светодиод в это время светится вполнакала, отпускаю кнопку и светодиод снова светится, хотя должен был погаснуть. Или светодиод не светится, я нажимаю кнопку, светодиод начинает светится вполнакала, отпускаю кнопку и светодиод снова не светится. А иногда все работает нормально (примерно 50 на 50). Из-за чего это может быть?
Палыч
1. Механические кнопки имеют такое неприятное свойство - дребезг контактов, которое в Вашей программе не учтено.
2. Ваша программа изменяет состояние светодиода по нажатию кнопки (т.е. если кнопка нажата, то состояние меняется, до тех пор, пока кнопка не будет отпущена - и тут - как повезет...) Необходима переделка программы: по нажатию - один(!) раз изменить состояние светодиода, а затем обязательно дождаться отпускания кнопки, затем - опять ждем нажатие и один раз меняем состояние светодиода, и опять ждём отпускания... и т.д. Естественно, всё это - с учетом п.1.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.