KrzyMr napisał: Mam liczbę np. 5813 i che ja zapisać w tablicy w postaci szesnastkowe
int wynik[4] = {0x6D, 0x7F, 0x06, 0x4F};
Ale 5813 ma sie nijak (w sensie standardów liczbowych) do 0x6D, 0x7F, 0x06, 0x4F. 5813 dec = 16B5 hex. Nie ma w C wyimaginowanych konwersji na kody 7-seg. Musisz zrobić to na dra razy.
1. Skonwertować liczbę 5813 na łańcuch znaków. Zrobisz to przy użyciu sprintf.
2. Pobierać w przerwaniu kolejne elementy łańcucha znaków, konwertować na kod 7-seg i ustawiać port sterujący wyświetlaczem. Tu gotowca nie znajdziesz, konwersję musisz zrobić sam. Wykorzystaj fakt, że kody ASCII cyfr 0..9 to 0x30...0x39. Wystarczy więc od kodu odjąć 0x30 i pobierać kody 7-seg z tablicy LICZBY.
Widzę, że nadal masz za dużo ram. Dlaczego deklarujesz tablice LICZBY do przechowywaniu 2 bajtów?
Ewentualnie w ARM bym zrozumiał, bo ma porty 16-bit, AVR ma porty 8-bit. Co ciekawe tablicy LICZBY nigdzie w kodzie nie używasz.
KrzyMr napisał: Proszę o konkrety w postaci kodu albo przykładu
Klauzula sumienia nie pozwala mi dać gotowca, zapraszam do działu ogłoszenia.
Za gotowy kod trzeba zapłacić (np kupując książkę itp) dlaczego więc ktoś ma dać gotowy kod za "Bóg zapłać"?
KrzyMr napisał: że każdy z nas kiedyś zaczynał
Ale nie od razu od skomplikowanych projektów. Zacznij od migania diodą i nauki podstaw C.
Na początek, zrób wyświetlanie multipleksowe na przerwaniach. Dalej już pójdzie łatwo, konwersja char na 7-seg po czym konwersja liczby na string. Jeśli masz debuger to możesz zacząć od konwersji liczby na string, char na 7-seg, na koniec wyświetlanie 7-seg.