реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> табличное чтение на PIC16
torik
сообщение Dec 9 2005, 12:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Привет всем опять. Задача такая - надо очень максимально быстро excl.gif читать из памяти программ данные.
На ассемблере так решал эту проблему:

movlw 0x08 ;старший байт адреса в памяти программ
movwf PCLATH
movlw 0x01 ;младший байт символа 0 в памяти программ
call PCL
movwf s0
movlw 0x09 ;младший байт символа 1 в памяти программ
call PCL
movwf s1
......
PCL: ;переходим на таблицу с адресом PCLATH:PCL
movwf PCL
......
ORG 0x800h
retlw 0x33
retlw 0x36
......

В результате один символ считывается за вроде 7 тактов.
НАДО СДЕЛАТЬ ТОЖЕ САМОЕ НА HITECH C!!! Никак не добиться результата.

Проблема №1:
- для таблицы в памяти программ не задать адрес размещения. Пишу
#pragma psect const=videorom
const unsigned char video [] = {
0b00111001,
..........
и ключ для линкера -L-Pvideorom=0x0800, т.е в целом -L-Pvideorom=0x0800 -PSECTMAP -M"$(TARGETBASE).map" -O"$(TARGETBASE).cof" -O"$(TARGETBASE).hex"
Компилятор ругается unknown psect: videorom
В чем тут проблема не пойму.

Проблема №2:
Функция вместо PCL такая
extern unsigned char video_call_pcl(unsigned char n) {
PCL = n;
return 0; //чтобы не ругался компиллер.
}
В ней добавляются лишние команды после компиляции:
CLRF 0x3 - очистка статуса
7C0 00A4 MOVWF 0x24 - сохранение передаваемого парамаметра
Как их убрать кроме как вручную?


Спасибо всем.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016