Работа с массивом

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Работа с массивом

Сообщение kras »

Люди, это можно почитать еще, но я немного отчаялся, поэтому прощу помочь хоть немного. На ногу порта поступает сигнал. Частота неизвестна и форма тоже, ну их требуется оценить. Нужно нормировать сигнал к тактовой частоте (110011110000 -> 101100) и записать сигнал в память.
Пока так понимаю: инициализация массива -> проверка ноги -> mow из адреса ноги в элемент, увеличение счетчика...
Подскажите, тогда напишу код, пока для меня это вообще что-то совсем неизведанное. Заранее вопрос: как сравнивать поэлементно массивы (на Ассемблере для процессора под windows так: цикл + mas)? Если верно, скажите точный код инициализации массива.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Работа с массивом

Сообщение pyzhman »

kras писал(а):это можно почитать еще
Почитать-то можно. Вот понять - проблема.
kras писал(а):нормировать сигнал к тактовой частоте (110011110000 -> 101100)
Was ist das?
kras писал(а):инициализация массива -> проверка ноги -> mow из адреса ноги в элемент, увеличение счетчика...
Подскажите
Так вы ж сами все написали.
kras писал(а):цикл + mas)?

Что есть цикл и что есть mas? Я в том смысле, при чем тут "+"?

kras писал(а):код инициализации массива.

Определитесь с языком программирования.
*********
Приведите скан задания, без домыслов и досужих размышлений. Чтоб понять, о чем речь.
Docendo discimus
Реклама
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

It's about when U receive an one bit of signal from, for example, "porta, 2", it happens during stroke. After U're searching for an input signal once more and again it is an one stroke in time dimention. Finally, U have a signal like this: "1100001111". It can be divided into 2 so that gives this: "10011". I can interpret it like one array consist of a following one after another constant numbers from input, can be sended to outport after one cycle instead of two. On the other hand, if there is a single number, what has a different numbers around oneself, dividing isn't demanded. Or I must write it only on Deutsch?
Пишу только на ассемблере сейчас. Пока нарыл

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

MAS         res         8 
Хочу понять, как вообще хоть чем-нибудь заполнить массив. То есть mas - текущий элемент массива.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Работа с массивом

Сообщение pyzhman »

Массив в ассемблере понятие относительное. Вы можете определиться с его началом в озу директивой .org. А дальше уже отслеживать умозрительно. Заполнять его с порта можно так:
Определяем регистровую пару Х на начало массива. Читаем данные с порта, настроенного на ввод, командой PINA.2. Записываем в Х. Инкремент Х. И опять читем. Т.к. даанные с порта битовые, то надо записывать, конечно же, биты, а не целиком байт, слишком расточительно.
По-немецки писать не надо.
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

Определяем регистровую пару Х на начало массива.
Самый непонятный момент. Как выполнить адресацию к элементу массива? Это для pic, кстати.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Работа с массивом

Сообщение uldemir »

в 16-ых пиках для этого есть регистры FSR и INDF. Читаем даташит на тему косвенной адресации.

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

 movlw start_array
 movwf FSR
 movlw array_element
 addwf FSR
 movf  indf, w
Разумеется, границы массива и все остальное контролировать нужно самому.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

movlw 1
movwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movlw 1
addwf FSR
movf indf, w
m1
movwf PORTB
btfsc PORTA,2 ; продолжаем, если есть
goto m1
goto m1
end ; конец программы
Не понимает, что за FSR. МК - PIC16F84a. Может надо инициализировать регистр? Тогда как?
Так тоже не выходит:

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

movlw 0x20 ;настройка указателя на на чальный адрес

movwf FSR

NEXT clrf INDF ;очистка регистра под псев донимом INDF

incf FSR ;инкремент значения указателя

btfss FSR.4 ;очистка закончена?

goto NEXT
Но еще раз напоминаю, что я тривиально мог вставить код не в то место, либо не озаглавить его и тп
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

Кое-что получилось:

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

INDF 		EQU 00H ; INDF=00H
FSR 		EQU 04H ; FSR=04H
MOVLW 1
MOVWF FSR
НЕ ТО. Все, нид хэлп:)
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

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

LIST        P=PIC16F84A
            __CONFIG    H'3FF2'
STATUS      EQU         H'0003'
TRISA       EQU         H'0005'
PORTA       EQU         H'0005'
TRISB       EQU         H'0006'
PORTB       EQU         H'0006'
INDF 		EQU 		H'0000'
FSR 		EQU 		H'0004'
            org         0           ; начало программы
; подготовительные моменты
            bsf         STATUS,5    ; переход в Банк 1 
            movlw       b'00011111'
            movwf       TRISA
            clrf        TRISB
            bcf         STATUS,5    ; переход назад в Банк 0
            clrf        PORTB       ; очистка порта
MOVLW PORTA,2
MOVWF FSR
m1
	movlw		FSR
            movwf       PORTB
            btfsc       PORTA,2     ; продолжаем, если есть
            goto        m1
            goto        m1
            end                     ; конец программы
Ошибка из-за MOVLW PORTA,2!:(
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Работа с массивом

Сообщение urry »

почему я не удивился... Карабельников по Вас плачет...
Ну почитайте что-нибудь, прежде чем на форуме постить
http://www.pic24.ru/lib/exe/fetch.php/o ... tricks.pdf
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

Если бы он не плакал, я бы, наверное, не писал:) Читаю, сейчас по ссылке тоже читаю, но не очень это все понятно.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Работа с массивом

Сообщение kras »

Так и не разобрался:(
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Закрыто

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