Страница 2 из 2

Добавлено: Пт янв 23, 2009 15:03:18
drakoshaprog
у меня есть переменная
Digit: .byte 4
Где она создается и хранит свое значение ?
как сделать чтобы она менялась от 0 до 9 и если доходит до 9 то принимает снова 0 и по новой ?

как в асемблере сравнивать ?

Добавлено: Пт янв 23, 2009 15:57:17
john_rise
Это вы резервируете 4 байта в ОЗУ (компилятор сам выберет где именно в ОЗУ он будет хранить 4 байта). Если вам нужно что-бы значение менялось от 0 до 9-ти, то зачем вы резервируете аж 4 байта? В 4-х байтах можно разместить 4`294`967`296 комбинаций кода.

Добавлено: Пт янв 23, 2009 16:16:28
john_rise
Сравнивать в ассемблере можно
два регистра между собой:

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

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

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

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

Так же есть сравнение с учётом бита переноса, это нобходимо для сравнения 2-х и более байтных чисел (регистровых пар).

Добавлено: Пт янв 23, 2009 17:07:54
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