Часы на микроконтроллере ATTINY2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 10
Зарегистрирован: Вт дек 30, 2008 17:01:37

Сообщение drakoshaprog »

у меня есть переменная
Digit: .byte 4
Где она создается и хранит свое значение ?
как сделать чтобы она менялась от 0 до 9 и если доходит до 9 то принимает снова 0 и по новой ?

как в асемблере сравнивать ?
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 136
Зарегистрирован: Пн дек 17, 2007 13:15:43

Сообщение john_rise »

Это вы резервируете 4 байта в ОЗУ (компилятор сам выберет где именно в ОЗУ он будет хранить 4 байта). Если вам нужно что-бы значение менялось от 0 до 9-ти, то зачем вы резервируете аж 4 байта? В 4-х байтах можно разместить 4`294`967`296 комбинаций кода.
Боишся - не делай. Делаешь - не бойся.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 136
Зарегистрирован: Пн дек 17, 2007 13:15:43

Сообщение john_rise »

Сравнивать в ассемблере можно
два регистра между собой:

Код: Выделить всё

       cp r16,r17
Регистр с константой:

Код: Выделить всё

       cpi r16,K
Где К-это 8-ми разрядная (8-ми битная) константа

Так же есть сравнение с учётом бита переноса, это нобходимо для сравнения 2-х и более байтных чисел (регистровых пар).
Боишся - не делай. Делаешь - не бойся.
Родился
Сообщения: 10
Зарегистрирован: Вт дек 30, 2008 17:01:37

Сообщение drakoshaprog »

4 так у меня 2 числа отвечают за часы еще 2 за минуты ))

как в асемблере прибавить к десятичному числу 1 ?
(может кто знает хорошую книгу по асемблеру?)
еще я тут не могу подобрать точно частоту ((
у меня резонатор на 20 MГц
мне нужно чтобы прерывание было раз в минуту = 60 сек

ldi Temp,0b00000101 ;тактовый сигнал = CK/1024
out TCCR1B,Temp

я выбрал CK/1024

а как подобрать OCR1AH и OCR1AL ?
я наугад поставил нули
ldi Temp,0x00 ;инициализация компаратора
out OCR1AH,Temp
ldi Temp,0x00
out OCR1AL,Temp
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»