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

7. 3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат

Технологиялық қондырғыны қосар кезде әрқашан ескертуші үзілісті дыбыстық немесе жанып-өшіп жыпылықтайтын жарықтық сигнализация қосылады. Бұл қондырғы PORTCбиттеріне қосылады.7.2 суретте келтірілген уақыттықдиаграммаға сәйкесS1 дыбыстықсигнализациямен қатараL2 лампасы жанады. Сәйкесінше «0»битке пульстіккернеу беру керек, ал«1» битке тұрақты кернеу.

7.2 Сурет– Буып-түйгіш жұмысының уақыттық диаграммасы

Қосымша ішкі программа жазбас үшін пульстік кернеудіPORTC«0» битін терістеу арқылы аламыз, ол нақты бір уақыттан кейін Timerішкі программасының сыртқы циклында орындалады (№3 зертханалық жұмыстан).Терістеуді ХOR(ИсключительноеИЛИ) логикалық операциясымен орындауға болады.Inver_Bitрегистрінде терістелетін бит нөмірін жазамыз, өйткені сирена нөліншібитке жазылған,сондаInver_Bit=h’01’.

Программа келесі алгоритмді орындауы керек:

Inver_Bit=h’01’ ; нөлінші битті терістейтінімізді көрсетеміз.

_PORTC= PORTC ; PORTC күйін _ PORTC регистрінде сақтаймыз.

W=d’40’ ; сигнал беру уақытын береміз.

Call Timer ; ішкі программаны шақырамыз.

PORTC=_ PORTC ; PORTC сақталған мәнін қайтарамыз.

Inver_Bit=h’00’ ; PORTC битін терістеуге тыйым саламыз.

Timerішкі программасының өзгертілген бөлігінің блок-сұлбасы 7.3 суретте көрсетілген,оң жағында түсініктемесі келтірілген.

- мұнда W=h’00’ - XOR логикалық операциясының маскасы. Оны нөлге теңестіру арқылы PORTC битін терістеу қажет емесе деп шешеміз.

- терістелетін биттер көрсетілгенін тексереміз.

- инверсия қажет болса, онда маскаға инверсияланатын биттердің нөмірлерін жазамыз.

- маска(W)және PORTC арасындағы логикалық операцияны орындаймыз. Егер масканың қандай да бір разрядында ‘1’ жазылса,онда PORTC-дағы сәйкес разряд инверсияланады,PORTCқалған разрядтары өзгерусіз қалады.

7.3 сурет– Timer ішкі программасы

7.4 Бақылау сұрақтары

  1. Timer ішкі программасының жұмыс уақыты қалай беріледі?

  2. Клавиатура кнопкалары нені имитациялайды?

  3. Контакттардың «дребезгі» қалай жойылады?

  4. «Паразитнаянаводка» деген не?

  5. Неге Stop кнопкасын Timer ішкі программасына қоюға болмайды?

  6. Апаттық датчиктердің жұмысы қалай имитацияланады?

  7. Изолятордың саны екіге тең екендігі қалай анықталады?

  8. Қорап толғаны қалай көрсетіледі?

8 Зертханалық жұмыс. Сандарды 2-санақ жүйесінен 2_10 санақ жүйесіне ауыстыру

Жұмыс мақсаты: сандарды 2-к санақ жүйесінен 2_10 санақ жүйесіне ауыстыруды үйрену, шақырған программаға мән қайтаратын ішкі программалар құру.

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

Тапсырма.8.1 кестеде берілген екілік санақ жүйесіндегісанды 2_10санақ жүйесіне ауыстырып, жеті сегментті таблоға жүздік, ондық бірліктер санын көрсететін кодты шығару керек. Жеті сегментті таблоны шартты түрде микробақылауыштың бір сегіз разрядты портына қосылған деп аламыз. Бұл таблоны қолдану бойынша ақпарат төменде берілген.

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

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

Vybor_Seg ішкі программасы команда санағышының кіші байтына (h'02' адресі бойынша орналасқан PLC регистрі) W жұмысшы регистр арқылы берілетін N санын қосады. Осы операция нәтижесінде кестенің жолын таңдау орындалады. Мысалы, PCL ‘0’ цифрының коды бар retlw командасының адресін көрсетіп тұрады, бірақы N санын қосқаннан кейін ол бізге N-нші команданы көрсететін болады, бізге керегі де сол. Қолданылатын регистрлердің символдық аттары 8.1 суретте көрсетілген.

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

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

MOVLW b'11101011' ; берілген екілік сан.

MOVWF CHISLO

MOVWF Rab_Reg

; Жүздіктер санын санаймыз

MOVLW D'100'

MOVWF VYCH ; Жүздіктер санын анықтаған кездегі азайтқыш.

M_SOT INCF K_SOT, F;

SUBWF Rab_Reg, F ; Rab_Reg= Rab_Reg-100

BTFSC STATUS, C ; азайту нәтижесі терістігін тексереміз (С=0)?

GOTO M_SOT ; С=1 кезінде жүздіктер санын санау циклы қайталанады.

ADDWF Rab_Reg, F ; қарызға алу болса, алдыңғы қадам мәніндерін кері

DECF K_SOT, F ; қайтарамыз, жүздіктер санын да.

MOVLW D'10'

MOVWF VYCH ; ондықтар санын анықтаған кездегі азайтқыш.

Ондықтар санын санау жүздіктер санын санау сияқты орындалады. Бұл программаны өздігіңізше орындаңыздар.

; бірліктер санын көрсететін кодты табамыз

MOVF Rab_Reg, W ; қайтарудан соң Rab_Reg бірліктер санынан тұрады.

MOVWF K_ED ; бірліктер санын басқа регистрге жазамыз.

SWAPF K_DES, W ; ондықтарды жоғары разрядтарға жазамыз.

ADDWF K_ED, W ; бірліктер санын кіші разрядтарға орнатамыз.

MOVWF R_D_ED ; регистр енді ондықтар және бірліктер санынан тұрады.

MOVF K_ED, W ; W аккумулятор мәні Vyb_Seg і/п аргументі.

CALL VYBOR_SEG ; аргументі W і/п шақырамыз.

MOVWF Kod_seg_ed ;бірліктер санын көрсететін кодты жазамыз.

; Осыған ұқсас ондықтар мен жүздіктер кодтарын анықтаңыздар.

GOTO $ ; негізгі программа мен ішкі программаны бөліп тұр

VYBOR_SEG ; сегменттердің қосылу кодынан тұратын ішкі программа.

addwf PCL, f ; команда санағышындағы жаңа адрес PLC=PCL+W

retlw b'00111111' ; 0 цифрасының коды. W=0 болғанда қайтарылады.

retlw b'00000110' ; 1 цифрасының коды. W=1 болғанда қайтарылады.

retlw b'10101101' ; 2 цифрасының коды. W=2 болғанда қайтарылады.

retlw b'01001111' ; 3 цифрасының коды. W=3 болғанда қайтарылады.

retlw b'01100110' ; 4 цифрасының коды. W=4 болғанда қайтарылады.

retlw b'01101101' ; 5 цифрасының коды. W=5 болғанда қайтарылады.

retlw b'01111101' ; 6 цифрасының коды. W=6 болғанда қайтарылады.

retlw b'00000111' ; 7 цифрасының коды. W=7 болғанда қайтарылады.

retlw b'01111111' ; 8 цифрасының коды. W=8 болғанда қайтарылады.

retlw b'01101111' ; 9 цифрасының коды. W= 9 болғанда қайтарылады.

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

END ; программың соңы.

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

Нұсқа

Екілік сан

Нұсқа

Екілік сан

1

11010011

6

10100110

2

11110010

7

10110001

3

11101001

8

10111100

4

10010000

9

11000111

5

10011011

10

11010010

8.1 суретте b'11101011' екілік сан 2 жүздік, 3 ондық 5 бірлік бар екені көрініп тұр,яғнибұл санондық санақ жүйесінде 235 саны болады.Осы сан таблоға шығады.