Witam, czy jest możliwe przerobienie gotowego kodu w C na assembler sam tego nie potrafię a może dla kogoś to nie będzie kłopot? Wiem że są jakieś kompliatory itp. jednak mieszają one w kodzie i się nie trzymają sensu, jeśli ktoś byłby w stanie mi pomóc podsyłam gotowy programik. Tematem jest Obsługa portu szeregowego w mikrokontrolerach rodziny MCS-51.
#include <8052.h> // Dołączenie biblioteki 8052.h.
unsigned char znak=0; // Deklaracja zmiennej globalnej „znak” równej 0.
unsigned char BUFOR=0; // Deklaracja zmiennej globalnej “BUFOR” równej 0.
volatile __xdata __at (0xFA00) unsigned char LED; // Dołączenie do program rejestru zatrzaskowego dla sterowania ośmioma diodami LED.
void przerwanie (void) __interrupt (4) // Funkcja obsługi przerwań
{
if(RI == 1) // Sprawdzenie znacznika odebrania pojedynczego znaku danych.
{
RI = 0; // Wyzerowanie znacznika.
znak = 1; // Przypisanie zmiennej znak wartości 1.
BUFOR = SBUF; // Przypisanie zawartości zmiennej SBUF do zmiennej BUFOR.
LED=BUFOR; // Przypisanie zawartości zmiennej BUFOR do zmiennej globalnej LED.
}
void main (void) // Główna funkcja programu.
{
unsigned char tmp; // Deklaracja zmiennej tmp typu char.
SCON=0x52; // 1010010 - Port szeregowy, tryb 1, bit sterujący aktywacją komunikacji wieloprocesorowej jest stanie wysokim, znacznik TI jest w stanie wysokim.
TMOD=0x20; // Tryb 0, licznik pracuje, gdy TRi=1 oraz INTi=1.
PCON=0x80; // Rejestr sterujący stanami uśpienia.
TH1=253; // Ustawienie wartości początkowej licznika T1 - najstarszy bit.
TL1=253; // Ustawienie wartości początkowej licznika T1 - najmłodszy bit.
IE=0x90; // 10010000 - Rejestr maski przerwań, stan wysoki na bicie maski systemu przerwania i na bicie maski przerwania od portu szeregowego.
TR1=1; // Włączenie licznika T1 do pracy.
znak=0; // Zerowania zmiennej znak.
do{
while(znak==0); // Warunek – zmienna znak musi być równa 0.
znak=0; // Zerowanie zmiennej znak.
BUFOR=BUFOR+1; // Inkrementacja zmiennej BUFOR.
SBUF=BUFOR; // Przypisanie zawartości zmiennej BUFOR do zmiennej SBUF.
while(TI=0); // Warunek – stan na znaczniku przerwania od nadajnika portu szeregowego musi być niski.
}
while(1); // Nieskończona pętla.
z góry dziękuje za każdą pomoc.