2551


WYDZIAŁ ELEKTRYCZNY POLITECHNIKI LUBELSKIEJ

LABORATORIUM PODSTAW

SYSTEMÓW

MIKROPROCESOROWYCH

Imię i Nazwisko : Piotr Skwarek

Grupa ED 5.4

Data wyk. ćwicz. 18.11.96

Numer ćwiczenia

5

Temat ćwiczenia : REGULATOR TYRYSTOROWY.

PRACA W CZASIE RZECZYWISTYM.

Ocena

1. Cel ćwiczenia.

Celem ćwiczenia było zapoznanie się z możliwościami stosowania systemu mikroprocesorowego DSM51 przy zastosowaniu go do sterowania urządzeniem zewnęnym.

Sterujemy tyrystorem włączonym szeregowo z żarówką . Używamy go w celu przyciemniania żarówki ograniczając jej fazę w której świeci, odliczjąc czas w timerze.

ZADANIE NR 1:

Sterowanie tyrystorem.

Tabela pomiarowa

Program źródłowy

A

P1

Ż

W

Komentarz

START:

LCALL INICJALIZACJA

05

FF

-

-

;ustawienia wstępne

LCALL WYŚWIETL

05

FF

-

5

;wyświtla wstępną wart. opóźnienia

LOOP:

JNB SIEĆ,$

05

FF

-

5

;oczekiwanie na „0” sieci

LCALL DELAY_MS

00

FF

-

5

;odczekanie opóźnienia A*1ms

CLR BRAMKA

00

FB

+

5

;zeruje linię 3 portu

MOV A,#10

0A

FB

+

5

;wpisuje do ACC wartość „10”

DJNZ ACC,$

00

FB

+

5

;bada czy wartość ACC jest <>0 jesli tak to

zminejsza jego wartość o 1 i skacze do

adresu 0110H

SETB BRAMKA

00

FF

-

5

;ustawia linię 2 portu P1(włącza tyrystor)

LCALL KLAWIATURA

05

FF

-

5

;pobiera do A nową wartość opóźnienia

SJMP LOOP

00

FF

-

5

;zamknięcie pętli programu

SIEĆ EQU P3.4 0 - jest napięcie na żarówce

1 - „0” sieci

BRAMKA EQU P1.2 0 - włączenie tyrystora

1 - niewłączenie tyrystora

ZADANIE NR 2:

Adresowanie indeksowe.

Tabela pomiarowa dla wartości 2

Program źródłowy

D

A

D+A

R7

R6

KL

LCD

Komentarz

START:

LCALL INICJALIZACJA

0180

01

0181

FB

6C

-

1FB6C

;ustawienia wstępne

LOOP:

LCALL KLAWIATURA

0180

02

0182

FB

6C

2

2F6DA

;czyta klawiaturę

MOV DPTR,#TABELA

0180

02

0182

FB

6C

-

2F6DA

;tabela funkcyjna

PUSH ACC

0180

02

0182

FB

6C

-

2F6DA

;przech. nr klawisza

RL A

0180

04

0184

FB

6C

-

2F6DA

;mnóż przez 2

PUSH ACC

0180

04

0184

FB

6C

-

2F6DA

;przechowaj przesunięcie

MOVC A,@A+DPTR

0180

F6

0276

FB

6C

-

2F6DA

;starszy bajt z tabeli

MOV R7,A

0180

F6

0276

F6

6C

-

2F6DA

;wynik do R7

POP ACC

INC A

MOVC A,@A+DPTR

0180

0180

0180

04

05

DA

0184

0185

025A

F6

F6

F6

6C

6C

6C

-

-

-

2F6DA

2F6DA

2F6DA

;odtwórz przesunięcie

;wskaż młodszy bajt

;pobierz młodszy bajt

MOV R6,A

0180

DA

025A

F6

DA

-

2F6DA

;wynik do R6

POP ACC

0180

02

0182

F6

DA

-

2F6DA

;odtwórz nr klawisza

SJMP LOOP

0180

02

0182

F6

DA

-

2F6DA

;pętla programu

Tabela funkcyjna

0

1

2

3

4

5

6

7

0180

-

-

FB

6C

F6

DA

F2

48

0188

ED

B6

E9

24

E4

92

E0

00

Tabela pomiarowa dla wartości 3

Program źródłowy

D

A

D+A

R7

R6

KL

LCD

Komentarz

START:

LCALL INICJALIZACJA

0180

01

0181

FB

6C

-

1FB6C

;ustawienia wstępne

LOOP:

LCALL KLAWIATURA

0180

03

0183

FB

6C

3

3F248

;czyta klawiaturę

MOV DPTR,#TABELA

0180

03

0183

FB

6C

-

3F248

;tabela funkcyjna

PUSH ACC

0180

03

0183

FB

6C

-

3F248

;przech. nr klawisza

RL A

0180

06

0186

FB

6C

-

3F248

;mnóż przez 2

PUSH ACC

0180

06

0186

FB

6C

-

3F248

;przechowaj przesunięcie

MOVC A,@A+DPTR

0180

F2

0272

FB

6C

-

3F248

;starszy bajt z tabeli

MOV R7,A

0180

F2

0272

F2

6C

-

3F248

;wynik do R7

POP ACC

INC A

MOVC A,@A+DPTR

0180

0180

0180

06

07

48

0186

0187

01C8

F2

F2

F2

6C

6C

6C

-

-

-

3F248

3F248

3F248

;odtwórz przesunięcie

;wskaż młodszy bajt

;pobierz młodszy bajt

MOV R6,A

0180

48

01C8

F2

48

-

3F248

;wynik do R6

POP ACC

0180

03

0183

F2

48

-

3F248

;odtwórz nr klawisza

SJMP LOOP

0180

03

0183

F2

48

-

3F248

;pętla programu

Tabela pomiarowa dla wartości 4

Program źródłowy

D

A

D+A

R7

R6

KL

LCD

Komentarz

START:

LCALL INICJALIZACJA

0180

01

0181

FB

6C

-

1FB6C

;ustawienia wstępne

LOOP:

LCALL KLAWIATURA

0180

04

0184

FB

6C

4

4EDB6

;czyta klawiaturę

MOV DPTR,#TABELA

0180

04

0184

FB

6C

-

4EDB6

;tabela funkcyjna

PUSH ACC

0180

04

0184

FB

6C

-

4EDB6

;przech. nr klawisza

RL A

0180

08

0188

FB

6C

-

4EDB6

;mnóż przez 2

PUSH ACC

0180

08

0188

FB

6C

-

4EDB6

;przechowaj przesunięcie

MOVC A,@A+DPTR

0180

ED

026D

FB

6C

-

4EDB6

;starszy bajt z tabeli

MOV R7,A

0180

ED

026D

ED

6C

-

4EDB6

;wynik do R7

POP ACC

INC A

MOVC A,@A+DPTR

0180

0180

0180

08

09

B6

0188

0189

0236

ED

ED

ED

6C

6C

6C

-

-

-

4EDB6

4EDB6

4EDB6

;odtwórz przesunięcie

;wskaż młodszy bajt

;pobierz młodszy bajt

MOV R6,A

0180

B6

0236

ED

B6

-

4EDB6

;wynik do R6

POP ACC

0180

04

0184

ED

B6

-

4EDB6

;odtwórz nr klawisza

SJMP LOOP

0180

04

0184

ED

B6

-

4EDB6

;pętla programu

ZADANIE NR 3:

Sterowanie fazowe, odliczanie czasu w timerze mikrokontrolera.

Listing programu:

;R0 - adres klawiatury

;R2 - ustawione opóźnienie załączenia tyrystora (1..8)

;R3 - nowe opóźnienie odczytane z klawiatury

B0R2 EQU 2 ;adres rejestru 2 w banku 0

B0R6 EQU 6

B0R7 EQU 7

SIEC EQU P3.4 ;wejście z transpotora

;0 - jest napięcie na żarówce

;1 - "0" sieci

BRAMKA EQU P1.2 ;wyjście przez transoptor - bramka tyrystora

;0 - załączenie tyrystora

;1 - niezałączanie tyrystora

;----------- 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

;-------------------------------------------------------

LJMP START

;-------------------------------------------------------

ORG 0100H

START:

LCALL INICJALIZACJA ;ustawienia początkowe (R7 i R6)

ORL TMOD,#TMOD_SET ;Timer 0 liczy czas

LOOP:

CLR TR0 ;stop dla Timer 0

CLR TF0 ;zeruj TF0

MOV TH0,R7 ;załadowanie stanów początkowych

MOV TL0,R6 ;z R7 i R6 do TH0 i TL0

JNB SIEC,$ ;oczekiwanie na "0" sieci

JB SIEC,$

SETB TR0 ;start timera 0

JNB TF0,$ ;odczekanie zadanego opóźnienia

CLR TR0 ;stop dla timera 0

CLR BRAMKA ;impuls włączający tyrystor

MOV A,#10

DJNZ ACC,$

SETB BRAMKA

LCALL KLAWIATURA ;sprawdza/czyta nową wart. opóźnienia

;numer klawisza do A

;stan początkowy timera do R7 i R6

SJMP LOOP

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

;Procedury

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

INICJALIZACJA: ;ustawienia początkowe

......................

RET ;koniec procedury

KLAWIATURA: ;pobiera nowa wartość opóźnienia

......................

RET ;koniec procedury

TABELA:

DB 0FFH,0FFH

DB 0FBH,06CH

DB 0F6H,0DAH

DB 0F2H,048H

DB 0EDH,0B6H

DB 0E9H,024H

DB 0E4H,092H

DB 0E0H,000H



Wyszukiwarka

Podobne podstrony:
ML 2551
2551
2551
2551
2551
2551
2551
2551
ML 2551
2551 Checking clutch disk for wear

więcej podobnych podstron