background image

Laboratorium nr 4 (sprawozdanie) – Michał Harasimowicz 

 

- 1 - 

Michał Harasimowicz P1 

 

 

Sprawozdanie z laboratorium nr 4 z przedmiotu 

„Elementy konstrukcji sprzętu cyfrowego” 

 

Cel sprawozdania: 

 

 

Celem sprawozdania jest ukazanie problemu programowania modelu zegara 

elektronicznego na układach 320 oraz 552. W sprawozdaniu uwzględnię różne problemy 

odliczania czasu na tych układach.  

 

Metoda obliczania czasu: 

 

 Aby 

odliczać czas w podanych układach będę korzystać z mechanizmu liczników, o 

czym napiszę później. Układy powyżej wspomniane (80 C 320 ,80 C 552) bazują na układzie 

8051, w którym istnieją następujące liczniki: T0 oraz T1 . Ich funkcją jest zliczanie 

narastających zbocz cykli zegara. Chcąc je wykorzystać muszę wiedzieć ile trwa cykl zegara 

oraz co ile cykli jest zwiększany licznik. W ten sposób mogę zliczać narastające zbocza 

zegara, dzięki czemu jest w ogóle możliwe odliczanie czasu. Oczywiście, samo zliczanie 

zbocz narastających nie pozwoli mi na obliczanie aktualnego czasu. Konieczne jest 

odpowiednie wykorzystanie liczników. Należy pamiętać,  że ‘główny’ licznik jest 

standardowo zwiększany co 4 cykle zegara, w przypadku 80 C 320 , lub 12 cykli zegara w 

przypadku 80 C 552, czyli zdecydowanie za szybko, aby możliwe, było wykorzystanie go 

bezpośrednio. 

 Rozwiązanie problemu wymaga, więc pomysłu, który jest następujący: zliczamy cykle 

zegara za pomocą licznika. Jeden jest zwiększany co 4 lub 12 cykli i po osiągnięciu wartości 

x

1

, powoduje zwiększenie zmiennej, który dopiero po osiągnięciu wartości  x

2

 powoduje 

zwiększenie zmiennej równej ilości sekund. Jakie są wartości x

1

 i x

2

 

To jest właśnie główny problem zadania. Należy je odpowiednio dobrać tak, 

osiągnięcie wartości x

2

 następowało dokładnie po 0,5s, co pozwala na odpowiednie 

‘mruganie’ kresek pomiędzy cyframi. Wartości x1, x2 są zależne od wielu czynników, ale 

background image

Laboratorium nr 4 (sprawozdanie) – Michał Harasimowicz 

 

- 2 - 

głównie od szybkości układu, na którym pracujemy. Należy również pamiętać o tym, aby 

odczytywać klawiaturę co około 1ms oraz co około 2ms podawać sygnał na wyświetlacz. 

 Oba 

układy pracują na częstotliwości 11,0592Mhz. W przypadku układu 80 C 320 , w 

którym jeden cykl to 4 takty zegara, aby osiągnąć  1s  musimy  zwiększyć licznik 2764800 

razy. W przypadku 80 C 552 musimy ten proces wykonać 921600 razy. Uzyskanie 1ms 

wymaga, więc od nas 921,6 cykli, a 2,5ms =2*1,25ms= 2*1152=2304. 

 

Minimalizacja błędu 

 Oczywiście zaprogramowanie układu tak zliczającego proste nie jest. Aby osiągnąć 1s 

w przypadku układu 80 C 552 muszę wykonać 921600 cykli. Już osiągnięcie 1ms nie jest 

trywialne, ponieważ nie jest to wartość całkowita. Przybliżając 1ms jako 921 cykli osiągamy 

niepewność 0,065%, wciągu jednej doby tj. 86400 sekund układ oparty na zliczaniu 

pojedynczych milisekund będzie się myli o około 56sekund,czyli w przypadku roku około 

20498 sekund czyli ok. 5h40min. Aby zminimalizować ten błąd wykorzystam naliczanie co 

sekundę czyli 912600 cykli, a przyjąć że wykonanie instrukcji programu jest bardzo szybkie, 

w porównaniu do 1ms. Szacując wykonanie wszystkich instrukcji procedury zliczania czasu 

na nie więcej niż 60 cykli maszynowych ( + czas wykonania procedury odpowiadającej za 

wczytywanie stanu klawiatury), wciągu 1 możemy popełnić  błąd 0,0065% czyli około rząd 

mniejszy niż w przypadku zliczania milisekund, co daje w przypadku 1roku około 34 min 

różnicy. Jest więc to oszacowanie błędu zliczania czasu. Aby wykonać 912600 cykli, 

rozłożyłem tą liczbę na czynniki np. w następujący sposób 1152 (1,25ms), a potem zliczałem 

zmienne do 800. Dla drugiego mikrokontrolera obliczenia są mniej dokładne, ponieważ 

należy wynik podzielić przez 3 co wprowadza dodatkowy błąd, ale mniejszy niż oszacowanie 

powyższe. 

 

Wnioski 

 Możemy oszacować niepewność pomiaru czasu w układzie elektronicznym 

zaprojektowanym na bazie mikrokontrolera 8051 na około 0,0065%, co daje w przypadku 

roku niepewność około 34min, czyli w ciągu 1 doby układ wymagałby korekcji o ok. 6s.