Mikroprocesory, LESZEK7, Zadanie 1


Politechnika Lubelska

Wydział Elektryczny

Laboratorium Podstaw Techniki Mikroprocesorowej

GRUPA ED 5.3

1.Chudy Paweł

2.Gieroba Grzegorz

3.Drabik Leszek

Ćwiczenie nr 7.

Temat:Układy transmisji szeregowej. Programowa transmisja szeregowa.

Celem ćwiczenia była wizualizacja komunikacji szeregowej pomiędzy DSM-51

a komputerem. W zadaniu porównywaliśmy znaki nadawane i odbierane, przy czym nadanie

lub odbiór mogło zachodzić w mikroprocesorze lub komputerze.

Zadanie 1

Celem zadania polegała była wizualizacja komunikacji szeregowej pomiędzy DSM-51

a komputerem oraz taka modyfikacja programu by nie zmieniając formatu transmisji ustawić kolejne szybkości transmisji 1200, 2400, 9600 bodów. Realizowana była szeregowa transmisja asynchroniczna - nadawanie.

Wywołanie programu z parametrem 300 (timer na 300):

klawisz

LCD

monitor

5

5

5

9

9

9

8

8

8

6

6

6

Ustawienia timera i rejestrów dla różnych szybkości transmisji:

Lp

Szybkość transmisji

TH1

TL1

SCON

TMOD

1

1200

256-48

256-48

40H

20H

2

2400

256-24

256-24

40H

20H

3

9600

256-6

256-6

40H

20H

Wywołanie programu z parametrem 2400:

Znak

1200

2400

9600

0

błąd transmisji

0

„spacja”

1

błąd transmisji

1

„spacja”

4

błąd transmisji

4

„spacja”

8

błąd transmisji

8

„spacja”

9

błąd transmisji

9

„spacja”

Zadanie 2

Celem zadania była taka modyfikacja programu z zadania 1, by zrealizować transmisję asynchroniczną w trybie odbiór z kolejnymi szybkościami - 300, 1200, 4800, 9600 bodów.

Ustawienia timera i rejestrów dla różnych szybkości transmisji:

Lp.

Szybkość transmisji

TH1

TL1

SCON

TMOD

1

300

256-192

256-192

50H

20H

2

1200

256-48

256-48

50H

20H

3

4800

256-12

256-12

50H

20H

4

9600

256-6

256-6

50H

20H

Treść programu:

T0_G EQU 0

T0_C EQU 0

T0_M EQU 0

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0

T1_C EQU 0

T1_M EQU 2

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

TR_M EQU 1

TR_R EQU 1

SCON_SET EQU TR_M*64+TR_R*16

TH1_SET EQU X ;za X wstawiano

TL1_SET EQU X ;dane z tabeli

LJMP START

ORG 100H

START:

MOV SCON,#SCON_SET

ORL PCON,#80H

MOV TMOD,#TMOD_SET

MOV TH1,#TH1_SET

MOV TL1,#TL1_SET

SETB TR1

LCALL LCD_CLR

LOOP:

JNB RI,$

CLR RI

MOV A,SBUF

LCALL WRITE_DATA

SJMP LOOP

Wywołanie programu z parametrem 4800 (timer na X):

Znak z klawiatury

300

1200

4800

9600

0

błąd transmisji

błąd transmisji

0

błąd transmisji

1

błąd transmisji

błąd transmisji

1

błąd transmisji

2

błąd transmisji

błąd transmisji

2

błąd transmisji

3

błąd transmisji

błąd transmisji

3

błąd transmisji

6

błąd transmisji

błąd transmisji

6

błąd transmisji

Zadanie 3

Celem zadania było wykonanie transmisji szeregowej asynchronicznej dwustronnej

z szybkością 4800 bodów.

Treść programu:

T0_G EQU 0

T0_C EQU 0

T0_M EQU 0

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0

T1_C EQU 0

T1_M EQU 2

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

TR_M EQU 1

TR_R EQU 1

SCON_SET EQU TR_M*64+TR_R*16

TH1_SET EQU 256-12

TL1_SET EQU 256-12

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

ORL PCON,#80H

MOV TMOD,#TMOD_SET

MOV TH1,#TH1_SET

MOV TL1,#TL1_SET

SETB TR1

SETB EA

SETB ES

LCALL LCD_CLR

LOOP:

LCALL WAIT_KEY

ADD A,#30H

MOV SBUF,A

SJMP LOOP

Zadanie 4

Celem zadania była wizualizacja komunikacji pomiędzy DSM-51 a komputerem realizowana w oparciu o programową transmisję szeregową - nadawanie.

Ustawienia timera i rejestrów dla różnych szybkości transmisji:

Lp.

Szybkość transmisji

TH0

TL0

PCON

TMOD

1

3600

0

0

80H

02H

2

9600

256-96

256-96

80H

02H

Wywołanie programu z parametrem 3600 (timer na 4800):

znak

0

1

2

3

4

5

6

7

8

9

LCD

0

1

2

3

4

5

6

7

8

9

monitor

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

Wywołanie programu z parametrem 3600 (timer na 3600, 9600):

znak

0

1

2

3

4

5

6

7

8

9

LCD

0

1

2

3

4

5

6

7

8

9

monitor (3600)

0

1

2

3

4

5

6

7

8

9

monitor (9600)

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

błąd

Zadanie 5

Celem zadania była taka modyfikacja programu z zadania 4 by zrealizować programową transmisję szeregową asynchroniczną - odbiór.

Ustawienia timera i rejestrów dla różnych szybkości transmisji:

Lp.

Prędkość transmisji

TH0

TL0

PCON

TMOD

1.

3600

256-256

256-128

80H

02H

2.

9600

256-96

256-48

80H

02H

Treść programu:

T0_G EQU 0

T0_C EQU 0

T0_M EQU 2

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0

T1_C EQU 0

T1_M EQU 0

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

BIT_TIME EQU 11059200/12/X ;za X wartość równą

T0_SET EQU 256-BIT_TIME ; TH0 z tabeli

T0_STRT EQU 256-BIT_TIME/2

IN EQU INT0

LJMP START

ORG 03H

SETB TR0

CLR EX0

RETI

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:

MOV C,IN

MOV A,R7

RRC A

MOV R7,A

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 $

Wywołanie programu z parametrem 3600 (timer na 3600) i 9600 ( timer na 9600):

znak

0

1

2

3

4

5

6

7

8

9

monitor

0

1

2

3

4

5

6

7

8

9

LCD (3600)

0

1

2

3

4

5

6

7

8

9

LCD (9600)

0

1

2

3

4

5

6

7

8

9

Zadanie 6

Celem zadania była modyfikacja programu z zadania 4 tak by poszerzyć zakres szybkości programowej transmisji szeregowej asynchronicznej do 300 bodów.

Treść programu:

T0_G EQU 0

T0_C EQU 0

T0_M EQU 1

TIM0 EQU T0_M+T0_C*4+T0_G*8

T1_G EQU 0

T1_C EQU 0

T1_M EQU 0

TIM1 EQU T1_M+T1_C*4+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

BIT_TIME EQU 11059200/12/300

TL0_SET EQU FF

TH0_SET EQU F3

IN EQU INT0

LJMP START

ORG 03H

SETB TR0

CLR EX0

RETI

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:

MOV C,IN

MOV A,R7

RRC A

MOV R7,A

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 $

Wnioski

Przeprowadzone ćwiczenie pokazało, że do poprawnej transmisji szeregowej asynchronicznej

wymagana jest równość szybkości transmisji obu elementów nadającego i odbierającego.

By poszerzyć zakres szybkości transmisji do 300 bodów konieczne było do odliczania impulsów zastosowanie timera pracującego w trybie 1 (licznik 16-bitowy).



Wyszukiwarka