Работа с массивом
Работа с массивом
Люди, это можно почитать еще, но я немного отчаялся, поэтому прощу помочь хоть немного. На ногу порта поступает сигнал. Частота неизвестна и форма тоже, ну их требуется оценить. Нужно нормировать сигнал к тактовой частоте (110011110000 -> 101100) и записать сигнал в память.
Пока так понимаю: инициализация массива -> проверка ноги -> mow из адреса ноги в элемент, увеличение счетчика...
Подскажите, тогда напишу код, пока для меня это вообще что-то совсем неизведанное. Заранее вопрос: как сравнивать поэлементно массивы (на Ассемблере для процессора под windows так: цикл + mas)? Если верно, скажите точный код инициализации массива.
Пока так понимаю: инициализация массива -> проверка ноги -> mow из адреса ноги в элемент, увеличение счетчика...
Подскажите, тогда напишу код, пока для меня это вообще что-то совсем неизведанное. Заранее вопрос: как сравнивать поэлементно массивы (на Ассемблере для процессора под windows так: цикл + mas)? Если верно, скажите точный код инициализации массива.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Работа с массивом
Почитать-то можно. Вот понять - проблема.kras писал(а):это можно почитать еще
Was ist das?kras писал(а):нормировать сигнал к тактовой частоте (110011110000 -> 101100)
Так вы ж сами все написали.kras писал(а):инициализация массива -> проверка ноги -> mow из адреса ноги в элемент, увеличение счетчика...
Подскажите
kras писал(а):цикл + mas)?
Что есть цикл и что есть mas? Я в том смысле, при чем тут "+"?
kras писал(а):код инициализации массива.
Определитесь с языком программирования.
*********
Приведите скан задания, без домыслов и досужих размышлений. Чтоб понять, о чем речь.
Docendo discimus
Re: Работа с массивом
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 - текущий элемент массива.
Пишу только на ассемблере сейчас. Пока нарыл
Код: Выделить всё
MAS res 8 На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Работа с массивом
Массив в ассемблере понятие относительное. Вы можете определиться с его началом в озу директивой .org. А дальше уже отслеживать умозрительно. Заполнять его с порта можно так:
Определяем регистровую пару Х на начало массива. Читаем данные с порта, настроенного на ввод, командой PINA.2. Записываем в Х. Инкремент Х. И опять читем. Т.к. даанные с порта битовые, то надо записывать, конечно же, биты, а не целиком байт, слишком расточительно.
По-немецки писать не надо.
Определяем регистровую пару Х на начало массива. Читаем данные с порта, настроенного на ввод, командой PINA.2. Записываем в Х. Инкремент Х. И опять читем. Т.к. даанные с порта битовые, то надо записывать, конечно же, биты, а не целиком байт, слишком расточительно.
По-немецки писать не надо.
Docendo discimus
Re: Работа с массивом
Самый непонятный момент. Как выполнить адресацию к элементу массива? Это для pic, кстати.Определяем регистровую пару Х на начало массива.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Реклама
Re: Работа с массивом
в 16-ых пиках для этого есть регистры FSR и INDF. Читаем даташит на тему косвенной адресации.
Разумеется, границы массива и все остальное контролировать нужно самому.
Код: Выделить всё
movlw start_array
movwf FSR
movlw array_element
addwf FSR
movf indf, wА люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: Работа с массивом
Не понимает, что за FSR. МК - PIC16F84a. Может надо инициализировать регистр? Тогда как?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 ; конец программы
Так тоже не выходит:
Код: Выделить всё
movlw 0x20 ;настройка указателя на на чальный адрес
movwf FSR
NEXT clrf INDF ;очистка регистра под псев донимом INDF
incf FSR ;инкремент значения указателя
btfss FSR.4 ;очистка закончена?
goto NEXTНа практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Работа с массивом
Кое-что получилось:
НЕ ТО. Все, нид хэлп:)
Код: Выделить всё
INDF EQU 00H ; INDF=00H
FSR EQU 04H ; FSR=04H
MOVLW 1
MOVWF FSR
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Работа с массивом
Код: Выделить всё
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 ; конец программыНа практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Работа с массивом
почему я не удивился... Карабельников по Вас плачет...
Ну почитайте что-нибудь, прежде чем на форуме постить
http://www.pic24.ru/lib/exe/fetch.php/o ... tricks.pdf
Ну почитайте что-нибудь, прежде чем на форуме постить
http://www.pic24.ru/lib/exe/fetch.php/o ... tricks.pdf
Re: Работа с массивом
Если бы он не плакал, я бы, наверное, не писал:) Читаю, сейчас по ссылке тоже читаю, но не очень это все понятно.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Работа с массивом
Так и не разобрался:(
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru


