2014 dxdy logo

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

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




 
 Нужна помощь по мехатронике(микропроцессоры)
Сообщение13.12.2016, 15:54 
На лабораторной было задание: зажечь выделенные сегменты(изображение)
Написал код, но он неправильный(не весь, где-то в конкретных местах ошибка). Возможно, ошибки в последовательности зажигания посредством операторов. Много раз исправил, но до сих пор не понимаю, что же не так(Atmel).
Вот сам код:
LDI R16, 0
OUT DDR, R16
LDI R16, 0b00000011
OUT DDR, R16
pro1:
LDI R16, 0b00000001
OUT portB, R16
LDI R16, 0b11000000
OUT port A, R16
rcall Delay
pro 2:
LDI R16, 0b00000010

OUT port B, R16
LDI R16, 0b10000100
OUT port A, R16
rcall Delay
rjump pro1
Вот изображение схемы:
Изображение

 
 
 
 Re: Нужна помощь по мехатронике(микропроцессоры)
Сообщение13.12.2016, 17:05 
Если убрать лишние пробелы в именах портов, добавить имена портов в DDR, и писать в DDR регистры не 0, а 0xFF, то программа станет правильной. Последняя ошибка, с 0 вместо 0xFF, весьма характерная, сигнализирует что документацию на процессор вы читали весьма невнимательно.

 
 
 
 Re: Нужна помощь по мехатронике(микропроцессоры)
Сообщение13.12.2016, 17:39 
Dmitriy40 в сообщении #1176628 писал(а):
Если убрать лишние пробелы в именах портов, добавить имена портов в DDR, и писать в DDR регистры не 0, а 0xFF, то программа станет правильной. Последняя ошибка, с 0 вместо 0xFF, весьма характерная, сигнализирует что документацию на процессор вы читали весьма невнимательно.

А еще немного поподробнее?

 
 
 
 Re: Нужна помощь по мехатронике(микропроцессоры)
Сообщение13.12.2016, 20:15 
Куда ж ещё подробнее. Что именно непонятно? Приведённая вами программа вообще компилироваться не должна из-за синтаксических ошибок (в именах портов и регистрах DDR). И порт А вы на вывод не настроили. Так тоже непонятно? Ну я не знаю как ещё подсказать без переписывания кода за вас.

-- 13.12.2016, 20:20 --

Насколько я знаю ассемблеры для AVR там нигде нет просто регистра DDR и нигде нельзя писать имена портов (port A и port B) с пробелами. Это всё должно давать ошибку компиляции. До запуска программы дело не дойдёт вообще.

-- 13.12.2016, 20:23 --

В метках пробелы тоже вроде бы недопустимы.
И команды rjump тоже нет, есть rjmp.
В таком виде приведённая программа вообще не могла и не должна была запуститься.

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


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