Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.10.2009, 23:18
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Размещение констант в памяти программ в PIC
Люди помогите мне с асмом (MPASM) под PIC. Мне нужно разместить массив величиной 100 байтов в PIC 16А84A, массив констант, поэтому не вижу смысла брать другой пик с большей памятью, да и самому просто хочеться знать. У меня 2 вопроса , как разместить массив констант в памяти программ, и как потом получать доступ к этим данным. Вот худо бедо я разместил его, а как получить доступ? и вообще правильно ли я разместил его?
list p=16f84a
#include ‹P16F84A.INC›
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _RC_OSC
org 0000h
goto main
org 0004h
retfie
table dt 255, 250, 243, 237, 230, 224, 218, 211, 205, 198
main:
goto main
end
//Ну пусть для примера будет массив не из 100 а из 10 байтов (хотя мне нужно именно из 100))) Как мне допустим поместить из этого массива проризвольную его ячейку в аккамулятор?
|
|
|
|
14.10.2009, 23:26
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
Код:
|
; просмотр таблицы
tabl addwf PCL,f ;добавить W к PCL для получ. адреса эл-та таблицы
retlw B'1000' ;первый элемент
retlw B'1000'
retlw B'0100'
retlw B'0100'
retlw B'0010'
retlw B'0010'
retlw B'0001'
retlw B'0001'
retlw B'0010'
retlw B'0010'
retlw B'0100'
retlw B'0100' ;последний элемент |
Пользуем
Код:
|
movlw 2 ;w ‹- номер элемента таблицы
call tabl ; на выходе в w значение из таблицы |
Таблица не больше 256 байт
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 14.10.2009 в 23:36.
|
|
|
|
14.10.2009, 23:40
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
А можно поподробнее, если вас конечно не затруднит. Очень нужно понять и разобраться)) Допустим показать как обьявить таблицу констант допустим из 5 байтов, и потом получить к ней доступ. Я потмоу что если честно не понял что это за магический числа такие))) можно прям небольшую програмку? если вам не трудно)
|
|
|
|
15.10.2009, 00:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
Сообщение от dosikus
|
[CODE] ; просмотр таблицы
|
Я бы дополнил:
Код:
|
;указать адрес размещения таблицы
ORG 0x0FA ;если в абсолютных адресах
TAB CODE 0x0FA ;если перемещаемый код
TABS ANDLW 0x0F ;ограничить значение указателя на макс длину таблицы, что бы при любом значении W, не вышел за пределы таблицы(и не вызвал выполнение непредусмотренного кода т.е. - ГЛЮКА), в данном случае до 16 значений
BSF PCLATH,0;PCLATH-установить адрес размещения таблицы
BCF PCLATH,1
BCF PCLATH,2
BCF PCLATH,3
addwf PCL ;добавить W к PCL для получ. адреса
эл-та таблицы
retlw B'1000' ;первый элемент по адресу 0x100
retlw B'1000'
retlw B'0100'
retlw B'0100'
retlw B'0010'
retlw B'0010'
retlw B'0001'
retlw B'0001'
retlw B'0010'
retlw B'0010'
retlw B'0100'
retlw B'0100' ;последний элемент
retlw 0 ;дополнить таблицу до длинны кратной степени двойки, в данном случае до 16
retlw 0
retlw 0
retlw 0
;здесь вызываем таблицу
MOVLW 4 ;загружаем номер элемента таблицы
call TABS ;выборка элемента из таблицы, получаем в W |
Последний раз редактировалось picavr; 15.10.2009 в 00:07.
|
|
|
|
15.10.2009, 00:11
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
всё спасибо огромное я разобрался)
|
|
|
|
15.10.2009, 00:22
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
picavr, +1000 Накидал по памяти , асм уже забываю...
Сообщение от ST_Senya
|
А можно поподробнее
|
__________________
Осторожно , злой кот
|
|
|
Эти 4 пользователя(ей) сказали Спасибо dosikus за это сообщение:
|
|
|
15.10.2009, 14:27
|
|
Прохожий
Регистрация: 26.09.2006
Сообщений: 1
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
А можно через регистр косвенной адресации:
Код:
|
Table:
de 1,2,3,4,5,6,7,8,9,10
de 11,12,13,14,15,16
de 17,18,19,20,...,99
movlw Table+NumCell ;NumCell -номер требуемого элемента
movwf FSR ;для первого элемента NumCell=0
movf INDF,W ;требуемый байт в регистре W
......... |
Удачи!
|
|
|
|
15.10.2009, 17:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
Ошибка однако. В этом случае массив размещается в памяти данных, а не в памяти программ, что не соответствует условиям задачи.
|
|
|
|
15.10.2009, 19:41
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
А скажите почему нужно добавлять нулями до числу в степени 2???
и зачем вот это?
BSF PCLATH,0;PCLATH-установить адрес размещения таблицы
BCF PCLATH,1
BCF PCLATH,2
BCF PCLATH,3
|
|
|
|
15.10.2009, 19:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Размещение констант в памяти программ в PIC
Смотри где находится,а PCLATCH старшый регистр счетчика команд.
А вот почему BSF PCLATH,0 не понял,ведь 0хFA требует одного регистра тока PCL ?
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 15.10.2009 в 20:05.
Причина: вразумите
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:32.
|
|