PIC16F628A + LCD = malo pameti?

Zdravim Vas,

potrebuji poradit, mam doma LCD 2x16 znaku a PIC16F628A. Prave se pokousim rozchodit tento LCD pomoci uvedeneho PICu. Vse mi funguje jak ma. Dostal jsem se pres inicializaci pres 4-bitovou komunikaci a dnes jsem dodelaval adresy na jednotliva pismena a jsem skoro na 90% kapacity pameti. Pouzivam kompiler HI-TECH C Lite. Mel jsem v planu z toho udelat digitalni teplomer, ale vypada to, ze je na to asi malo pameti, co myslite?
Dale bych mel dotaz, je mozne nejak predavat jako vstupni parametr do funkce byte ve tvaru 0b11011101 a ve funkci s nim pak pracovat jako s retezcem, proste pristupovat k jednotlivym bitum?

Daj tu program urcite robis nieco zle, inak lite verzia ma obmedzenia, optimalizuje ti vobec kod?

Mo ja jsem nic nenastavoval na to aby se mi optimalizoval kod :wink: Aspon jsem myslel, ze to je nastavene automaticky.
Jinak se porad ucim, takze me prosim neukamenujte :wink: nejsem zvykly na to, ze musim setrit mistem :wink:
lcd.c (3.33 KB)

Když už to píšeš v C-čku, tak proč nepoužíváš také jeho zápis, ušetříš si tím práci a psaní.

printf ("TEPLOTA");

Tak se mi podarilo snizit kod z cca. 90% na 78% prepsanim tech podminek do SWITCHe.
S tim printf tomu nejak nerozumim, jak pozna co s tim ma udelat? Jinak to co tam mam ted neni hotove, slo mi jen o to, ze si nejsem jisty tim, zda se tento MCU hodi na ovladani LCD …

629bajtpv flash a 14B ram

546 bajtu flash a 14B ram :wink:

Tohle jsem zkusil napsat, zde je výpis obsazení paměti:

Memory Summary:
Program space used E3h ( 227) of 800h words ( 11.1%)
Data space used 9h ( 9) of E0h bytes ( 4.0%)
EEPROM space used 0h ( 0) of 80h bytes ( 0.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
LCD_HD44780.c (2.76 KB)
LCD_HD44780_PIC16F628A.GIF

Jakym zpusobem prevedu promenou typi INT na pointer? Jde o to, ze mam funkci, do ktere vstupuje jeden parametr typu pointer, vstupuje tam textovy retezec. Kdyz, pak budu pocitat nejakou hodnotu (INT) a tuto hodnotu dam jako vstupni parametr, tak mi to hlasi chybu:
illegal conversion of integer to pointer

Co s tim?

Dale by me zajimalo, zda se da nejka vyuzit funkce sprinf v HI-TECH C?

Skus pozriet manual k prekladacu…