roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 11 май 2009, 19:02

Какой еще затык? Символ - это просто байт

Re: МикроКонтроллеры начинающим - общие вопросы

MiBBiM » 11 май 2009, 19:08

какой байт какому символу соотвествует? вот в чем затык.
вобщем, последняя попытка: автору нужна функция на ассемблере, в которую заряжаешь символ, а на выходе - его код в таблице.
не знаю как это выглядит на асме, но:
Код: Выделить всёРазвернуть
function myfunc(c: char): byte;

и чтобы было так:
0x37=myfunc('7');

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 11 май 2009, 19:10

наверно ты удивишься но '7' и 0x37 - это одно и то же :)

Re: МикроКонтроллеры начинающим - общие вопросы

MiBBiM » 11 май 2009, 19:16

Duhas хочет вывести строку 'speed' и спрашивает, можно ли это сделать по-человечески в комплияторе(кстати, каком?) или придется последовательно набивать байты: 0x73 0x70 0x65 0x65 0x64.

Добавлено спустя 33 секунды:
P.S. ничуть не удивился :)
MiBBiM писал(а):ну дык чтобы на терминалке вывести число семь, ему а самом деле надо послать не 0x07, а 0x37 - код таблицы, соотвествующий символу '7'

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 11 май 2009, 19:19

кто-то меня понимает )))

тут скорее не функцию даже а дефайн символу значения нада бы по идее....

Добавлено спустя 2 минуты 12 секунд:
ПС, пишу в студии...

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 11 май 2009, 19:38

avr-gcc:
Код: Выделить всёРазвернуть
#define __SFR_OFFSET 0
#include <avr/io.h>

.section .text

; это строка
mystring:
.asciz  "Speed: "

; *******************************************
; функция вывода строки в UART
; *******************************************
print_flash_str:
    movw R30, R24
pfs_loop:
    ld  R24, Z+
    and R24, R24
    breq pfs_loop_end
pfs_busy:
    sbis UCSRA, UDRE
    rjmp pfs_busy
    out UDR, R24
    rjmp pfs_loop
pfs_loop_end:
    ret
; ................................................
; ................................................

; вызов функции

ldi R24, lo8(pm(mystring))
ldi R25, hi8(pm(mystring))
call print_flash_str


Читаем http://www.nongnu.org/avr-libc/user-man ... mbler.html

Re: МикроКонтроллеры начинающим - общие вопросы

contr » 11 май 2009, 19:48

мне нужно терминалкой чтоб смотрелось....

1. составляете массив/таблицу ansi кодов 0..9 и интересующих символов.
2. посылаете в РС набор символов, скажем ячейки 10,11,12,12,13 /speed/, где лежат значения 53h=S,50h=P,45h=E,44h=D.
3. переводите бинарное в десятичное,
4. берете из массива ansi код цифры старшего разряда,
5. посылаете в РС и т.д.
Не очень красиво в плане ресурсов МК, но под терминал и в учебных целях сгодится. Тем более, что при работе с LCD примерно так все и происходит.

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 11 май 2009, 19:54

1. составляете массив/таблицу ansi кодов 0..9 и интересующих символов. - нафиг не надо
2. посылаете в РС набор символов, скажем ячейки 10,11,12,12,13 /speed/, где лежат значения 53h=S,50h=P,45h=E,44h=D. - пример выше
3. переводите бинарное в десятичное, - да
4. берете из массива ansi код цифры старшего разряда, - нафиг не надо, простая арифметическая опрерация (+0x30), включается в п. 3
5. посылаете в РС и т.д.

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 11 май 2009, 21:52

спс за пример функции, но ее как рас я себе отлично представлю))) собственно интересовался я вот этой сточкой только:

.asciz "Speed: "

ldi R24, lo8(pm(mystring))
ldi R25, hi8(pm(mystring))

hi8, lo8, pm описаны в io.h? и нужны ли они мне?

собсна директивы
.section .text
тоже было б неплохо описать чуток...

моя студия директиву .asciz не понимает...

Добавлено спустя 11 минут 15 секунд:
мб таким образов задефайнить символы все
.set a=0x41
.set _A=0x61

и в хидер засунуть.. а потом юзать так - .db a,_a

Добавлено спустя 58 минут 31 секунду:
прописав в файлике буквы англ и рус до меня дошло что они и так прописаны 'S' подобным образом :crazy: :crazy: :lol:

Re: МикроКонтроллеры начинающим - общие вопросы

contr » 11 май 2009, 22:04

если символы и цифры переводить в ansi коды через функции - получим решение для РС. А если через массив/таблицу, то универсальный вариант, который подходит не только для терминала, но и других индикаторов

Re:

flyroman » 12 май 2009, 01:22

Digit писал(а):2 avr123.nm.ru

В курсе, в той задаче, где работа с флешь-памятью, на схеме устройства ошибка - ни сама память, ни светодиоды (оба) к питанию не подключены. :!:

Они подключены надписями на проводдниках схемы (http://www.avr123.nm.ru/z7.htm). Принято что проводники с одинаковым названием электрически соединены.


Сколько времени прошло а изображение все то же... И для новичка не факт, что эти проводники соеденины)) :wink:
А так материал отличный)

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 12 май 2009, 04:52

Duhas писал(а):моя студия директиву .asciz не понимает...

Я ж написал - avr-gcc. Атмеловским ассемблером я не пользуюсь, не помню точно как там . Типа такого:
Код: Выделить всёРазвернуть
.device atmega32
.cseg

; это строка
mystring:
.db  "Speed: ", 0
; ................................................
; ................................................
; вызов функции
ldi R24, low(mystring)
ldi R25, high(mystring)
call print_flash_str

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 12 май 2009, 05:13

ок, спс, так в студии работает... про гцц не заметил видимо...

Re: Re:

avr123.nm.ru » 12 май 2009, 08:15

flyroman писал(а):Сколько времени прошло а изображение все то же...

Вы не правы. Изображние было подкорректировано.

Re: МикроКонтроллеры начинающим - общие вопросы

SiemX » 19 май 2009, 16:27

что за контролер UB855D


Rambler\'s Top100 Mail.ru counter