Прошу прощения, можно за комментировать

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Masredis
Родился
Сообщения: 12
Зарегистрирован: Пн май 02, 2011 23:13:32

Прошу прощения, можно за комментировать

Сообщение Masredis »

Прошу прощения за такую просьбу но просто не знаю куда деваться, и прошу вас о маленькой просьбе... Можно пожалуйста за комментировать код для ассемблера на AVR

собственно сам код .

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

.equ portb = 0x05;

.equ ddrb = 0x04; 

.equ pinb = 0x03;

.equ portc = 0x08
.equ ddrc = 0x07
.equ pinc = 0x06

.equ portd = 0x0b
.equ ddrd = 0x0a
.equ pind = 0x09


    SER R16  ;
	OUT ddrd,R16 ;
	LDI R16,0xC7   ;
	OUT ddrb,R16
	LDI R16,0x30
	OUT ddrc,R16


start:
    	LDI R16, 0xfe ; 
 	OUT portd, R16
	IN R17, pinc ;
	
	ANDI R17, 0x02                  
	BREQ led  
   
rjmp start

led:

call led0
call w1s

call led1
call w1s

call led2
call w1s

call led3
call w1s

call led4
call w1s



led0:

ldi r16, 0b11000110
out portd,r16    
sbi portb, 0   ;Set Bit in I/O Register       
cbi portb, 0	;Clear Bit in I/O Register
ret             ; Return k mestu otkuda vizvali

led1:
ldi r16, 0b10000110
out portd,r16    
sbi portb, 0         
cbi portb, 0
ret
            
led2:
ldi r16, 0b11000001
out portd,r16   
sbi portb, 0  ; podaet 1       
cbi portb, 0  ; podaet 0
ret              

led3:
ldi r16, 0b10000110
out portd,r16    
sbi portb, 0         
cbi portb, 0
ret 
            
led4:
ldi r16, 0b10001100
out portd,r16    
sbi portb, 0        
cbi portb, 0
ret                

w1s:

	PUSH R16;Push Register on Stack
	LDI R16,50
    V4:
	RCALL w20ms ;Relative Subroutine Call
	DEC R16 ;Decrement
	BRNE V4 ;
	POP R16 ;Pop Register from Stack
	RET


Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6319
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Прошу прощения, можно за комментировать

Сообщение Jack_A »

Аррррыгинальна. Вопрос для "Что? Где? Когда?" -- " У меня есть неведомо откуда взявшийся код. Внимание, вопрос : будет ли он работать, а если будет, то что он будет делать, и вообще на фига он мне сдался ?"
Спасибо, приколол. А самому написать слабо - хотя бы пресловутое помигание диодом ?
Реклама
Masredis
Родился
Сообщения: 12
Зарегистрирован: Пн май 02, 2011 23:13:32

Re: Прошу прощения, можно за комментировать

Сообщение Masredis »

Код для AVR ATMega88 =) Я не прошу его переделывать или проверять, просто написать что происходит с ним =) К примеру что значит SET или ANDI и всё =)
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Прошу прощения, можно за комментировать

Сообщение ut1wpr »

Masredis писал(а):Код для AVR ATMega88 =) Я не прошу его переделывать или проверять, просто написать что происходит с ним =) К примеру что значит SET или ANDI и всё =)
А если открыть описание системы команд МК - не поможет? :)
С уважением,
Виктор.
Реклама
Эиком - электронные компоненты и радиодетали
Masredis
Родился
Сообщения: 12
Зарегистрирован: Пн май 02, 2011 23:13:32

Re: Прошу прощения, можно за комментировать

Сообщение Masredis »

Поможет но к сожалению только частично :) Вот например - ANDI R17, 0x02 ;Logical AND Register and Constant - Вот что ANDI делает я не понимаю... :(
Реклама
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение DX168B »

ANDI - сброс указанных битов в нули, это если совсем кратко и на простом языке.
Аналогична ей команда AND. Но та берёт маску уже не с константы, а с другого регистра.
Примеры:

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

ldi r16, 0b11101111
andi r16, 0b10110000
;В r16 стало 0b10100000

ldi r16, 0b11101111
ldi r17, 0b11110000
and r16, r17
;В r16 стало 0b11100000
ЗЫ: В коде я не увидел инициализацию стека, а процедуры вызова есть.
I am DX168B and this is my favourite forum on internet!
Реклама
Masredis
Родился
Сообщения: 12
Зарегистрирован: Пн май 02, 2011 23:13:32

Re: Прошу прощения, можно за комментировать

Сообщение Masredis »

Еще можно чуток подсказок :)

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

PUSH R16;Push Register on Stack  - ?
	LDI R16,50
    V4:
	RCALL w20ms ;Relative Subroutine Call  - ?
	DEC R16 ;Decrement  - ?
	BRNE V4 ;Противоположная по смыслу инструкция, совершающая переход если флаг нуля сброшен (числа не равны) называется BRNE (Branch if Not Equal).
	POP R16 ;Pop Register from Stack - ?
PUSH
RCALL
DEC
POP
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение testerplus »

Masredis писал(а):Еще можно чуток подсказок :)
PUSH
RCALL
DEC
POP
PUSH - Команда применяется для нажима на регистр (например PUSH R16 - нажать на регистр r16)
RCALL - relative subroutine call - позвать родственную подпрограмму
DEC - (от decimal) первести регистр в десятичную систему (и почему там decrement в коментарии?)
POP - это не знаю, никогда не пользовался


P.S. В армию!
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение DX168B »

Жжоте. :))) :))) :))) :))) :))) :)))

PUSH - поместить регистр(точнее, его содержимое) в стек.
POP - извлечь содержимое из стека в регистр.
RCALL - урезанная команда вызова подпрограммы.
DEC - Декремент, или, уменьшить содержимое регистра на 1.
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
Psych
Опытный кот
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

Re: Прошу прощения, можно за комментировать

Сообщение Psych »

Ухахахахахаха :))) :)))
DX168B Нет у вас не правильно))) Первый вариант намного веселей)
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение DX168B »

Я тоже так подумал. :))) :))) :))) :)))
I am DX168B and this is my favourite forum on internet!
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Прошу прощения, можно за комментировать

Сообщение kras »

Тестера в армию))) Никто круче не напишет:)
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение urry »

Cпасибо, поржал :)
Тестера в армию, говоришь ? И это пишет жертва Карабельникова. :)
Погугли вначале, на кого булочку крошишь, www.pic24.ru, например...
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Прошу прощения, можно за комментировать

Сообщение ploop »

ANDI - сброс указанных битов в нули, это если совсем кратко и на простом языке.
Аналогична ей команда AND. Но та берёт маску уже не с константы, а с другого регистра.
В данном случае да, это как бы наиболее частое его применение, а в общем - не совсем корректно.
Правильнее - логическое (побитовое) "И", т.е. бит в результате будет установлен, только если бит в первом И втором операнде установлен.
AND в качестве операндов принимает два регистра, ANDI - регистр и константу.

(DX168B - это не тебе замечание, а автору пояснение :) )
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение DX168B »

Ну я так и понял. :) Это я так.... по простому. :)
Операция похожа на работу простого логического элемента "И"
Единица на выходе будет только тогда, когда на обоих входах элемента лог. 1
Если хотя-бы на одном из входов будет ноль, то и на выходе будет ноль.
Так-же и тут: Единица в бите результата будет только тогда,
когда в обоих операндах, в тех-же битах стоят единицы,
если хотя-бы в одном операнде будет ноль в бите, то и в результате будет ноль.
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3384
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Прошу прощения, можно за комментировать

Сообщение Мурик »

urry писал(а):Cпасибо, поржал :)
Тестера в армию, говоришь ? И это пишет жертва Карабельникова. :)
Погугли вначале, на кого булочку крошишь, http://www.pic24.ru, например...
Спасибо, я тоже поржал. :)))
И с интерпретации тестера и с вашего высказывания. :hunger:
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Прошу прощения, можно за комментировать

Сообщение SubDia »

testerplus писал(а): PUSH - Команда применяется для нажима на регистр (например PUSH R16 - нажать на регистр r16)
RCALL - relative subroutine call - позвать родственную подпрограмму
DEC - (от decimal) первести регистр в десятичную систему (и почему там decrement в коментарии?)
POP - это не знаю, никогда не пользовался
:))) :)))
Жесть, я аж ПЛИСину под стол уронил со смеху и полчаса в пыли ползал в ее поисках.
Кстати, у меня вопрос: "RCALL w20ms ;Relative Subroutine Call" - чойта такое? Где сама w20ms в тексте?
Такое ощущение, что вышеприведенная программа - эдакая дикая аппликация, собранная по нитке на просторах ру(и не только ру)нета.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

Re: Прошу прощения, можно за комментировать

Сообщение testerplus »

SubDia писал(а):Где сама w20ms в тексте?
Так тут и выложат весь исходник! Чтобы потом каждый халявщик бабло срубал?
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Прошу прощения, можно за комментировать

Сообщение murzila »

kras писал(а):Тестера в армию)))
Это Вас, милейший, надо бы туда определить. Одна тема «Программирование МК без ассемблера и готовых приложений» чего стоит!
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Прошу прощения, можно за комментировать

Сообщение SubDia »

testerplus писал(а):Так тут и выложат весь исходник! Чтобы потом каждый халявщик бабло срубал?
:))) Ах же ж..а я-то уже мешки побег заготавливать, под бабло-то оно мешков много понадобится. =)
А если серьезно, то мне кажется, что этот весь "код" - это все, что есть у автора.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Закрыто

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