Programování PICů v C (XC8)
Moderátor: Moderátoři
Ten C překladač pro PIC negeneruje při překladu jako mezikrok kód v assembleru? Že by se to z něj dalo vykoukat.
- forbidden
- Příspěvky: 9442
- Registrován: 14 úno 2005, 00:00
- Bydliště: Brno (JN89GF)
- Kontaktovat uživatele:
Možná to dělá pomocí registrů pro nepřímý adresování FSR a INDF, ale je pravda, že neznám jak nastavit pointer FSR na programovou paměť. Ani v datasheetu o tom nic nepíšou. Vůbec by mě nenapadlo o tom přemýšlet, dokud jsi se nezeptala.
Zkusil jsem ještě jednou nadefinovat:
unsigned char *test = "test promenne ulozene v programove pameti PIC16F628A";
a po zkompilování se zabraná datová paměť zvětšila a o 1 B, programová o 53 B.
Pokud dobře počítám, tak to sedí, včetně té nuly na konci. Proč se zvětšila datová o 1 B nevím, tipoval bych ten pointer, ale nesedí mi velikost, měly by to být dva B.
Edit: Na netu píšou: The compiler implements ROM arrays with an ADDWF PC instruction followed by a series of RETLW instructions. To read an array element, the compiler places the index in the W register and generates a CALL to the start of the array. The compiler then adds the W register to the program counter and a RETLW returns the value in the W register.
Pak by ten 52 znakový string musel zabírat víc než 53 bytů.
- forbidden
- Příspěvky: 9442
- Registrován: 14 úno 2005, 00:00
- Bydliště: Brno (JN89GF)
- Kontaktovat uživatele:
Třeba se to v té programové ukládá kontinuálně za sebou po osmi bitech, kvůli šetření místem.
- Přílohy
-
paměť.gif- ukazatel
- (19.37 KiB) Staženo 139 x