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.