Например TDA7294

Форум РадиоКот • Просмотр темы - ATmega8L-8PU, программа-счетчик почему-то не работает.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт июл 24, 2025 14:26:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Пн июн 11, 2012 14:20:43 
Вымогатель припоя

Карма: -6
Рейтинг сообщений: -47
Зарегистрирован: Чт июн 16, 2011 15:06:10
Сообщений: 507
Откуда: электрощитовая
Рейтинг сообщения: 0
При нажатии на кнопку PB0, программа должна изменять число, отображаемое на ЖК-индикаторе. Но обрабатывается только первое нажатие, число меняется с 0 на 1 и все, на дальнейшие нажатия она не реагирует. Почему?
Код:
; ******************************
; Автор: ххх                   *
; Дата: 11.06.2012             *
; Версия: 0.1                  *
; Имя файла: Indicator         *
; Для AVR: ATmega8L-8PU        *
; Тактовая частота: 4 МГц      *
; ******************************
; Выполняемые функции: Управление семисегментным ЖК-индикатором, функция подавления дребезга контактов
; ============
.device ATmega8
.nolist
.include "C:\Program Files\Atmel\AVR Studio 5.0\avrassembler\include\m8def.inc"
.list
; ============
; Блок объявлений
.def temp    = r16
.def counter = r17
.def delay1  = r16         ; так надо
.def delay2  = r18
.def delay3  = r19
; ============
; Начало программы
rjmp Init
; ============
; Подпрограммы
Debounce:                 ; инициализируем регистры счетчика числом 0x13880 (для четности добавляем 0: 0х013880)
ldi delay1, 0x80          ;
ldi delay2, 0x38          ;
ldi delay3, 0x01          ;

Loop:                     ; формируем задержку
subi delay1, 1            ;
subi delay2, 0            ;
subi delay3, 0            ;
brcc Loop                 ;
ret
; ============
Init:
; Тело программы
; ==========
; Подблок инициализации стека
ldi temp, low(ramend)     ;
out spl, temp             ;
ldi temp, high(ramend)    ;
out sph, temp             ;
; ==========

ser temp                  ;
out DDRD, temp            ; выходы
ldi temp, 0b11111110      ;
out DDRB, temp            ; PB0 - вход, остальные не используются

ldi r20, 0b01111110       ; код для цифры "0"
out PortD, temp           ; показать цифру "0"
ldi temp, 0b00000001      ;
out PortB, temp           ; PB0 - подтяжка, остальные не используются

ldi r21, 0b00110000       ; коды цифр индикатора
ldi r22, 0b01101101       ;
ldi r23, 0b01111001       ;
ldi r24, 0b00110011       ;
ldi r25, 0b01011011       ;
ldi r26, 0b01011111       ;
ldi r27, 0b01110000       ;
ldi r28, 0b01111111       ;
ldi r29, 0b01111011       ;
clr counter               ;
; ============
Start:
sbic PinB, 0              ;
rjmp Start                ; если нет
inc counter               ;

cpi counter, 10           ;
brne PC + 2               ; если нет
clr counter               ;

ldi ZL, 20                ;
add ZL, counter           ;
ld temp, Z                ;
out PortD, temp           ;
rcall Debounce            ; задержка

ReleaseWait:
sbis PinB, 0              ;
rjmp ReleaseWait          ; если нет
rcall Debounce            ; задержка
rjmp Start                ;
; ============

_________________
даешь высокое напряжение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Пн июн 11, 2012 15:05:22 
Вымогатель припоя

Карма: -6
Рейтинг сообщений: -47
Зарегистрирован: Чт июн 16, 2011 15:06:10
Сообщений: 507
Откуда: электрощитовая
Рейтинг сообщения: 0
Мне кажется, она слишком долго зацикливается на этом участке:
Код:
Loop:                     ; формируем задержку
subi delay1, 1            ;
subi delay2, 0            ;
subi delay3, 0            ;
brcc Loop                 ;
ret

Программа из книжки, под кварц 4 МГц, что тут не так?

_________________
даешь высокое напряжение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Вт июн 12, 2012 01:24:18 
Опытный кот

Карма: 12
Рейтинг сообщений: 26
Зарегистрирован: Вс апр 10, 2011 02:24:06
Сообщений: 772
Откуда: г.Северодонецк
Рейтинг сообщения: 0
У вас книжка неправильная.
Код:
Loop:                     ; формируем задержку
subi delay1, 1            ;
SBCI delay2, 0            ;вычитаем ноль и бит переноса!
SBCI delay3, 0            ;
brcc Loop                 ;
ret

Иначе из цикла не выйдет,потому как
Код:
subi delay3,0
бит переноса всегда сбрасывается

_________________
C0FFEE=‭12648430‬


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Вт июн 12, 2012 10:55:42 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6034
Откуда: Minsk
Рейтинг сообщения: 0
eufs писал(а):
У вас книжка неправильная.

Книжку, видимо, писал чукча-писатель, а не читатель ( даташитов ) . Вывод : книжка книжкой, но мозгу надо держать включенной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Вт июн 12, 2012 11:44:43 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Jack_A писал(а):
Книжку, видимо, писал чукча-писатель...
... к сожалению таких очень много и "плюс помощь типографии" при наборе текста :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8L-8PU, программа-счетчик почему-то не работает.
СообщениеДобавлено: Вт июн 12, 2012 14:14:17 
Вымогатель припоя

Карма: -6
Рейтинг сообщений: -47
Зарегистрирован: Чт июн 16, 2011 15:06:10
Сообщений: 507
Откуда: электрощитовая
Рейтинг сообщения: 0
eufs писал(а):
У вас книжка неправильная.
Код:
Loop:                     ; формируем задержку
subi delay1, 1            ;
SBCI delay2, 0            ;вычитаем ноль и бит переноса!
SBCI delay3, 0            ;
brcc Loop                 ;
ret

Иначе из цикла не выйдет,потому как
Код:
subi delay3,0
бит переноса всегда сбрасывается

Спасибо большое, без вас я бы не смог разобраться. Я еще не умею правильно писать программы. На самом деле, в книжке ошибки не было. :facepalm: Это моя вина, я не увидел этого, по своей не внимательности не правильно написал. Просто эти команды так похожи... :facepalm:
А книжка называется: Джон Мортон. Микроконтроллеры AVR. Вводный курс, можете убедиться сами, ошибки там не было.
Извините... :facepalm:

ChipKiller посмотрите, пожалуйста, там мой последний пост.

_________________
даешь высокое напряжение


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y