Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 14.10.2009, 23:18  
ST_Senya
Временная регистрация
 
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
ST_Senya на пути к лучшему
По умолчанию Размещение констант в памяти программ в 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))) Как мне допустим поместить из этого массива проризвольную его ячейку в аккамулятор?
Реклама:
ST_Senya вне форума  
Непрочитано 14.10.2009, 23:26  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию 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.
dosikus вне форума  
Непрочитано 14.10.2009, 23:40  
ST_Senya
Временная регистрация
 
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
ST_Senya на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

А можно поподробнее, если вас конечно не затруднит. Очень нужно понять и разобраться)) Допустим показать как обьявить таблицу констант допустим из 5 байтов, и потом получить к ней доступ. Я потмоу что если честно не понял что это за магический числа такие))) можно прям небольшую програмку? если вам не трудно)
ST_Senya вне форума  
Непрочитано 15.10.2009, 00:01  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию 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.
picavr вне форума  
Непрочитано 15.10.2009, 00:11  
ST_Senya
Временная регистрация
 
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
ST_Senya на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

всё спасибо огромное я разобрался)
ST_Senya вне форума  
Непрочитано 15.10.2009, 00:22  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

picavr, +1000 Накидал по памяти , асм уже забываю...
Сообщение от ST_Senya Посмотреть сообщение
А можно поподробнее
__________________
Осторожно , злой кот
dosikus вне форума  
Эти 4 пользователя(ей) сказали Спасибо dosikus за это сообщение:
Bigor (15.10.2009), gend (15.10.2009), mihail0106 (05.01.2010)
Непрочитано 15.10.2009, 14:27  
Mustang2004
Прохожий
 
Регистрация: 26.09.2006
Сообщений: 1
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Mustang2004 на пути к лучшему
По умолчанию 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
        .........
Удачи!
Mustang2004 вне форума  
Непрочитано 15.10.2009, 17:38  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

Ошибка однако. В этом случае массив размещается в памяти данных, а не в памяти программ, что не соответствует условиям задачи.
MisterDi вне форума  
Непрочитано 15.10.2009, 19:41  
ST_Senya
Временная регистрация
 
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
ST_Senya на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

А скажите почему нужно добавлять нулями до числу в степени 2???
и зачем вот это?
BSF PCLATH,0;PCLATH-установить адрес размещения таблицы
BCF PCLATH,1
BCF PCLATH,2
BCF PCLATH,3
ST_Senya вне форума  
Непрочитано 15.10.2009, 19:54  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Размещение констант в памяти программ в PIC

Смотри где находится,а PCLATCH старшый регистр счетчика команд.
Код:
ORG	0x0FA
А вот почему BSF PCLATH,0 не понял,ведь 0хFA требует одного регистра тока PCL ?
__________________
Глаза боятся,а руки делают.

Последний раз редактировалось CERGEI1982; 15.10.2009 в 20:05. Причина: вразумите
CERGEI1982 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot