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

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

Әдетте технологиялық процесс күйі оператор пультіне сандық немесе символдық күйде шығуы керек.Мысалы жеті сегментті индикатор алайық, Сандарды осындай индикаторға шығару үшін оларды 2_10 санақ жүйесіне келтіру керек.Бұл жүйеде бір регистрде тек екі ондық сан орналасуы мүмкін, олардың әрбіреуі жарты байтты алады.Екілік жүйеде көрсетсек 00000000санынан бастап10011001 санына дейін. Сонымен, бір регистрге екі ондық сан жазуға болады және 00-ден 99-ға дейінгі сандарды көрсетуге болады [2].

Біз алдыңғы жұмыстарда қолданған ішкі программалар void типінде болған, яғни шақырған программаға ешқандай мәлімет қайтармайды. Шақырған программаға бір байттық мәлімет қайтаратын ішкі программа жазайық. Бұл ішкі программа әдетте жеті сегментті цифрлық индикаторға қолданылады.

8.2 суретте санды ауыстыру алгоритмінің бір бөлігінің блок-сұлбасы келтірілген.

8.2 Сурет– Блок-сұлба

Көптеген цифрлықиндикаторларқажетті сегменттерді таңдап қосу прин­ципімен жұмыс істейді(8.3-суретті қараңыздар).Мәліметті беретін порттың разрядтары санмен белгіленген.Әдетте бұл сегменттер жарықдиодтары немесесұйық кристалдан жасалған элементтердің электродтары болады.

8.3 Сурет – Жеті сегментті индикатор

Ішкі программаның жүйелік көрінісі 8.3,а суретінде келтірілген. Кіріс сигнал мұнда W жұмысшы регистрде орналасқан 4-битті екілік код. Ал осы W жұмысшы регистрге қайтатын шығыс мән сәйкес 7-битті код, ол қажетті сәйкес битті көрсетеді (Vyb_Seg ішкі программасы). PIC микробақылауыштарының гарвард архитектурасы программа жадысының мәндерін мәліметтер ретінде қолдануға мүмүкіндік бермейді. Оның орнына түрлендіру кестесі retlw командаларының жиыны ретінде іске асырылады, олардың әрбіреуі бір байтты константаны береді. Жетінші бит нүкте үшін қолданылады.

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

  1. 2-10 санақ жүйесі не үшін қажет?

  2. 2-10 сан қанша бит орын алады?

  3. Бір регистрге 2-10жүйеде қанша сан жазуға болады?

  4. Цифрлар индикаторға қалай шығарылады?

  5. addwf PCL, f командасының қызметі қандай?

  6. VYBOR_SEG ішкі программасын шақыру кезінде W=h’06’ болса, ол шақырған программаға не қайтарады?

  7. Программада Swapкомандасы қандай мақсатта қолданылған?

  8. Жүздіктер санын табу алгоритмін түсіндіріңіз.

  9. R_D_ED регистрінің қызметі неде?

  10. PCL регистрінің қызметі қандай?

  11. Жеті сегментті индикаторды қосу үшін МБ қанша аяқшасы қажет?

  12. Екі санға арналған индикаторға мәлімет беру қалай жүреді?

9 Зертханалық жұмыс. Таймер tmr1

Жұмыс мақсаты: микробақылауышқа орнатылған таймер-санағыш TRM1 және оны реттеуге арналған арнайы регистрлерді қолдануды үйрену.

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

Жобалауға тапсырма.№3 зертханалық жұмыстағы бояу камерасының жұмысын ала отырып, TMR1 таймерін қолданатынішкі программа құрыңыз.Қосымша боялған детальдар санын санау қажет.

Камераның жұмысының уақыттық диаграммасы 3.2 суретте көрсетілген.

9.1 және9.2 суреттер бойынша бояу камерасын жұмысын автоматтандыру алгоритмінің блок-сұлбасын жасаңыз.Программа фрагменттерімен таңысыңыздар. Соның негізінде өз нұсқаңыз үшін программа құрыңыз.

9.1 сурет-Программа блок-сұлбасы 9.2 сурет-Timer2 і/пблок-сұлбасы

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

Include <p16F877.inc>; символдар кітапханасын қосамыз.

T_reg EQU h'20' ; кешігу уақытын аынқтайтын регистр .

Kol_det EQU h'21' ; боялған детальдар санын көрсететін регистр.

; МБ реттеулері көрсетілмеген.

; TMR1 таймерінің реттеулері

BSF STATUS, 5

CLRF TRISC

CLRF PIE1 ; перифериялық үзулерге тыйым саламыз.

BCF STATUS, 5

CLRF T1CON ; TMR1-ді күту режиіне орнату, TMR1-ді ішкі

;генератордан тактілеу, жиілік бөлгіштің мәні 1:1.

CLRF TMR1H ; TMR1 үлкен регистр-санағышын тазартамыз.

CLRF TMR1L ; TMR1 кіші регистр-санағышын тазартамыз.

CLRF INTCON ; TMR1арқылы үзуге тыйым саламыз .

MOVLW b'00110000'; ішкі генератордан тактілеу.

MOVWF T1CON ; жиілік бөлгіштің мәнін 1:8 орнатамыз .

;№3 зертханалық жұмыстың жұмысшы бөлігіне сәйке фрагменті көрсетілмеген.

GOTO$

Timer2 ; Timer і/п-сы TMR1 бар Timer2 ішкі программамен ауыстырылады.

MOVWF T_reg

; Return ; бас программаны жөндегенде Timer2 і/п өшіру үшін.

M_T_reg ; келесі 4 команда тек F7 режимі үшін.

; MOVLW D'255' ; Timer2 жұмысын жөндеу үшін.

; MOVWF TMR1H ; Timer2 жұмысын жөндеу үшін.

; MOVLW D'254' ; Timer2 жұмысын жөндеу үшін.

; MOVWF TMR1L ; Timer2 жұмысын жөндеу үшін.

BCF PIR1, TMR1IF ; әр циклда таймердің толу флагын нөлге түсіру.

BSF T1CON, TMR1ON; TMR1 таймерін жіберу.

; келесі үш жол – бұл TMR1 таймерінің санағыштарын кеміту циклдары.

M_ TRM1 ; белгі.

BTFSS PIR1, TMR1IF; таймердің толу флагын тексеру.

GOTO M_ TRM1 ; егер флаг орнамаса, онда TRM1 циклы жалғаса береді.

DECFSZ T_reg, F ; регистрдегі санды кемітеміз де нөлге тексереміз.

GOTO M_T_reg; (тек Z=0 болғанда) уақыт біткен жоқ, циклды қайталаймыз.

RETURN

END