2014 dxdy logo

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

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




 
 AVR studio
Сообщение12.01.2014, 15:02 
Здравствуйте! Я написал код для стенда 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 
Аватара пользователя
 i  Тема перемещена из форума «Computer Science» в форум «Hardware»

 
 
 
 Re: AVR studio
Сообщение12.01.2014, 21:33 
1. Напишите русскими словами, понятными любому обывателю - что должна делать ваша коробочка. Какая гирлянда, как моргать и какие значения на лампочки.
2. Комментарии заслуживают помещения в ветку юмор. Т.к. они полностью дублируют описание действия каждой команды, что ясно и без них, но не дают никакого объяснения сути действий на уровне алгоритма.

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

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

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group