Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 30.10.2017, 00:30   #1
LKIJ/ЛДКО
Member
 
Аватар для LKIJ/ЛДКО
 
Регистрация: 28.10.2014
Адрес: Lithuania / Литва, Vilnius / Вильнюс
Возраст: 32
Сообщений: 57
Вес репутации: 100/13
LKIJ/ЛДКО will become famous soon enoughLKIJ/ЛДКО will become famous soon enough
По умолчанию PIC24F таблица скорой индикации чисел

Привет. Пробовал перенести конструкцию скорой индикации чисел на 7-сегментном индикаторе из 8-битного семейство на PIC24F. Оказался команда retlw неможет нести 16-битного числа, только 10-битный. Создал новую конструкцию (2 код), неработает. Вопрос - мая конструкця выглядет рабочей или видни ошибки?

Код:
;===============================================================================
; Tablica skoroj indikacii cisel 8-bitnogo MCU
;===============================================================================
IND_TABL                addwf   PCL, F
                        retlw   b'00111111' ; 0
                        retlw   b'00000110' ; 1
                        retlw   b'01011011' ; 2
                        retlw   b'01001111' ; 3
                        retlw   b'01100110' ; 4
                        retlw   b'01101101' ; 5
                        retlw   b'01111101' ; 6
                        retlw   b'00000111' ; 7
                        retlw   b'01111111' ; 8
                        retlw   b'01101111' ; 9
Код:
    ...
    mov	    EDINICY, W0
    call    IND_TABL
    mov	    W0, PORTB
    ...

;===============================================================================
; Tablica skoroj indikacii cisel 16-bitnogo MCU
;===============================================================================
IND_TABL:
    rlnc    W0, W0 ; W0 = W0 * 2
    inc	    W0, W0 ; W0 = W0 + 1
    add	    PCL ; PCL = PCL + W0
    mov	    #0b1011001100000010, W0 ; 0
    return
    mov	    #0b0010000000000010, W0 ; 1
    return
    mov	    #0b1001001000000011, W0 ; 2
    return
    mov	    #0b0011001000000011, W0 ; 3
    return
    mov	    #0b0010000100000011, W0 ; 4
    return
    mov	    #0b0011001100000001, W0 ; 5
    return
    mov	    #0b1011001100000001, W0 ; 6
    return
    mov	    #0b0011000000000010, W0 ; 7
    return
    mov	    #0b1011001100000011, W0 ; 8
    return
    mov	    #0b0011001100000011, W0 ; 9
    return
__________________
Кто, если не мы, когда, если не сейчас?
LKIJ/ЛДКО вне форума   Ответить с цитированием
Старый 30.10.2017, 08:24   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,499
Вес репутации: 3061/64
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC24F таблица скорой индикации чисел

tblrd. Table Read.
besogon вне форума   Ответить с цитированием
Старый 30.10.2017, 15:28   #3
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,125
Вес репутации: 2724/86
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: PIC24F таблица скорой индикации чисел

Нет никакой необходимости связываться с табличным чтением в 16-разрядной платформе, если только не требуется получать все 24 разряда.
Для целей 16-разрядного доступа к флешу программ (таблице констант) существует psv-доступ. Его нужно включить в CORCON (если это требуется в конкретном МК) и разобраться в даташите с механизмом этого доступа. В контроллерах с оперативной памятью до 16К этот доступ не требует управления сегментами доступа, а если больше, то требует.
Синтаксис доступа такой (W0 - адрес в таблице; W0 - табличный результат):
Код:
..............
    mov   #psvoffset(Table), W1
    sl       W0, W0
    add    W0, W1, W1
    mov   [W1], W0
.................
.................
.................
Table:
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
Марк вне форума   Ответить с цитированием
Старый 30.10.2017, 23:27   #4
LKIJ/ЛДКО
Member
 
Аватар для LKIJ/ЛДКО
 
Регистрация: 28.10.2014
Адрес: Lithuania / Литва, Vilnius / Вильнюс
Возраст: 32
Сообщений: 57
Вес репутации: 100/13
LKIJ/ЛДКО will become famous soon enoughLKIJ/ЛДКО will become famous soon enough
По умолчанию Re: PIC24F таблица скорой индикации чисел

Цитата:
Сообщение от Марк Посмотреть сообщение
Нет никакой необходимости связываться с табличным чтением в 16-разрядной платформе, если только не требуется получать все 24 разряда
Есть, ето несоображение (пока) двух предъявленых варянтов.Так что если нетрудно, поглядите мой код при кофе, логичный он или нет.
__________________
Кто, если не мы, когда, если не сейчас?
LKIJ/ЛДКО вне форума   Ответить с цитированием
Старый 30.10.2017, 23:34   #5
LKIJ/ЛДКО
Member
 
Аватар для LKIJ/ЛДКО
 
Регистрация: 28.10.2014
Адрес: Lithuania / Литва, Vilnius / Вильнюс
Возраст: 32
Сообщений: 57
Вес репутации: 100/13
LKIJ/ЛДКО will become famous soon enoughLKIJ/ЛДКО will become famous soon enough
По умолчанию Re: PIC24F таблица скорой индикации чисел

Цитата:
Сообщение от besogon Посмотреть сообщение
tblrd. Table Read.
Ненайдется какой нибудь маленкий пример? tbl команды, там опять работа с этими волшебными адресами, мне трудно с ним.
__________________
Кто, если не мы, когда, если не сейчас?
LKIJ/ЛДКО вне форума   Ответить с цитированием
Старый 30.10.2017, 23:50   #6
LKIJ/ЛДКО
Member
 
Аватар для LKIJ/ЛДКО
 
Регистрация: 28.10.2014
Адрес: Lithuania / Литва, Vilnius / Вильнюс
Возраст: 32
Сообщений: 57
Вес репутации: 100/13
LKIJ/ЛДКО will become famous soon enoughLKIJ/ЛДКО will become famous soon enough
По умолчанию Re: PIC24F таблица скорой индикации чисел

Цитата:
Сообщение от Марк Посмотреть сообщение
Синтаксис доступа такой (W0 - адрес в таблице; W0 - табличный результат):
Код:
..............
    mov   #psvoffset(Table), W1
    sl       W0, W0
    add    W0, W1, W1
    mov   [W1], W0
.................
.................
.................
Table:
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
.pword   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
mov #psvoffset(Table), W1
Что записивается в регистр W1?

sl W0, W0
Чем отличается от команды rlnc (rotate left no carrry)?

mov [W1], W0
У меня в литературе есть только mov W0, [W1] пример, как расшифровывается ваша строка?

.pword - всегда восемь констант? А где они физически? ASM30 user guide практически недает полезной информации с кучей примеров.
__________________
Кто, если не мы, когда, если не сейчас?
LKIJ/ЛДКО вне форума   Ответить с цитированием
Старый 31.10.2017, 04:43   #7
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,125
Вес репутации: 2724/86
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: PIC24F таблица скорой индикации чисел

#psvoffset(метка таблицы) - это константа равная стартовому адресу таблицы с указанной меткой.

sl - логический сдвиг влево (при логическом сдвиге флаг переноса не принимает участия и всегда в регистр вдвигается ноль). Странно, что Вы не читаете мануал по программированию 16-разрядной платформы...

mov [W1], W0 - значение по адресу указанному в W1 заносится в W0.

.pword может содержать любое количество 16-разрядных констант в строке, но не более допустимого редактором количества (не помню сколько, но много). То есть от одной и больше. Эта директива упаковывает в каждое 24-разрядное слово флеша программ только одно 16-разрядное слово. Старший байт остается равным нулю.

.pbyte упаковывает байты во все разряды 24-разрядного слова программного флеша.
Марк вне форума   Ответить с цитированием
Старый 31.10.2017, 11:18   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,499
Вес репутации: 3061/64
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC24F таблица скорой индикации чисел

LKIJ/ЛДКО
глава flash program memory, пункт 3.7
Код:
PROG_DATA: .word 0x1234 ; 16 bit variable in program memory Create EA for read by loading TBLPAG and W0
MOV #tblpage(PROG_DATA), W0 ; Get upper byte address of variable PRG_DATA
MOV W0, TBLPAG ; Load upper address into TBLPAG register
MOV #tbloffset(PROG_DATA), W1 ; Load W1 with lower address word of variable PRG_DATA Read data from program memory into W registers
TBLRDL [W1], W2 ; W2 contains 16 bit variable data
besogon вне форума   Ответить с цитированием
Старый 12.11.2017, 01:35   #9
LKIJ/ЛДКО
Member
 
Аватар для LKIJ/ЛДКО
 
Регистрация: 28.10.2014
Адрес: Lithuania / Литва, Vilnius / Вильнюс
Возраст: 32
Сообщений: 57
Вес репутации: 100/13
LKIJ/ЛДКО will become famous soon enoughLKIJ/ЛДКО will become famous soon enough
По умолчанию Re: PIC24F таблица скорой индикации чисел

Мистер Марк, скажите, что не так написал в строке PSVOFFSET, что код небуилдится? Принтскрин ниже.
Миниатюры
fsvoffset.png  
__________________
Кто, если не мы, когда, если не сейчас?
LKIJ/ЛДКО вне форума   Ответить с цитированием
Старый 12.11.2017, 06:03   #10
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,125
Вес репутации: 2724/86
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: PIC24F таблица скорой индикации чисел

Исправьте PSVOFFSET на psvoffset. В строках 79 и 99 исходника.
Марк вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофункциональные часы. Н.Заяц.Книга 4. samko Вопросы начинающих 11 12.06.2012 09:26
Часы на pic 16f874a и ds1307n работают, но не работают faramun21 Продукция MICROCHIP 8 10.07.2009 04:40


Часовой пояс GMT +3, время: 18:52.


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