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

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

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

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

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

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

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

 
Опции темы
Непрочитано 08.01.2005, 19:29  
rcdimon
Гость
 
Сообщений: n/a
По умолчанию Что за таблицы смещения в PIC?

Что такое эти таблицы? Вот нашли такой код.


Код

Код:
org 0x10
segment ; Таблица преобразования DEC -› семисегментный код.
     CLRF   PCLATH
ADDWF  PCL, F 
dt 07E, 00C, 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE
;-----------------------------------------------------------------------
tab_dec  ; Таблица преобразования HEX -› DEC
CLRF   PCLATH
ADDWF  PCL, F 
base dt 0 ; База для вычисления смещения в таблице.
dt c_00-base, c_01-base, c_02-base, c_03-base
dt c_04-base, c_05-base, c_06-base, c_07-base
dt c_08-base, c_09-base, c_10-base, c_11-base
dt c_12-base, c_13-base, c_14-base, c_15-base, c_16-base
 ; Таблица десятичных значений двоичных разрядов
c_16 dt 6, 3, 5, 5, 6 ; 2^15 = 63556. 
c_15 dt 3, 2, 7, 6, 8 ; 2^15 = 32768. 
c_14 dt 1, 6, 3, 8, 4 ; 2^14 = 16384.
c_13 dt 0, 8, 1, 9, 2 ; 2^13 = 8192.
c_12 dt 0, 4, 0, 9, 6 ; 2^12 = 4096.
c_11 dt 0, 2, 0, 4, 8 ; 2^11 = 2048.
c_10 dt 0, 1, 0, 2, 4 ; 2^10 = 1024.
c_09 dt 0, 0, 5, 1, 2 ; 2^9 = 512.
c_08 dt 0, 0, 2, 5, 6 ; 2^8 = 256.
c_07 dt 0, 0, 1, 2, 8 ; 2^7 = 128. 
c_06 dt 0, 0, 0, 6, 4 ; 2^6 = 64.
c_05 dt 0, 0, 0, 3, 2 ; 2^5 = 32.
c_04 dt 0, 0, 0, 1, 6 ; 2^4 = 16.
c_03 dt 0, 0, 0, 0, 8 ; 2^3 = 8.
c_02 dt 0, 0, 0, 0, 4 ; 2^2 = 4.
c_01 dt 0, 0, 0, 0, 2 ; 2^1 = 2.
c_00 dt 0, 0, 0, 0, 1 ; 2^0 = 1.
; **************************************************  ********
Почему в начале у нее жестко задается адрес ORG ****

И если там есть строка tab_dec, могу предположить, что это подпрограмма, но где же тогда из нее выход?

А что это такое c_02-base ? Почему там знак -? Это минус? Или что это?
И что такое вот эти метки c_03, стоящие слева от таблицы?
[/code]
Реклама:
 
Непрочитано 08.01.2005, 23:12  
li$ergin
Гость
 
Сообщений: n/a
По умолчанию

А где был найден код. Ссылочку, плиз...
 
Непрочитано 09.01.2005, 00:04  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Что за таблицы смещения в PIC?

Сообщение от rcdimon
Почему в начале у нее жестко задается адрес ORG ****
а хз - может, чтоб оставить место для обработчика прерываний (он по адресу 4 сидит)
Сообщение от rcdimon
А что это такое c_02-base ? Почему там знак -? Это минус? Или что это?
И что такое вот эти метки c_03, стоящие слева от таблицы?
это минус. Смысл в том, что компилер в процессе компиляции вычисляет значения и записывает в ячейки вычисленное значение.

А метки... это метки и есть... И смысл их такой-же, как и в любом другом языке программирования... По сути - адрес команды.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 09.01.2005, 13:52  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 107
Сказал спасибо: 0
Сказали Спасибо 20 раз(а) в 20 сообщении(ях)
xelos на пути к лучшему
По умолчанию

Это обычный массив в програмной памяти контроллера. Поскольку, размер ОЗУ сильно ограничен, в нее пихать жестко заданные таблицы данных - трата памяти. Поэтому есть возможность разместить эти таблицы в ПЗУ.

классический вариант (по идее, то же самое, что ты привел):
Код:

log_table_interp
        ADDWF   PCL,F

        RETLW   0x00    ;0x100*log2(0x100/0x100)
        RETLW   0x16    ;0x100*log2(0x110/0x100)
        RETLW   0x2b    ;0x100*log2(0x120/0x100)
        RETLW   0x3f    ;0x100*log2(0x130/0x100)
        RETLW   0x52    ;0x100*log2(0x140/0x100)
        RETLW   0x64    ;0x100*log2(0x150/0x100)
        RETLW   0x76    ;0x100*log2(0x160/0x100)
        RETLW   0x86    ;0x100*log2(0x170/0x100)
        RETLW   0x96    ;0x100*log2(0x180/0x100)
        RETLW   0xa5    ;0x100*log2(0x190/0x100)
        RETLW   0xb3    ;0x100*log2(0x1a0/0x100)
        RETLW   0xc1    ;0x100*log2(0x1b0/0x100)
        RETLW   0xcf    ;0x100*log2(0x1c0/0x100)
        RETLW   0xdc    ;0x100*log2(0x1d0/0x100)
        RETLW   0xe8    ;0x100*log2(0x1e0/0x100)
        RETLW   0xf4    ;0x100*log2(0x1f0/0x100)
        RETLW   0x00    ;0x100*log2(0x200/0x100)
т.е. вызываешь log_table_interp с заданным смещением в F и функция возвращает тебе другое числовое значение, что размещено по смещению.
xelos вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что за транзисторы? Zionus Поиск схем. Делимся схемами 6 12.10.2008 19:51
Что за транзистор? grey448 Информация по радиокомпонентам 0 10.09.2008 20:44
что это? ehj07 Информация по радиокомпонентам 2 08.09.2008 11:11
Что за микросхема ASIC 21006536 MAGTEK? и что она делает? zhan99999 Информация по радиокомпонентам 1 04.04.2008 20:36
Что за деталька? aversI Ремонт оргтехники 5 28.08.2007 09:06


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


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