2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему
 
 AVR studio
Сообщение12.01.2014, 15:02 


22/05/13
43
Здравствуйте! Я написал код для стенда STK-500. Подскажите, как организовать счетчик от 0 до 255, чтобы значения выводились на лампочки (т.е. должна получиться своего рода гирлянда). Заранее благодарен.
Код:
.include "m16def.inc"   

LDI R30,0x01     // инициализация порта B (работает как выход)
OUT DDRB,R30

_1:
SBIC PINA,7   //пропуск команды RJMP _1,  если 7-й бит PINA сброшен
RJMP _1     // перейти по метке _1

_2:
IN R21,PINA   
MOV R22,R21 // пересылка содержимого регистра R21 в R22
MOV R23,R21 // пересылка содержимого регистра R21 в R23

ANDI R21, 0X01 // убирает мусор в регистре R21
LSR R22     // логический сдвиг содержимого регистра R22 на один разряд
LSR R23     
LSR R23

ANDI R22,0x01
ANDI R23,0x01

COM R22     // инверсия содержимого регистра  R22
OR R22,R23    // логическое «ИЛИ» содержимого регистров  R22 и R23
COM R21     // инверсия содержимого регистра  R21
AND R21,R22  // логическое «И» содержимого регистров R21 и R22

OUT  PORTB,R21   // вывод содержимого регистра R23 в PORTB
RJMP _1     // перейти по метке _1


 Профиль  
                  
 
 Posted automatically
Сообщение12.01.2014, 15:40 
Админ форума
Аватара пользователя


19/03/10
8756
 i  Тема перемещена из форума «Computer Science» в форум «Hardware»

 Профиль  
                  
 
 Re: AVR studio
Сообщение12.01.2014, 21:33 


05/09/12
2284
1. Напишите русскими словами, понятными любому обывателю - что должна делать ваша коробочка. Какая гирлянда, как моргать и какие значения на лампочки.
2. Комментарии заслуживают помещения в ветку юмор. Т.к. они полностью дублируют описание действия каждой команды, что ясно и без них, но не дают никакого объяснения сути действий на уровне алгоритма.

 Профиль  
                  
 
 Re: AVR studio
Сообщение13.01.2014, 04:38 
Заслуженный участник


15/05/05
3342
USA
_Ivana в сообщении #813471 писал(а):
2. Комментарии заслуживают помещения в ветку юмор. Т.к. они полностью дублируют описание действия каждой команды, что ясно и без них, но не дают никакого объяснения сути действий на уровне алгоритма.
Эти комментарии мне не кажутся самоочевидными:
Код:
LDI R30,0x01     // инициализация порта B (работает как выход)
SBIC PINA,7   //пропуск команды RJMP _1,  если 7-й бит PINA сброшен
Такие комментарии часто встречаются именно в ассемблерном коде и могут быть полезными для читателя, не очень знакомого с конкретным CPU.

 Профиль  
                  
 
 Re: AVR studio
Сообщение13.01.2014, 17:54 


05/09/12
2284
Yuri Gendelman в сообщении #813649 писал(а):
Эти комментарии мне не кажутся самоочевидными:
Ну если разбираться, то первый из процитированных комментариев - это единственный, хоть как-то описывающий суть дела, а не форму. Да и то, собственно, LDI - это лоад иммедиэйт, загрузка константы в регистр общего назначения, и никак не связана с каким-то портом. А вот OUT - это копирование содержимого регистра общего назначения в системный регистр, и именно эта строка определяет работу порта В как вход/выход. Кстати, константа загружена $1$, так что как выход будет работать только одна нога порта, остальные в данном случае будут входами.
Второй комментарий - именно "что", а не "почему, зачем и для каких глобальных целей". Посмотреть сюда и понять суть команды можно за секунду, а разбираться в глобальном замысле творца кода, зачем ему опрашивать в основном цикле какой-то входной порт, восстанавливать по голому коду без комментариев (именно без них, фактически) структуру и алгоритм программы конечно можно, но... Это реально смахивает на дизассемблирование кода, причем непонятно что делающего.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group