Laboratorium 2 – Transmisja a szeregowa µC 8051(8052)
Transkrypt
Laboratorium 2 – Transmisja a szeregowa µC 8051(8052)
Techniki Mikroprocesorowe Laboratorium 2 – Transmisja a szeregowa µC 8051(8052) - PC Krzysztof Lewandowski, Mirosław Jedynak 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z budową i programowaniem implementacji interfejsu RS232 na przykładzie mikrokontrolera 8051 i komputera PC. W trakcie ćwiczenia należy napisać programy dla mikrokomputera jednoukładowego uC 8051 i komputera PC nawiązujące połączenie poprzez łącze szeregowe RS232C Program na µC 8051 powinien odebrać wysłany z PC znak, wyświetlić go na wyświetlaczu LCD i odesłać do komputera PC. Program na PC powinien odczytać znak z klawiatury, wysłać go poprzez RS232 do mikrokontrolera, odebrać odpowiedź i wyświetlić ją na ekranie. Wszelkie operacje na porcie szeregowym nie mogą korzystać z funkcji BIOSa i systemu operacyjnego. 2. Przebieg ćwiczenia W cwiczeniu wykorzystaliśmy: • Komputer klasy PC jako maszyna do zestawienia komunikacji szeregowej. • Zestaw laboratoryjny 8052 z interfejsem RS232C, wyświetlaczem LCD i emulatorem EPROM Program na PC miał za zadanie wysłać znak poprzez interfejs szeregowy a następnie czekać aż układ 8052 przetworzy otrzymane dane i czekać na odpowiedź również na interfejsie szeregowym. Prędkość transmisji ustaliliśmy na 9600 bodów , 8 bitów bez bitu parzystości ASSUME CS:CODE, DS:CODE code segment org 100h START: ;inicjalizacja interfejsu mov dx,03f8h+3 mov al, 10000011b out dx, al ;;LCR mov dx, 03f8h mov al, 0Ch out dx, al ;;ustalenie preedkosci mov dx, 03f8h+1 mov al, 00h out dx, al ;; maska przerwan - wylaczenie przerwan mov dx,03f8h+3 mov al,00000011b out dx, al ;; 8 bitow bez bitu parzystosci powtarzaj: ;odczyt i wypisanie mov ah, 1h int 21h ;;wysylanie mov dx,03f8h out dx,al ;;czekaj az wysle do konca czekaj1: mov in and jz dx,03f8h+5 al,dx al,00100000b czekaj1 ;;odbieranie ;;czekanie az zostanie odebrane odbior: mov dx,03f8h add dx,05 in al,dx and al,00000001b jz odbior mov dx, 03F8h in al, dx mov dl,al mov ah, 02h ; Wyswietlanie znaku int 21h jmp powtarzaj code ends end start Układ 8052 miał za zadanie czekać na odebranie sygnału, wyświetlić go na wyświetlaczu LCD i wysłać z powrotem poprzez interfejs szeregowy. Do wyświetlania danych na wyświetlaczy LCD użyliśmy wcześniej przygotowanych procedur. START: LCALL INIT_LCD ; inicjalizacja wyswietlacza LCD ; tu piszemy swoj program ;ustawiamy predkosc transmisji na 9600 bodow ;a wiec SMOD (tj PCON.7) = 0; ANL PCON,#07Fh ;tryb pracy portu szeregowego - transmisja asynchroniczna, ;szybkosc okreslona programowo CLR SCON.7 SETB SCON.6 ;oczekujemy na dane z portu szeregowego ( REN=1 ) SETB SCON.4 MOV TMOD,#00100000b ;ustawiamy wartosc zerowania licznika aby szybkosc transmisji wynosila 9600 bodow MOV TH1,#0FDh MOV TL1,#0FDh CLR TF1 ;zerowanie znacznika przepełnienia licznika T1 ;wlanczamy zegar SETB TR1 ;czekamy az nadejdzie bajt z portu szeregowego JNB RI,$ MOV CLR INC A,SBUF TI A ;przeniesienie odebranego znaku do akumulatora ;LCALL PRINT ;wysylamy bajt przez port szeregowy MOV SBUF,A JNB TI,$ ;czekamy az wysle do konca LCALL PRINT znaku KONIEC: ;wyświetlenie zawartości akumulatora, czyli odebranego SJMP KONIEC 3. Podsumowanie Przy transmisji szeregowej najważniejsza jest synchronizacja urządzeń – dotyczy to zarówno prędkości wysyłania jak i formatu wysyłanych danych. W czasie przeprowadzania ćwiczenia, ze względu na specyficzną konfigurację licznika układu 8052, mieliśmy problemy z właściwym ustawieniem częstotliwości pracy. Po właściwym ustawieniu częstotliwości po obu stronach kanału (na 9600 bodów), układ pracował prawidłowo.