Re: krásný jazyk český ( bylo Re: air gap)
Pavel Hudecek
edizon na seznam.cz
Čtvrtek Březen 28 20:09:19 CET 2013
Já to pochopil, ale moje odpověď byla, že takovou funkci vlastně
nepotřebuji, když si můžu v EEPROM nadeklarovat proměnné a pracovat s nimi
normálně, "jako by se nechumelilo". Kromě toho, že ušetřím práci s takovou
funkcí, si navíc ušetřím i veškeré problémy, které mohou vzniknout, když při
adresování udělám chybu.
Obecně jsem tím chtěl naznačit, že takovéhle přímé porovnávání malé funkce
není dobré, protože jazyk a překladač může mít značný vliv na okolnosti,
takže program, který byl původním cílem snažení, může vypadat velmi různě a
problém, který se v jednom jazyce/prostředí, nebo s jinou filozofií musí
řešit, nemusí jindy u stejné úlohy vůbec nastat.
Ale ok, kdybych chtěl přesně dle zadání, udělal bych to třeba takhle:
(pokud jsem správně pochopil, že zadání je od adresy v eeprom dané prvním
parametrem uložit 4 B, na které ukazuje pointer, který je druhým parametrem
a že ten pointer má potom ukazovat za uložená data)
void Save_4B(unsigned int adr, *data) {
EEPROM_Write(adr, *data); data++;
EEPROM_Write(adr+1, *data); data++;
EEPROM_Write(adr+2, *data); data++;
EEPROM_Write(adr+3, *data); data++;
}
Nebo bych mohl použít for cyklus
void Save_4B(unsigned int adr, *data) {
unsigned char n;
for (n=0; n<4; n++) {
EEPROM_Write(adr+n, *data);
data++;
}
}
PH
From: "Admin HWnews" <hwnews na cncnet.info>
To jste mirne nepochopil - ta procedura uklada libovnolnou 16b promennou
na kterou predate pointer na libovolne misto v eeprom.
Dne 28.3.2013 16:56, Pavel Hudecek napsal(a):
> Já bych tedy předně něco takového nepsal, vyřeší to za mě překladač.
> Proč bych používal nějakou funkci na zápis 4 B do EEPROM, když si tam
> můžu nadeklarovat proměnnou a tu pak používat jako každou jinou proměnnou?
>
> eeprom unsigned long eStartCnt=0;
> eeprom unsigned char eHeslo="123456789";
>
> void main(){
> eStartCnt++ů
> dispText("Vítejte při "); dispInt(eStartCnt); dispText(". zapnutí
> Vašeho přístroje.");
> sifrovaniInit(eHeslo, eStartCnt);
> ....
> }
Další informace o konferenci Hw-list