9440


WYDZIAŁ ELEKTRYCZNY POLITECHNIKI LUBELSKIEJ

LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH

Imię i Nazwisko: Piotr Skwarek

Grupa: ED 5.4

Data wyk. ćwicz. 25.11.96

Numer ćwiczenia

7

Temat ćwiczenia: Układy transmisji szeregowej.

Programowa transmisja szeregowa.

Ocena:

Zespół:

1. Skwarek Piotr

2. Małaj Marcin

I. Cel ćwiczenia

Przy obecnym stanie techniki mikroprocesorowej często zachodzi konieczność przesyłania danych lub sygnałów pomiędzy dwoma odrębnymi jednostkami mikroprocesorowymi. Najpraktyczniejszym sposobem przy przesyłaniu danych jest transmisja szeregowa jest tak głównie ze względu na mniejszy koszt poprowadzenia łącza złożonego z jednej lini. Jednak transmisja szeregowa ma też swoje wady są nimi niższa prędkość transmisji oraz skorelowania prędkości nadawania przez jeden procesor i prędkości odbioru przez drugi. W tym ćwiczeniu mieliśmy właśnie okazję zapoznania się z zaletami oraz problemami wynikającymi ze stosowania transmisji szeregowej.

II. Wykonanie ćwiczenia

Zadanie 1. Nadawanie znaków z klawiatury mikrokontrolera przez złącze szeregowe i odbiór ich przez program RS uruchomiony na podłączonym PC-cie.

Ustawienia timerów i trybu pracy sterownika szeregowego

Lp.

Prędkość transmisji

TH1

TL1

SCON

TMOD

1

1200

D0H

D0H

50H

20H

2

2400

E8H

E8H

50H

20H

3

9600

FAH

FAH

50H

20H

Znaki nadawane - odbierane przy różnych prędkościach transmisji.

ZNAK

1200

2400

9600

UWAGI

`7'

błąd - śmieci

`7'

inny znak

`5'

błąd - śmieci

`5'

inny znak

pojawia się kilka znaków niktóre nic nie znaczące

`9'

błąd - śmieci

`9'

inny znak

Zadanie 2. Odbiór znaków z klawiatury mikrokontrolera przez złącze szeregowe, znaki nadawane przez program RS uruchomiony na podłączonym PC-cie.

Opierając się na przykładzie z zadania 1, dokonano modyfikacji programu p7_1.asm dla transmisji asynchronicznej w trybie odbiór przyjmując kolejno szybkości transmisji: 300, 1200, 4800, 9600 bodów. Poniżej przedstawiono propozycje ustawień rejestrów:

Tabela 3

Lp.

prędkość transmisji

TH1

TL1

SCON

TMOD

1.

300

D0H

D0H

50H

20H

2.

1200

E8H

E8H

50H

20H

3.

4800

F4H

F4H

50H

20H

4.

9600

FAH

FAH

50H

20H

Poniżej przedstawiono w tabeli wyniki obserwacji poprawności transmisji:

Tabela 4:

Znak

300

1200

4800

9600

`7'

błąd

błąd

`7'

błąd

`5'

błąd

błąd

`5'

błąd

`9'

błąd

błąd

`9'

błąd

Zadanie 3.

Wykorzystując przykłady z zadań 1 i 2 oraz program p7.4.asm wykonano operację transmisji szeregowej dwustronnej o parametrach jak w zadaniu 2. Poniżej przedstawiona jest propozycja programu realizujące to zadanie. Program działa w taki sposób, że DSM-51 może ciągle wysylać znaki wprzypadku zaistnienia przerwania od transmisji szeregowej skacze do programu obsługi przerwania iw którym umieszczony jest program odbioru znaku.

Listing programu:

;********************************************************

;PRZYKŁAD 1 - TRANSMISJA DWUSTRONNA

;********************************************************

;********* Ustawienie TIMERÓW *********

;TIMER 0

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 0 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

;TIMER 1

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 2 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

;*************** Transmisja Szeregowa ********************

TR_M EQU 1 ;tryb transmisji (1..3)

TR_R EQU 1 ;zezwolenie na odbiór

SCON_SET EQU TR_M*64+TR_R*16

;SMOD=1

;TIMER1=57600/300 bodów=192

TH1_SET EQU 256-6

TL1_SET EQU 256-6

;**************************************

LJMP START

ORG 23H

PUSH ACC

PUSH PSW

JBC TI,NAD

CLR RI

MOV A,SBUF

LCALL WRITE_DATA

NAD:

POP PSW

POP ACC

RETI

ORG 100H

START:

MOV SCON,#SCON_SET ;port szeregowy

ORL PCON,#80H ;SMOD=1

MOV TMOD,#TMOD_SET ;Timer 1 dla

MOV TH1,#TH1_SET ;transmisji

MOV TL1,#TL1_SET

SETB TR1 ;start Timera 1

SETB EA

SETB ES

LCALL LCD_CLR

LOOP:

LCALL WAIT_KEY

ADD A,#30H

MOV SBUF,A ;nadaj znak

SJMP LOOP

Zadanie 4.

Wykorzystując sposób programowej transmisji szeregowej dokonano wizualizacji komunikacji pomiędzy DSM-51 a PC, na przykładzie programu p7_4.hex. Poniżej zaproponowano ustawienia rejestrów:

Tabela 5

Lp.

Prędkość transmisji

TH0

TL0

PCON

TMOD

1.

4800

F4H

F4H

F0H

02H

2.

9600

A0H

A0H

F0H

02H

Poniżej przedstawiono tabele pokazującą poprawność transmisji:

Tabela 6

Znak

3600

4800

9600

`7'

`7'

błąd

błąd

`6'

`6'

błąd

błąd

`1'

`1'

błąd

błąd

Zadanie 5.

W oparciu o zadanie 4 dokonano modyfikacji programu p7_4.asm dla transmisji asynchronicznej w trybie odbiór przyjmując kolejno szybkości transmisji: 3600, 9600 bodów. W tabeli poniżej zaproponowano wstępne ustawienia rejestrów:

Tabela 7:

Lp.

Prędkość transmisji

TH0

TL0

PCON

TMOD

1.

3600

F0H

F0H

F0H

02H

2.

9600

A0H

A0H

F0H

02H

Poniżej przedstawiono propozycję programu:

Listing programu:

;************************************************

;PRZYKťAD 4 - NADAWANIE

;************************************************

;********* Ustawienie TIMER˘w *********

;TIMER 0

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 2 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

;TIMER 1

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 0 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

;******* Transmisja Szeregowa *********

;Timer/Bit = Fosc[Hz] /12 /V[bod]

BIT_TIME EQU 11059200/12/3600

T0_SET EQU 256-BIT_TIME

T0_STRT EQU 256-BIT_TIME/2

IN EQU INT0

;**************************************

LJMP START

;******PRZERWANIE INT 0****************

ORG 03H

SETB TR0

CLR EX0 ;BLOKUJ PRZERWANIE INT 0

RETI

;********* Przerwanie TIMER 0 *********

ORG 0BH

PUSH PSW

PUSH ACC

DJNZ R2,NEXT

CLR TR0

MOV TL0,#T0_STRT

MOV R2,#10

SETB EX0

MOV A,R7

LCALL WRITE_DATA

POP ACC

POP PSW

RETI

NEXT: ;kolejny bit transmisji

MOV C,IN

MOV A,R7

RRC A

MOV R7,A ;bit na port

POP ACC

POP PSW

RETI

;***************************************

ORG 100H

START:

LCALL LCD_CLR

MOV TMOD,#TMOD_SET

MOV TH0,#T0_SET

MOV TL0,#T0_STRT

MOV R2,#10

SETB EA

SETB ET0

SETB EX0

SJMP $

Zadanie 6.

W oparciu o program z zadania 4 dokonano modyfikacji programu p7_4.asm tak aby poszerzyć zakres szybkości transmisji szeregowej do 300 bodów. Poniżej przedstawiono propozycje programu realizującego to zadanie. Program z braku czasu nie został przetestowany.

Listing programu:

;************************************************

;PRZYKŁAD 4 - NADAWANIE

;************************************************

;********* Ustawienie TIMERÓW *********

;TIMER 0

T0_G EQU 0 ;GATE

T0_C EQU 0 ;COUNTER/-TIMER

T0_M EQU 1 ;MODE (0..3)

TIM0 EQU T0_M+T0_C*4+T0_G*8

;TIMER 1

T1_G EQU 0 ;GATE

T1_C EQU 0 ;COUNTER/-TIMER

T1_M EQU 0 ;MODE (0..3)

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

;******* Transmisja Szeregowa *********

;Timer/Bit = Fosc[Hz] /12 /V[bod]

BIT_TIME EQU 11059200/12/300 ;=3072

TL0_SET EQU FF

TH0_SET EQU F3

IN EQU INT0

;**************************************

LJMP START

;******PRZERWANIE INT 0****************

ORG 03H

SETB TR0

CLR EX0 ;BLOKUJ PRZERWANIE INT 0

RETI

;********* Przerwanie TIMER 0 *********

ORG 0BH

PUSH PSW

PUSH ACC

DJNZ R2,NEXT

CLR TR0

MOV TL0,#TL0_SET

MOV TH0,#TH0_SET

MOV R2,#10

SETB EX0

MOV A,R7

LCALL WRITE_DATA

POP ACC

POP PSW

RETI

NEXT: ;kolejny bit transmisji

MOV C,IN

MOV A,R7

RRC A

MOV R7,A ;bit na port

POP ACC

POP PSW

RETI

;***************************************

ORG 100H

START:

LCALL LCD_CLR

MOV TMOD,#TMOD_SET

MOV TH0,#TH0_SET

MOV TL0,#TL0_SET

MOV R2,#10

SETB EA

SETB ET0

SETB EX0

SJMP $



Wyszukiwarka

Podobne podstrony:
9440
9440
9440
9440
9440
9440

więcej podobnych podstron