| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Без команд условного перехода
17.05.2010, 15:11
|
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Без команд условного перехода
Давайте расслабимся и развлечемся.
Задача: произвольное число от 0x01 до 0x0f декрементируем до нуля
и при нуле остановливаемся. Микроконтроллеры - Atmega8 и PIC16F88.
Усложнение- не использовать команды условных переходов и не считывать флаги.
То есть для Atmega8 не использовать: cpse, sb**, br**;
для PIC16F88 не использовать: decfsz, incfsz, btf**.
На ассемблере.
Последний раз редактировалось zelvans; 17.05.2010 в 15:14.
|
|
|
|
17.05.2010, 15:16
|
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 160
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
Re: Без команд условного перехода
пароль на архив?
после достижения нуля зациклиться?
|
|
|
|
17.05.2010, 15:39
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Без команд условного перехода
Элементарно, Ватсон для PIC:
|
Код:
|
;w - input value
addwf PCL,w
goto Lab0
goto Lab1
goto Lab2
goto Lab3
goto Lab4
goto Lab5
goto Lab6
goto Lab7
goto Lab8
goto Lab9
goto LabA
goto LabB
goto LabC
goto LabD
goto LabE
sublw 0x1
LabE: sublw 0x1
LabD: sublw 0x1
LabC: sublw 0x1
LabB: sublw 0x1
LabA: sublw 0x1
Lab9: sublw 0x1
Lab8: sublw 0x1
Lab7: sublw 0x1
Lab6: sublw 0x1
Lab5: sublw 0x1
Lab4: sublw 0x1
Lab3: sublw 0x1
Lab2: sublw 0x1
Lab1: sublw 0x1
Lab0: goto Lab0 |
может в количестве комманд что-то и пропустил, но думаю идея ясна.
__________________
misterdi<@>i.ua
|
|
|
|
17.05.2010, 15:51
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 24.03.2007
Сообщений: 1,395
Сказал спасибо: 85
Сказали Спасибо 674 раз(а) в 393 сообщении(ях)
|
Re: Без команд условного перехода
Ну если совсем просто декрементируем до нуля и останавливаемся - то тогда действуем решительно - сразу пишем ноль в этот регистр и далее останавливаемся
|
|
|
|
17.05.2010, 16:01
|
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Без команд условного перехода
Да у меня та же идея
|
|
|
|
17.05.2010, 16:13
|
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 160
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
Re: Без команд условного перехода
Подсмотрел идею у MisterDi,  реализация для AVR
|
Код:
|
ldi temp, number ; = загружаем число
ldi ZH, HIGH(lab0)
ldi ZL, LOW(lab0)
ldi r17, 0
sbc ZL, temp
sbc ZH, r17
ijmp ;0
dec temp ;F
dec temp ;E
dec temp ;D
dec temp ;C
dec temp ;B
dec temp ;A
dec temp ;9
dec temp ;8
dec temp ;7
dec temp ;6
dec temp ;5
dec temp ;4
dec temp ;3
dec temp ;2
dec temp ;1
lab0: rjmp lab0 |
|
|
|
|
17.05.2010, 16:37
|
|
|
Частый гость
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
|
Re: Без команд условного перехода
пароль 59wstation19
Молодцы, быстро!
|
|
|
|
17.05.2010, 23:42
|
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: Без команд условного перехода
Для интереса можно еще немного усложнить: не использовать call, goto, rjmp и пр. команды условных и безусловных переходов.
|
|
|
|
18.05.2010, 00:10
|
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
|
Re: Без команд условного перехода
Сообщение от testerplus
|
|
Для интереса можно еще немного усложнить: не использовать call, goto, rjmp и пр. команды условных и безусловных переходов.
|
Кхм.
|
Код:
|
movlw .2 ;‹--- декрементируемое число
movwf Decrement
movlw .15 movlw .15
subwf Decrement,W subwf Decrement,W
movwf temp или subwf PCL,F
comf temp,F
incf temp,W
addwf PCL,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
decf Decrement,F
sleep
или
movlw .1
subwf PCL,F |
Последний раз редактировалось realid; 18.05.2010 в 06:57.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:50.
|
|