122 12. Fort szeregowy
ł
;Program przesyłający przez port szeregowy ciąg znaków' z tablicy umieszczo. ;nej w pamięci programu do pamięci RAM. Początek tablicy w' pamięci RAM ;od adresu 20H. Prędkość transmisji 9600 bodów, częstotliwość kwrarcu 3,686 MHz. Użyte rejestry: R0, DPTR
,«it**ł»**łł*łH-ł<łi(i(HKi*ił»»******it-**łił*ł»ł*4ł*»***********łł*ł»****|t****
SETRS |
EQU |
40h |
;tryb 1 pracy portu szeregowego |
TAB RAM |
DATA |
20h |
;adres tablicy przyjmowanych danych |
L PODZ |
EQU |
OFFh |
;liczba podziałowa wpisywana do rejestru THl |
SET Tl |
EQU |
20h |
;tryb 1 licznika Tl, taktowanie wewnętrzne |
CSEG | |||
ORG |
0 |
MOV SCON,#SET_RS MOV TMOD,#SET_Tl MOV THl,#L_PODZ SETB TRI SETB REN MOV R0,#TAB_RAM MOV DPTR,#TAB
tryb pracy licznika Tl
podział licznika Tl
start licznika Tl
odblokowanie odbiornika
adres tablicy przyjmowanych danych
adres tablicy wysyłanych danych
N ZN:
CLR |
A |
;zerowanie akumulatora |
MOVC A,@A+DPTR |
;odczytanie danej z tablicy | |
MOV |
SBUF,A |
;wysłanie znaku |
JNB |
RI,$ |
;oczekiwanie na przyjęcie danej |
CLR |
RI |
;kasowanie znacznika końca odbioru bajtu |
CLR |
TI |
;kasowanie znacznika końca nadawania bajtu |
MOV |
A,SBUF |
;odczytanie przyjętej danej |
MOV |
@R0,A |
;wysłanie przyjętej danej do pamięci |
INC |
R0 |
;kolejny adres tablicy przyjmowanych danych |
INC |
DPTR |
;kolejny adres tablicy wysyłanych danych |
CJNE |
a,#i$,,n_zn |
;tcst czy ostatni znak |
CLR |
REN |
zablokowanie odbiornika portu szeregowego |
CLR |
TRI |
;wyłączenie licznika Tl |
AJMP |
$ |
;pętla końca programu |
TAB:
DB TEST PORTU SZEREGOWEGOS1 END
1. Do czego służy port szeregowy ?
2. Czym się różni transmisja synchroniczna od asynchronicznej ?
3. Czym charakteryzują się poszczególne tryby pracy portu szeregowego w mikrokontrolerach rodziny '51 ?
4. Jaka jest rola znaczników obsługujących port szeregowy ?
5. Do czego służy rejestr SBUF ?
6. Jakie są źródła taktowania portu szeregowego ?
7. W którym mikrokontrolerze można uzyskać różne prędkości nadawania i odbioru danych ? Jak to się realizuje ?
8. Zmodyfikować podany wyżej przykład tak, wysłać również bit parzystości wysyłanego znaku.
9. Zmodyfikować przykład tak, by port szeregowy pracował w trybie synchronicznym.
10. Zmodyfikować powyższy program tak, by opóźnienie było realizowane w podprogramie obsługi przerwania.