Jak obsługiwać peryferia w Franklin C na 8051 bez pamięci zewnętrznej?
Franklin C na '51 i peryferia - dlugie
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
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