Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Без команд условного перехода

Непрочитано 17.05.2010, 15:11  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Без команд условного перехода

Давайте расслабимся и развлечемся.
Задача: произвольное число от 0x01 до 0x0f декрементируем до нуля
и при нуле остановливаемся. Микроконтроллеры - Atmega8 и PIC16F88.
Усложнение- не использовать команды условных переходов и не считывать флаги.
То есть для Atmega8 не использовать: cpse, sb**, br**;
для PIC16F88 не использовать: decfsz, incfsz, btf**.
На ассемблере.
Вложения:
Тип файла: rar dec_x.rar (593 байт, 49 просмотров)
Реклама:

Последний раз редактировалось zelvans; 17.05.2010 в 15:14.
zelvans вне форума  
Непрочитано 17.05.2010, 15:16  
rear
Вид на жительство
 
Аватар для rear
 
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 160
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
rear на пути к лучшему
По умолчанию Re: Без команд условного перехода

пароль на архив?

после достижения нуля зациклиться?
rear вне форума  
Непрочитано 17.05.2010, 15:39  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию 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
MisterDi вне форума  
Непрочитано 17.05.2010, 15:51  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,395
Сказал спасибо: 85
Сказали Спасибо 674 раз(а) в 393 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Без команд условного перехода

Ну если совсем просто декрементируем до нуля и останавливаемся - то тогда действуем решительно - сразу пишем ноль в этот регистр и далее останавливаемся
pambaru вне форума  
Непрочитано 17.05.2010, 16:01  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Без команд условного перехода

Да у меня та же идея
zelvans вне форума  
Непрочитано 17.05.2010, 16:13  
rear
Вид на жительство
 
Аватар для rear
 
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 160
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
rear на пути к лучшему
По умолчанию 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
rear вне форума  
Непрочитано 17.05.2010, 16:37  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Без команд условного перехода

пароль 59wstation19
Молодцы, быстро!
zelvans вне форума  
Непрочитано 17.05.2010, 23:42  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Без команд условного перехода

Для интереса можно еще немного усложнить: не использовать call, goto, rjmp и пр. команды условных и безусловных переходов.
testerplus вне форума  
Непрочитано 18.05.2010, 00:10  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию 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.
realid вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Си-шный компилятор в AVR Studio меняет последовательность команд svv11 Микроконтроллеры, АЦП, память и т.д 29 21.03.2010 05:47


Часовой пояс GMT +4, время: 09:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.