Częstotliwościomierz w ASM na DSM51

Witam, mamy w szkole na mikroporcesorach zaprogramować w ASM miernik częstotliwości na DSM51. Częstotliwość jest podawana do isolated I/O. Zaprogramowałem już coś w szkole i coś ten program mierzył, bo wyświetlał liczby HEX na LCDku i zmieniały się one wraz ze zmianą częstotliwości. Wykładowca mówił, że to działa źle - ja nie wiem. Chciałbym zrobić jednak aby to co wyświetla na LCDku pokazywało się w formie liczby dziesiętnej. Jak zrobić taką konwersję (hex->dec)? Np. mam w rejestrze wartość A8 - jakbym to robił na papierze to bym pisał 8*16^0 + 10*16^1 =

168. Ale jak rodzielić A8 na dwie części do dwóch rejestrów? Jest w EPROMIe DSMa podprogram zamieniający HEX na BCD - może ktoś wie jak z tego potem przejść na DEC? Byłbym wdzięczny za jakiś gotowy kod :-)

Poniżej kod częstotliwościomierza. Jak ktoś widzi w nim jakiś błąd albo ma lepszy już gotowy to proszę o przysłanie mi go :>

LJMP START ORG 1BH LJMP PRZERWA ORG 100H START: LCALL LCD_INIT ;inicjalizacja lcd LCALL LCD_CLR ;czyszczenie lcd SETB EA ; ustawienie SETB ET1 ; przerwań MOV TMOD,#00011100B ;ustawienie liczników t1 i t2 MOV TH1,#78 ;Timer 0 na 50ms MOV TL1,#0 SETB TR0 ;start Timera TR0 SETB TR1 ;start Timera TR1 WYSW: MOV A,R5 ;czestotliwość do A LCALL WRITE_HEX ; wyswietlenie MOV A,#10 ; na LCALL DELAY_100MS ; 1 sekundę LCALL LCD_CLR ;czyszczenie lcd LJMP WYSW PRZERWA: MOV R5,TL0 ;zliczona czestotliwość do R5 MOV TL0,#0 ;zerowania TL0 KONIEC: RETI

Reply to
Robert Niestroj
Loading thread data ...

Cześć

Jak na mój gust to właśnie tej procedurki potrzebujesz

A8H = 168D Procedurka HEX na BCD zrobi z liczby A8H trzy liczby dziesiętne 1, 6, 8 Jak je w takiej kolejności wyświetlicz to otrzymasz swoje 168 dziesiętnie.

Musisz tylko wiedzieć jaka procedurka jest Ci potrzebna 8b a może 16b no i czy w wyniku konwersji dostajesz liczbę BCD upakowaną czy nie.

BCD upakowana to znaczy jezeli masz liczbę 168 to w wyniku konwersji wynik będzie zachowany w dwóch rejestrach np R6,R7 R6=01 R7=68

BCD nie upakowana

168 po konwersji R5=01 R6=06 R7=08

W zależności od tego, jaką masz wersję będziesz musiał napisać odpowiedni podprogram do obsługi wyświetlacza Chociaż jak na mój gust powinna być wersja upakowana ze względu na oszczędność rejestrów.

Pozdrawiam Sławek

Reply to
invalid unparseable

Osoba podająca się za: Robert Niestroj przyczyniła się do uszczuplenia moich skromnych zasobów dyskowych ;-) wraz z kolejną wiadomością wysłaną

2004-03-02 21:18:

W kursie ASM w EdW była procedura zamiany 16 bitowej liczby hex na dziesiętną. Podesłać?

Reply to
badworm

Jak najszybciej! :-)

Reply to
Robert Niestroj

Wysyłając taki oto zestaw znaków dnia 2004-03-03 22:09 Robert Niestroj nakarmił(a) stado głodnych newsserwerów:

Poszło na pirva.

Reply to
badworm

Użytkownik "badworm" snipped-for-privacy@post.pl napisał w wiadomości news: snipped-for-privacy@badworm.pl

O! Nowa wrotka :-)))

Reply to
Marek Dzwonnik

Wysyłając taki oto zestaw znaków dnia 2004-03-06 22:58 Marek Dzwonnik nakarmił(a) stado głodnych newsserwerów:

Kiedyś trzeba było zmienić bo stara była zbyt konfliktowa ;-)

Reply to
badworm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.