PIC16F88 Čitač zapnutí napájecího napětí pro vývojovou desku

Zdravím, potřeboval bych pomoct s jedním programem do školy. Program je téměř hotový, stačí najít chybu, kterou se mi po delším bádání, nepodařilo najít. Věřím, že někdo krapet zkušenější než já tu chybu najde do 5 minut.

Zadání: Vytvořte program, který bude počítat počet zapnutí napájecího napětí pro vývojovou desku s jednočipovým mikropočítačem PIC16F88. Počet zapnutí bude uložen v BCD kódu na adrese 10H v paměti EEPROM. Po uložení nové hodnoty se rozsvítí desetinná tečka na zobrazovači. Po stisknutí tlačítka TL1 se na 1 sekundu zobrazí na sedmisegmentovém zobrazovači jednotky počtu zapnutí napájení.

Jediné co mi program zatim dělá je to, že po prvním zapnutí zobrazí 0, což je OK, ale po vypnutí a zapnutí zdroje je tam stále jen 0 ovšem už by se tam měla zobrazit 1. Osobně si myslím, že chyba bude v zápisu nebo ve čtení.

V příloze najdete zjednodušené schéma, vývojové diagramy a samotný program. Budu vám velice vděčný a mé vysvědčení taktéž za jakoukoliv pomoc či připomínku. Děkuji.

:arrow_right: administrator: přejmenováno z "Assembler- oprava kódu. PIC16F88 ."

Pardon, nějaký error. Podle fora jsem překročil limit 50MB na přílohu.
Zde odkaz na uloz.to : uloz.to/xDxQvStg/praceseeprom-rar

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

:arrow_right: administrator: přiloženy externí soubory
08_Prace_s_EEPROM.zip (129 KB)

Zdravím, asembler tohoto brouka jsem nedělal už několik roků, tak detailní radu nevím. Podle tvého popisu jsem, ale pochopil, že Ty ani nevíš co se uvnitř děje, Proto bych si v Mplabu spustil simulaci a vytáhl si na diagnostiku všechny proměnné včetně všech pamětí, potom budeš rychle vědět co a jak. Jedině tak se dopracuješ požadovaného cíle, zvláště u takového jednoduchoučkého prográmku. Otestovat si všechny rutiny, třeba samostatně, abys měl jistotu chodu.

Asi by ses mel kouknout do datasheetu na stranku 18 do tabulky co je nastaveno po resetu na EECON1 EEPGD.
(18Ch EECON1 ||EEPGD||—||—||FREE||WRERR||WREN||WR||RD|| x–x x000)
Pak jeste na str.: 31 -> tam je to i s priklady.

Kod jsem moc nestudoval ale myslim, ze navrat z preruseni je RETFIE :slight_smile:… Doufam, ze jsem aspon trosku pomohl.

To vás takhle prasácky učí na škole psát programy v ASM?

Nesedí ti banky, kdyby jsi místo macra použil BANKSEL REG, vyřešilo by to spostu chyb. Datasheet taky není k zahození, třeba čtení a zápis do EEPROM.

Tu tabulku by jsi měl taky ošetřit, když znak bude víc jak 10 tak to zkolabuje.

Honzo neřeš to, už s tím otravuje tady