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

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

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

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

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

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

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

 
Опции темы

Что за таблицы смещения в PIC?

Непрочитано 08.01.2005, 18: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, 22:12  
li$ergin
Гость
 
Сообщений: n/a
По умолчанию

А где был найден код. Ссылочку, плиз...
 
Непрочитано 08.01.2005, 23:04  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Что за таблицы смещения в PIC?

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

А метки... это метки и есть... И смысл их такой-же, как и в любом другом языке программирования... По сути - адрес команды.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 09.01.2005, 12:52  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 98
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
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, время: 03:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.