Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Прог ЦТ лаб_каз_2012_последн вариант.doc
Скачиваний:
18
Добавлен:
01.05.2015
Размер:
4.19 Mб
Скачать

7.1 Зертханалық жұмыс тапсырмасы және берілгендер

Буып-түю машинасын автоматтандыру тапсырмасы.Қондырғыға кернеу бергенде оператор пультындағы L2 лампасын және ескертуші дыбыстықсигнализацияныS1 қосу. 2 секундтан кейінS1 сигнализациясын өшіріп D1 конвейерін қосу.Конвейерарқылы изоляторлар жылжиды, фотодатчик изолятордыңқорапқа түскенін байқайды.Екі изолятор түскеннен кейін L1 лампасын қосу керек.Төрт изолятор келгенненкейін екі секундқа буып-түю механизмін қосу,ол толы қорапты бос қораппен алмастырады. Қораптар санын санау, фотодатчиктерді клавиатураның K5 және K6 кнопкаларымен имитациялау керек.

7.1 кесте – PORTC биттерінің және клавиатуры аяқшаларының қызметі

Регистр PORTC

Клавиатура кнопкалары

Кнопка жұмысы

0 разряд - S1 ескертуші дыбыстық сигнализация

5 немесе 6

Фотодатчик

1 разряд – D1конвейерінің қозғалтқышы

2 разряд – D2 буып-түюші механизмнің қозғалтқышы

3 разряд – L1 жарықтық сигнализация

7 разряд – оператор пультіндегі L2 жарықтық сигнализация

7.1 сурет–Бақылау терезесі

Төменде көрсетілген программада Stopкнопкасы жоқ,өйткені мұндай алгоритм кезінде тоқтату процесін тек үзу арқылы ғана орындау керек.

7.2 Жұмысты орындау тәртібі

Программаны жөндеу. Қадамдық режимде Timer ішкі программасының уақытын шектеңіз, яғни Wмәнін Sch3 санағышына жазатын команданы ғана қалдыру керек.Программа жөндеуден өткеннен кейін PORTC«0» битінсирена клеммасымен қосыңыз.

7.1 суретте көресетілген бақылау терезесін құру қажет.

7.2 кесте–Тапсырма нұсқасы

Нұсқа

Қондырғыны қосу биттері S1, D1, D2, L1, L2.

Нұсқа

Қондырғыны қосу биттері S1, D1, D2, L1, L2.

1

1, 2, 3, 4, 5

6

6, 7, 0, 1, 2

2

2, 3, 4, 5, 6

7

7, 0, 1, 2, 3

3

3, 4, 5, 6, 7

8

0 ,1 ,2 ,3, 4

4

4, 5, 6, 7, 0

9

1, 3, 5, 7, 0

5

5, 6, 7, 0, 1

10

2, 4, 6, 0, 1

Л7 программасының фрагменттері.

include<p16F877.inc> ; төменде РОН аттары, таймер үшін көрсетілмеген.

KOL_IZOL EQU h'45' ; изоляторлар санын жазуға арналған регистр.

KOL_KOROB EQU h'46' ; қораптар санын жазуға арналған регистр.

Inver_Bit EQU H'47' ; терістелетін битті анықтайтын регистр.

_PORTC EQU H'48' ; PORTC күйін сақтауға арналған регистр.

; МБ және клавиатураның стандартты реттеу операциялары жазылмаған.

; Программаның жұмысшы бөлігі

CLRF KOL_KOROB

MOVLW B'10000001'

MOVWF PORTC ; пульттағы L2 сигнализациясын және S1 сиренаны қосу.

Сиренаның үзілісті сигналын қосуға арналған командалар.

MOVLW b'00000001'

MOVWF Inver_Bit ; терістеу битін береміз.

MOVF PORTC, W

MOVWF _PORTC ; PORTC күйін сақтаймыз.

MOVLW d'40' ; сиренаның жұмыс уақытын беру. Тексеру кезінде d’2’.

CALL Timer

MOVF _PORTC, W

MOVWF PORTC ; PORTC күйін қайта қалпына келтіреміз.

CLRF Inver_Bit ; Timer і/п келесі шақырулар кезінде сиренаны өшіріп қоямыз.

BCF PORTC, 0 ; S1 сиренаның қорек кернеуін өшіру.

MOVLW B'10000010'

M1 MOVWF PORTC ; D1 транспортерды өшіреміз, L2 жұмыс істей береді.

CLRF KOL_IZOL

Prov_dat

BTFSS PORTD, 2 ; датчиктің істегенін тексереміз ("5", "6" кнопкалары).

GOTO Prov_dat

MOVLW D'10'

CALL Timer ; датчик контакттарының «дребезгтерін» жоямыз.

INCF KOL_IZOL, F ; изолятордың қорапқа түсуін көрсетеміз.

MOVLW D'2';

XORWF KOL_IZOL, W ; екі изолятор түскенін тексереміз

BTFSC STATUS, Z ; Z = 0? тексерміз.

BSF PORTC, 3 ; Z=1 кезінде ғана, L1 лампасын қосамыз.

MOVLW D'4' ; 4 изолятор түскенін тексереміз.

SUBWF KOL_IZOL, W ; W=KOL_IZOL-4.

BTFSS STATUS, Z ; Z = 1? тексерміз (4 изолятор түсті ме?)

GOTO Prov_dat ; Z=0 болғанда датчик істегенін тексереміз.

MOVLW b'10000110' ; тек Z=1 кезінде, қорапты ауыстырып ; (D2 қосу) және L1 сигнализациясын өшіру керек.

MOVWF PORTC ; информацияны PORTC-ға жібереміз

INCF KOL_KOROB, F ; келесі қораптың толғанын көрсетеміз.

MOVLW d'50' ;қорапты ауыстыру уақыты.

CALL Timer

MOVLW b'10000010' ; D2-ні өшіруге дайындық.

GOTO M1;

GOTO$

Timer ; Timer ішкі программасы

MOVWF Sch3 ; W таймер аргументі.

; RETURN ; бұл команда тек программаны тексеру кезінде қолданылсын.

M3 MOVLW D'150'

MOVWF Sch_out ; сыртқы санағыштың мәнін орнатамыз.

M_out ; сыртқы санағыштың белгісі.

;Сиренаның үзілісті сигналына немесе жылтылдауға арналған нұсқаулар

MOVLW b'00000000' ;сиренаны қосу қажет емес деп аламыз.

MOVF Inver_Bit, F ; Inver_Bit регистрін =0 тексеру.

BTFSS STATUS, Z ; Z=1 тексереміз?

MOVF Inver_Bit, W ; тек Z=0 кезінде S1 үшін битті терістейміз.

XORWF PORTC, F ;маска арқылы PORTC битін сирена үшін терістейміз.

MOVLW D'255';

MOVWF Sch_in ;ішкі санағыштың мәнін орнатамыз.

M_in ; ішкі санағыштың белгісі. Timer-дің басқа нұсқаулары көрсетілмеген.

RETURN ; ішкі программаның соңы.

END