В общем огромнейшее спасибо Вам, Сергей Борщ!!!!!!!!!
Получилось так:
в хедере Bitmap.h массив карты const __flash char IMAGE[];
в Bitmap.с написал так
Код
FuncFlash(char __flash *str_)
{
while (*str_++ != 0);
}
void LoadBitmap(char const __flash *bitmap)
{
uint16_t i, j,by;
for(i=0; i<64; i+=8)
for(j=0; j<128; j++)
{
by = FuncFlash((char __flash*)(bitmap++));
//by = printf_P(bitmap++);
ks0108GotoXY(j, i);
ks0108WriteData(by);
}
}
Всё работает , даже by = printf_P(bitmap++); не выдаёт ошибку. Правда после 167 ошибки вылезла 27
27 Entry entry in module module (file) redefined in module module (file)
There are two or more entries with the same name. XLINK aborts immediately.
пришлось #include "Bitmap.h" в котором находится массив обявить его как extern ну и прототип функции
соответственно:
Код
Основной модуль программы
//#include "Bitmap.h"
extern void LoadBitmap(char const __flash *bitmap);
extern const __flash char IMAGE[];
int main(void) {
........
........
LoadBitmap(IMAGE);
while(1);
}
Ну ошибок и нету. Правда проверить на реальном ГЖКИ не могу, нету внутреннего
источника отрицательного напряжения для установки контрассности ну и демоплаты.
Протеус не признаю (люблю "живое" железо)
Но непонятки (скрытая тревога) остались. Написал так:
Код
FuncFlash(char const __flash *str_)
{
while (*str_++ != 0);
}
void LoadBitmap(char const __flash *bitmap)
{
uint16_t i, j,by;
for(i=0; i<64; i+=8)
for(j=0; j<128; j++)
{
by = FuncFlash((char const __flash*)(bitmap++));
//by = printf_P(bitmap++);
ks0108GotoXY(j, i);
ks0108WriteData(by);
}
}
Появилось предупреждение:
Warning[w6]: Type conflict for external/entry "FuncFlash", in module ks0108 against external/entry in module Bitmap;
function types differ in parameter 1; types have different type attributes
/* In module ks0108: */
/* Function, args 1, attr 0 */
int (__version_3 FuncFlash)(char __flash *);
/* In module Bitmap: */
/* Function, args 1, attr 0 */
int (__version_3 FuncFlash)(char __flash const *);
Прикрепленные файлы
ks0108.zip ( 61.99 килобайт )
Кол-во скачиваний: 25