Zadanie 1.
Wizualizacja komunikacji szeregowej pomiędzy DSM-51 a komputerem PC z wykorzystaniem wewnętrznego układu transmisji szeregowej.
Ustawienia rejestrów
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 RS z parametrem 2400 i porównanie wysyłanych znaków (tych
samych) dla różnych szybkości.
Znak |
1200 |
2400 |
9600 |
1 |
błąd |
1 |
spacja |
2 |
błąd |
2 |
spacja |
3 |
błąd |
3 |
spacja |
Zadanie 2.
Modyfikacja programu z zadania 1 dla transmisji asynchronicznej w trybie odbiór .
Ustawienia Timera 1 i rejestru SCON.
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 |
Listing 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-X ; X=57600/szybkość transmisji [body]
TL1_SET EQU 256-X ;
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 RS z parametrem 4800
Znak z klawiatury |
300 |
1200 |
4800 |
9600 |
0 |
błąd |
błąd |
0 |
błąd |
1 |
błąd |
błąd |
1 |
błąd |
2 |
błąd |
błąd |
2 |
błąd |
3 |
błąd |
błąd |
3 |
błąd |
6 |
błąd |
błąd |
6 |
błąd |
Zadanie 3.
Transmisja szeregowa dwustronna.
Listing programu
;********* 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/300bod˘w=192
TH1_SET EQU 256-192
TL1_SET EQU 256-192
;**************************************
LJMP START
ORG 100H
START:
MOV DPTR,#0FF21H
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 TI
MOV R2,#6
CLR F0
LCALL LCD_CLR
LOOP:
MOVX A,@DPTR
CPL A
JNZ L2
JNB F0,HOOP
CLR F0
SETB PSW.1 ;PUSZCZONY KLAWISZ
MOV A,#20
LCALL DELAY_MS
SJMP HOOP
L2:
MOV R2,#0FFH
L1:
INC R2
CLR C
RRC A
JNC L1
SETB F0 ;JEST ZNAK DO NADANIA
HOOP:
JB RI,ODBIOR ;czy można nadać
JB TI,NADAJ
SJMP LOOP
ODBIOR:
CLR RI ;kolejny znak
MOV A,SBUF ;nadaj znak
LCALL WRITE_DATA ;wyświetl na LCD
SJMP LOOP
NADAJ:
JBC PSW.1,NADAWAJ
SJMP LOOP
NADAWAJ:
CLR TI
MOV A,R2
ADD A,#30H
MOV SBUF,A
LCALL WRITE_DATA
SJMP LOOP