Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Жұмысты орындау тәртібі | Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат | Л6 программасының фрагменті. | Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат | Зертханалық жұмыс тапсырмасы және берілгендер | Жұмысты орындау тәртібі | Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат | Жұмысты орындау тәртібі | Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат | Зертханалық жұмыс тапсырмасы және берілгендер |


Читайте также:
  1. D. Бірөлшемді және көпөлшемді
  2. Lt;variant> азаматтық іс қозғау және іс бойынша қорытынды беру үшін
  3. Lt;variant> ол басқа дәлелдермен бірге тексерілуі және бағалануы керек
  4. Lt;variant> сот және іске қатысушы тұлғалар
  5. Lt;variant>өтінішті қайтарады және талапкерге оның қай сотқа жүгіну керектігін түсіндіреді
  6. Lt;variant>басқа тұлғалардың мүдделері үшін өтініш бере алады және іс бойынша қорытынды беру үшін
  7. Lt;variant>ие болмайды және жатпайды

 

Л10 программасының фрагменттері. «RB0/INT арқылы үзуді өңдеу».

include <p16F877.inc>

SUM EQU h'50'; в фондық программада жұмыс істейтін санағыш.

_STATUS EQU h'51'; Status күйін сақтауға арналған регистр.

EVENT EQU h'52'; үзулер кезінде оқиғалардың болғанын көрсететін санағыш.

_WORK EQU h'53'; аккумулятор күйін сақтауға арналған регистр.

; Timer і/п санағыштарының сипаттамасы көрсетілмеген.

 

org 0x000; компиляторға келесі жолды жазу адресін көрсетікіш.

GOTO MAIN; қайта жіберу векторын ЭППЗУ-дің h’000’ адресіне

; жазамыз.

org 0x004; компиляторға келесі жолды жазу адресін көрсетікіш.

GOTO PERS_COUNT; векторды h’004’ үзу адресіне жазамыз.

NOP

MAIN NOP; бос команда.

NOP; курсорды F7 режимінде CLRF STATUS командасына қоямыз.

CLRF STATUS

BSF STATUS, 5

CLRF TRISC

MOVLW B'00001111'

MOVWF TRISB; RB0 үзу клеммасын кіріске орнатамыз.

MOVLW B'00001111'

MOVWF TRISD; узуді имитациялау үшін клавиатура жұмысын реттеу.

BCF STATUS, 5

BSF INTCON, INTE; сыртқы үзулерге рұқсат береміз.

BSF INTCON, GIE; жалпы үзуге рұқсат береміз.

CLRF EVENT; оқиға санағышын тазартамыз (келушілер саны).

MOVLW B'11110001'

MOVWF PORTD; клавиатура аяқшаларына кернеу береміз.

CLRF SUM; регистрді тазартамыз.

M_FON; фондық программаның шексіз циклының белгісі.

MOVLW H'F0'

MOVWF PORTC; фондық программаның жұмысының сигналы.

INCF SUM, F; SUM регистрін периодты түрде өсіреміз.

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

; MOVLW D’2’

; XORWF SUM, W

; BTFSC STATUS, Z

; CALL PERS_COUNT; PERS_COUNT ішкі программа ретінде шақырылады.

MOVLW D'20'; жарықдиодтардың жану уақытын береміз.

CALL Timer

CLRF PORTC

MOVLW D'20'; жарықдиодтардың өшу уақытын береміз.

CALL Timer

GOTO M_FON

Timer; Timer кешігу уақытының і/п келтірілмеген.

PERS_COUNT; үзуді өңдеу ішкі программасы.

BCF INTCON, INTE;сыртқы үзулерге тыйым саламыз.

MOVWF _WORK; W мәнін _WORK регистріне сақтаймыз.

SWAPF STATUS, W

MOVWF _STATUS; Status мәнін сақтаймыз.

BCF INTCON, INTF; сыртқы үзу флагын тазартамыз.

INCF EVENT, F; келесі келушіні тіркеу.

SWAPF _STATUS, W; Status мәнін қалпына келтіреміз.

MOVWF STATUS

SWAPF _WORK, F

SWAPF _WORK, W; W мәнін қалпына келтіреміз.

BSF INTCON, INTE; сыртқы үзуге рұқсат береміз.

RETFIE; өңдегіштен фондық программаға қайтамыз.

END

 

Программа жұмысы МБ қорек көзін қосқанда немесе МБ қайта қосуға жібергенде h’00’ қайта жіберу векторынан басталады, сонда жазылған GOTO MAIN командасына сәйкес басқару бас программаға беріледі. Оның басында PORTB және PORTD регистрлерінің биттері кіріске немесе шығысқа орнатылады. Содан кейін жалпы үзуге және сыртқы үзулерге рұқсат беріледі, РСН биттері орнатылады (INTCON, INTE және INTCON, GIE). РСН жұмысын реттегеннен кейін фондық программаның шексіз циклы басталады.

Қысқа уақытқа клавиатураның «1» кнопкасын басқанда RB0 аяқшасына кернеу импульсі келеді, ол келген адамның турникет арқылы өткенін имитациялайды да INTCON регистрініңINTF битінде сыртқы үзу жайлы флаг-хабарлама түзіледі. Бұл флаг бойынша фондық программаның жұмысы үзіледі де, басқару h’004’ адресі бойынша орналасқан үзу векторына беріледі. Ол жердегі goto PERS_COUNT шартсыз өту командасы үзуді өңдегіш программаға жібереді.

Үзуді өңдегіште лезде сыртқы үзулерге тыйым саламыз (мысалы қосымша жалған үзулерді шақыратын кнопкалық «дребезгтен» сақтану үшін). Содан кейін сыртқы үзу келгені жайлы флаг-хабарламаны 0-ге түсіреміз (BCF INTCON, INTF). Егер оны істемесе, үзулер шексіз болады және фондық программаға өту болмайды. W регистрінің мәнін _ WORK регистрінде және и Status регистрінің мәнін _ STATUS регистрінде сақтаймыз. Ары қарай оқиғаны өңдеу басталады, біздің жағдайда EVENT регистрінің мәні өседі, ол келушілердің санын бақылайды.

Ең соңында фондық программа өз жұмысын дұрыс жалғастыру үшін өңдегіш W және Statusмәндерін қайта қалпына келтіреді, өйткені бұл регистрлердің мәндері өңдегіш жұмысының кезінде өзгеруі мүмкін. Қайта қалпына келтіру SWAPF командасының көмегімен орындалады, өйткені бұл команда Status-қа әсер етпейді. BSF INTCON,INTE командасы арқлы қайтадан үзуді өңдегіштің жұмысына рұқсат береміз. RETFIE командасы бойынша фондық программаға қайтамыз.

EVENT регистрінің өсуі бірден көп болуы мүмкін екенін ескерте кетейік. Бұл клавиатура шығысын RB0 аяқшасымен жалғайтын өткізгіш экрандалмағанына байланысты.

Осы жұмыстарға сәйкес фотоэлектрлік датчик жанынан өткен консервтелген банкаларды санауға болады. Мысалы, 24-х банка өткеннен кейін үзуді өңдегіш конвейерді тоқтатып буып-түю машинасын қоса алады.

 


Дата добавления: 2015-07-19; просмотров: 91 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Жұмысты орындау тәртібі| Жұмысты орындау тәртібі

mybiblioteka.su - 2015-2024 год. (0.009 сек.)