Jak obsługiwać peryferia w Franklin C na 8051 bez pamięci zewnętrznej?

Franklin C na '51 i peryferia - dlugie





Poprzedni Następny
Wiadomość
Spis treści
From: "Bartosz Sarama" <quasimod_at_nospam_poczta.onet.pl>
Subject: Franklin C na '51 i peryferia - dlugie
Date: Fri, 19 Apr 2002 19:44:39 +0200


Witam.
Zaczynam bawic sie kompilatorem C na 8051 Franlkin Sofrware.
Pierwszy, na tyle powazny klopot, ze nie moge go przeskoczyc od kilku dni
wyniknal przy okazji obslugi peryferii adresowanych jak pamiec zewnetrzna.
Problem w tym, ze w urzadzeniu nie ma pamieci zewnetrznej, wiec dalem model
pamieci SMALL. To zrodzilo bledy przy inicjacji wskaznikow do peryferii, np:

at 0x8000 xdata char *LCD_cmd;

kompilator wywala blad: 'LCD_cmd': absolute specifier illegal

Tu sie nie dziwie. Zmieniam model pamieci na COMPACT, i blad znika, ale w
kodzie wynikowym ten wskaznik jest niezdefiniowany, a w funkcji, ktora go
uzywa, komenda:

*LCD_dat= dat;

jest po prostu pomijana :(
DLACZEGOOOO???? Co zle robie??

Poza tym zdaje mi sie, ze kompilator przeniosl czesc swoich zmiennych do
XRAM, ktorego nie ma :(


Probowalem problem obejsc assemblerem, zadeklarowawszy:

#define LCD_cmd 0x8000

a w funkcji:

#pragma asm
mov dptr, #LCD_dat
mov a, dat
mov _at_nospam_dptr, a
#pragma endasm

Niestety, to w kodzie wynikowym jest rowniez pomijane.

Nie bardzo wiem co z tym fantem zrobic.


Pomozecie??

Pozdrawiam
Bartosz Sarama




Poprzedni Następny
Wiadomość
Spis treści
From: Maciej Czapla <mc_at_nospam_sensor.com.pl>
Subject: Re: Franklin C na '51 i peryferia - dlugie
Date: Sun, 21 Apr 2002 00:04:35 +0200


Zaczynam bawic sie kompilatorem C na 8051 Franlkin Sofrware.
Pierwszy, na tyle powazny klopot, ze nie moge go przeskoczyc od kilku dni
wyniknal przy okazji obslugi peryferii adresowanych jak pamiec zewnetrzna.
Problem w tym, ze w urzadzeniu nie ma pamieci zewnetrznej, wiec dalem model
pamieci SMALL. To zrodzilo bledy przy inicjacji wskaznikow do peryferii, np:

at 0x8000 xdata char *LCD_cmd;

kompilator wywala blad: 'LCD_cmd': absolute specifier illegal


Nie znam tego kompilatora ale w moim jest opcja, która pozwala (lub blokuje)
na dostęp do obszaru xdada w modelu SMALL - może to Cię na coś naprowadzi

MC