Функція уведення числа й паралельного його відображення з можливістю підтвердження уведення

Мікропроцесорна техніка
Наведіть перелік фізичних факторів Опишіть дію електромагнітного випромінювання на організм людини З чогу складаються засоби вводу-виводу та формування сигналів Які функції виконують механічні перемикачі та кнопки. Покажіть відповідні пристрої на схемі Вкажіть типи буферних схем, використаних в УУМС-2. Їх призначення та особливості роботи Вкажіть архітектурні особливості периферійного МК Опишіть особливості та наведіть основні характеристики інтегральної схеми КР572ПА1 Текстовий редактор Додаткові рекомендації з роботи з ИСП ПРОГРАМИ ТИПОВИХ ПРОЦЕДУР Програма виконує скидання всіх прапорів користувача (область РПД із адресами 20h-2Fh) Операції зі стеком Програма виконує перетворення двійкового числа, яке міститься в акумуляторі в BCD-код Проінвертувати інформацію з порту В у відповідні одиничні біти акумулятора стенда УУМС-2 Процедура відображення уведеної з перемикачів інформації на семисегментном індикаторі в шестнадцатеричном коді Функція уведення числа й паралельного його відображення з можливістю підтвердження уведення
148745
знаков
30
таблиц
12
изображений

2.         Функція уведення числа й паралельного його відображення з можливістю підтвердження уведення.

Уведення й відображення значень перемикачів здійснюється за допомогою регістра DPTR по адресах відповідно 0FFF2h й 0FFF1h.

Для фіксації значень у кожному з доступних регістрів використається зовнішнє переривання INT0(перехід з 1 в 0), в оброблювачі переривання якого й записаний код збереження значення.

Алгоритм роботи програми:

Текст програми:

cseg
org 2000h
jmp main
org 2003h ;початок переривання по INT0
mov DPTR,#0fff2h ;опитування перемикачів
movx A,@DPTR
mov DPTR, #0fff1h ;вивід значень перемикачів
movx @DPTR,A
call 0230h ;затримка 50млС
mov IE,#0 ;для закінчення програми
reti
main: mov IE, #10000001b ;дозволу переривання
loop: mov DPTR,#0fff2h ;опитування перемикачів
movx A,@DPTR
mov DPTR, #0fff1h ;вивід значень перемикачів
movx @DPTR,A
sjmp loop ;нескінченний цикл сканування до переривання

3.         Просуммировать два уведених значення й суму записати в DPTR.

Уведення й відображення значень перемикачів здійснюється за допомогою регістра DPTR по адресах відповідно 0FFF2h й 0FFF1h.

Текст програми:

cseg
org 2000h
jmp main
org 2003h
clr EX0
jmp INT_0
main: mov IE, #10000001b ;дозволу переривання
mov R7,#0 ;лічильник операндов
setb IT1
loop: mov DPTR,#0fff2h ;опитування перемикачів
movx A,@DPTR
mov DPTR, #0fff1h ;вивід значень перемикачів
movx @DPTR,A
sjmp loop ;нескінченний цикл сканування до переривання
INT_0: clr IT1  ;змінити фронт спрацьовування переривання
mov DPTR,#0fff2h ;опитування перемикачів
movx A,@DPTR
mov DPTR, #0fff1h ;вивід значень перемикачів
movx @DPTR,A
mov R6,A ;запам'ятовування поточних значень перемикачів
mov A,R7 ;для перевірки на кількість уведених операндов
jz nul ;уведено два операнда?
mov A,R6 ;да
mov R1,A ;додавання операндов
add A,R0
mov R0,A ;для виводу за допомогою процедури SSI_W
call 0940 ;вивід
mov DPL,A ;запис значення в DPTR
jmp exit ;кінець програми
nul: mov A,R6 ;немає
mov R0,A ;збереження першого операнда
inc R7 ;наступний буде вводитися другий операнд
setb EX0 ;дозволу переривання
jmp ex ;вихід із процедури уведення
exit: mov R7,#0 ;для закінчення програми
ex: reti

4.         Секундомір. Програма використає апаратні засоби відліку тимчасових інтервалів - таймер 0 (200Bh). Час виводиться на ССИ за допомогою стандартної процедури 0940 (для цього потрібне значення потрібно помістити в регістр R0). Програма виконується в зацикленому стані.


Алгоритм роботи програми:

Текст програми:

cseg
org 2000h
jmp main ;перехід до виконання головної програми
org 200Bh
jmp timer ;перехід до виконання програми обробки переривання
main: mov TMOD,#01h ;включаємо 16 – розрядний таймер
mov IE,#10000010b ;дозволяємо переривання від таймера
mov TL0,#LOW(555) ;завантаження значення для відліку – 50мС
mov TH0,#HIGH(555)
mov R0,#1 ;початку з 1 секунди
call 0940h ;візуалізація секунд
setb TR0 ;старт таймера
loop: sjmp loop ;нескінченний цикл
timer: clr TR0 ;зупинка таймера
inc R7 ;20*50мС=1С
cjne R7,#20,out ;пройшла 1С?
mov R7,#0 ;так – обнуління лічильника циклів по 50мС
inc R0 ;пройшла 1С – инкремент показника секунд
cjne R0,#60,out1 ;пройшла 1 хвилина?
mov R0,#1 ;так - секунди = 1
out1: call 0940h ;показати секунди
out: mov TL0,#LOW(555) ;завантаження значення для відліку – 50мС
mov TH0,#HIGH(555)
setb TR0 ;старт таймера
reti ;кінець підпрограми обробки переривання

5.         Стан перемикача INT0. Завдяки цій програмі можна обробляти переривання від INT0 без використання переходів на програма-оброблювач переривань і сканувати стан цього виводу порту P3 як скануються перемикачі. Принцип програми складається зі сканування всього порту й виділення із цього значення потрібного біта(другого). У судячи із цього біта визначається сигнал на INT0. Програма циклічно сканує порт і відповідно до зазначеного біта видає значення на лінійку светодиодов. Два значення - усі запалені - INT0=1; Половина запалена - INT0=0


Текст програми:

cseg
org 2000h
jmp main ;перехід до виконання головної програми
org 2003h
jmp ent ;перехід до виконання програми обробки переривання
main: mov IE,#10000001b ;дозволяємо переривання від INT0
loop: mov A,P3 ;сканування значень на порту P3 (INT0 – P3.2)
jb Acc.2,true ;INT0=1?
jmp false ;немає
true: mov DPTR,#0FFF1h ;так – візуалізація
mov A,#255 ;запалити всі светодиоды – INT0=1
movx @DPTR,A
jmp loop ;нескінченне сканування
false: mov DPTR,#0FFF1h ;немає - візуалізація
mov A,#11110000b ;запалити половину светодиодов – INT0=0
movx @DPTR,A
jmp loop ;нескінченне сканування
ent: clr EX0 ;прийшов сигнал INT0
mov DPTR,#0FFF2h ;вивід значень перемикачів на лінійку светодиодов
movx A,@DPTR
mov DPTR,#0FFF1h
movx @DPTR,A
call 0230h ;затримка для фіксації візуалізації
setb EX0 ;дозвіл переривання від INT0
reti ;кінець підпрограми обробки переривання

7 ІНДИВІДУАЛЬНЕ ЗАВДАННЯ

Постановка завдання

Темою індивідуального завдання є розроблення пристрою для регістрації подій. Для регістрації подій треба використати 8 дискретних датчиків які скануються з інтервалом 50 мС. По перериванню таймера 1 виконується підпрограма сканування датчиків та запису інформації про подію в зовнішню пам`ять (кількість подій – 8). При записі інформації про подію добавляється і час події, який відраховує таймер 0.

Розробка схеми алгоритму програми

Першим блоком програми повинен бути блок завантаження потрібних значень до регістрів таймерів та обнуління регістрів, які потрібні для зберігання інформацій про час, різні лічильники та для ін.

Запуск таймерів (0 та 1) важлива функція, яка дозволяє почати відлік часу та відлік інтервалів для сканування датчиків.

Щоб забезпечити паралельне реагування на події від таймерів та виводу INT0, який дає змогу користувачу проглянути записи про події в резидентній пам’яті програм, треба зациклити основну програму й надати змогу підпрограмам обробки переривань виконуватися після приходу керуючого сигналу.

Отже, для кожного пристрою – таймерів 0 та 1, вивід INT0, треба написати свою підпрограму. На схемі алгоритму такі підпрограми зображені в блоках 8, 10 та 11.

Схема алгоритма представлена на ПН5.091504.15.04.00Д

Розробка схеми електричної принципової

Так як даний пристрій базується на УНМС-2, то доцільним було б розробити схему електричну принципову керуючись готовою схемою УНМС-2, тобто відібрати потрібні елементи, а інші не враховувати.

Виходячи із завдання можна припустити, що центральним елементом схеми буде МК Atmel AT89S8252, який буде здійснювати управління над усіма іншими пристроями. Також в схеми слід включити і елементи індикації такі як семисегментний індикатор, рідкокристалічний дисплей на лінійку світо діодів. Судячи з цього треба додати до схеми буферні елементи, які б розвантажили порти МК. Схема представлена на креслені ПН5.091504.15.04.Е3


Програма на мові assembler

cseg
org 2000h
jmp main ;початок головной програми
org 2003h
jmp select ;перехід по перериванню від INT0
org 200Bh
jmp timer ;перехід по перериванню від таймера 0
org 201bh
jmp scan ;перехід по перериванню від таймера 1
main: mov TMOD,#17 ;конфігурування таймерів як 16 розрядних
mov IE,#138 ;дозвіл перериванням
setb EX0 ;дозвіл переривання від INT0
setb PT0 ;встановлення найвищого пріоритета таймеру 0
mov TL0,#LOW(555) ;завантаження у таймерт значення 50 мС
mov TH0,#HIGH(555)
mov TL1,#LOW(555)
mov TH1,#HIGH(555)
mov R0,#0 ;обнулення всіх регістрів
mov R1,#0
mov R2,#0
mov R3,#0
mov R7,#0
call tvis ;визов процедури візуалізації часу
setb TR0 ;запуск таймерів
setb TR1
loop: sjmp loop ;бескінечний цикл
timer: clr TR0 ;початок процедури обробки перивання від таймеру 0
inc R7 ;лічильник переривань
cjne R7,#180,out ;переривань було 180?
mov R7,#0 :так обнулення лікильника переривань
inc R0 ;зафіксувати 10 сек. У регістрі секунд
cjne R0,#6,out ;перевірка на те, що пройшла хвилина чи ні
mov R0,#1 ;пройшла – 60 сек = 1 сек
inc R1 ;фіксування 1 хв. У регістрі хвилин
cjne R1,#60,out ;пройшла година?
mov R1,#1 Так
inc R2 ;фіксація часу
cjne R2,#24,out ;пройшов день
mov R2,#0
inc R3
cjne R3,#32,out ;пройшов місяць
mov R3,#1
out: call tvis ;візуалізація часу кожні 10 сек.
mov TL0,#LOW(555)
mov TH0,#HIGH(555)
setb TR0
reti
scan: clr TR1 ;програмне сканування датчиків
mov DPTR,#0FFF2h ;адреса датчиків
movx A,@DPTR ;зняти значення датчиків
jz not_al ;хоча б один датчик спрацював? Якщо ні– у кінець
jnb Acc.0,n1 ;так – побітна перевірка слова від датчиків
mov R7,#1 ;перевірка 1 датчика і якщо він спрацював, то записати
call alarm ;інформацію про подвю
n1: jnb Acc.1,n2 ;2-ий
mov R7,#2
call alarm
n2: jnb Acc.2,n3 ;3-ій
mov R7,#2
call alarm
n3: jnb Acc.3,n4 ;4-ий
mov R7,#3
call alarm
n4: jnb Acc.4,n5 ;5-ий
mov R7,#4
call alarm
n5: jnb Acc.5,n6 ;6-ий
mov R7,#5
call alarm
n6: jnb Acc.6,n7 ;7-ий
mov R7,#6
call alarm
n7: jnb Acc.7,not_al ;8-и1
mov R7,#7
call alarm
not_al: mov TL1,#LOW(555)
mov TH1,#HIGH(555)
setb TR1
reti
select: clr EX0 ;підпрограма перегляду записаних подій
clr TR1 :зупинка сканування датчиків
li: mov DPTR,#0FFF2h ;сканування перемикачів для уводу номера події
movx A,@DPTR
anl A,#7 ;маскування не поьрібних розрядів
inc A ;для правильної візуалізації
call get_num ;переведення 2 значення да коду ССІ
mov DPTR,#0FFF7h ;відображення введеної цифри
movx @DPTR,A
call view ;виклик процедури, яка запише до DPTR адресу плдії
jnb P3.2,li ;зациклювання до підтвердження ввіоду
movx A,@DPTR ;відображення інформації про подійю відновідно до
mov DPTR,#0FFF7h ; введеної цифри – номера події
call get_num
movx @DPTR,A
setb EX0
setb TR1
reti
view: mov B,#20h ;процедура запису до DPTR адреси події
mul AB ;так як запис має розмір 20h біт
mov DPTR,#4000h ;перший адрес першої події
mov R5,A ;мл
mov R6,B ;ст
mov A,DPL ;додаймо до DPTR результат множення і отримаємо
add A,R5 ;адрес, за яким записана потрібна користувачу подія
mov DPL,A
mov A,DPH
add A,R6
mov DPH,A
ret
alarm: inc R4 ;підрограма запису події у РПД
cjne R4,#9,norm
mov R4,#0 ;виклик процедури виводу повідомлення об помилки - переповнення
norm: mov A,R4
mov B,#20h
mul AB
mov DPTR,#4000h
mov R5,A ;мл
mov R6,B ;ст
mov A,DPL
add A,R5
mov DPL,A
mov A,DPH
add A,R6
mov DPH,A
mov A,R7
mov B,R0
mov R0,#18h
rec: movx @DPTR,A
inc DPTR
inc DPTR
inc DPTR
inc DPTR
inc DPTR
inc DPTR
inc DPTR
inc DPTR
mov A,@R0
dec R0
dec R0
dec R0
dec R0
dec R0
dec R0
dec R0
nop
djnz R0,rec
mov A,B
movx @DPTR,A
ret
tvis: mov A,R0
mov DPTR,#0FFF1h
movx @DPTR,A
mov A,R1
anl A,#0Fh
cjne A,#9,prov
nplus: call get_num
mov DPTR,#0FFF7h
movx @DPTR,A
jmp st
prov: jnc plus
jmp nplus
plus: call get_num
mov DPTR,#0FFF7h
movx @DPTR,A
mov A,R1
swap A
anl A,#0Fh
inc A
jmp e1
st: mov A,R1
swap A
anl A,#0Fh
e: call get_num
inc DPTR
movx @DPTR,A
mov A,R2
anl A,#0Fh
cjne A,#9,prov1
nplus1: call get_num
mov DPTR,#0FFF9h
movx @DPTR,A
jmp st1
prov1: jnc plus1
jmp nplus1
plus1: call get_num
mov DPTR,#0FFF9h
movx @DPTR,A
mov A,R1
swap A
anl A,#0Fh
inc A
jmp e1
st1: mov A,R1
swap A
anl A,#0Fh
e1: call get_num
inc DPTR
movx @DPTR,A
ret
get_num: inc A
movc A,@A+PC
ret
db 00111111b ;0
db 00000110b ;1
db 01011011b ;2
db 01001111b ;3
db 01100110b ;4
db 01101101b ;5
db 01111101b ;6
db 00000111b ;7
db 01111111b ;8
db 01101111b ;9
db 00111111b ;0
db 00000110b ;1
db 01011011b ;2
db 01001111b ;3
db 01100110b ;4
db 01101101b ;5

ВИСНОВКИ

В результаті виконання практики я набув практичні навички програмування і вирішення різноманітних задач. Також в ході практики були виконані всі вимоги технічного завдання і звіт включає в себе такі розділи, як – охорона праці, структура, призначення та взаємодія програмного забезпечення УНМС-2, технічне описання стенду УНМС-2, програми типових процедур, тестові програми та індивідуальне завдання.

В результаті проходження практики було вивчено:

- архітектуру сучасних мікроконтролерів;

- методи тактування, режими зниженого енергоспоживання й скидання типових мікроконтролерів ;

- роботу системи переривань мікроконтролерів;

- організацію та методи програмування портів уводу-виводу й таймерів;

- призначення та функціонування компаратора;

- організацію, режими роботи та функціонування аналого-цифрового перетворювача;

- організацію, режими роботи, функціонування та методи програмування сучасних послідовних периферійних інтерфейсів;

- системи команд мови програмування Аssembleг для АVR та МСS-51сумісних мікроконтролерів;

- правила написання програм на мові програмування Аssembler;- технічні характеристики сучасної цифрової елементної;

- склад лабораторного стенда на основі УНМС-2;

- структуру, технічні характеристики, конструкцію та призначення органів керування УНМС-2;

- склад та функціональне призначення програмного забезпечення


ПЕРЕЛІК ПОСИЛАНЬ

1.         Бродін В.Б., Калінін А.В. Системи на мікроконтролерах і БІС програмувальної логіки. - М.: Видавництво ЭКОМ, 2002. - 400 с.

2.         Евстифеев А. В. Мікроконтролери AVR сімейств Tiny й Mega фірми "ATMEL". - М.: Видавничий будинок "Додека-XXI", 2004. - 560 з.

3.         Самофалів К.Г. й ін. Мікропроцесори: Довідник - К.: Техніка, 1986. - 278с.

4.         Микроконтролерні системи: структури й практичне застосування. Частина 1. / В.Г. Джулгаков й ін. - Учеб. посібник. - Харків: Нац. аерокосмічний ун-т "Харьк. авиац. ин-т", 2003. - 126 с.

С.В. Якубовский, Л.И. Ниссельсон Цифрові й аналогові ІМС 1996-530c

5.         www.atmel.ru

6.         Житецький В.Ц., Джиги рей В.С., Мельников О.В. Основи охорони праці

7.         Житецький В.Ц. Охорона праці користувачів комп’ютерів

8.         www.mikrokontrolers.ru

9.         www.chipinfo.ru


Информация о работе «Мікропроцесорна техніка»
Раздел: Информатика, программирование
Количество знаков с пробелами: 148745
Количество таблиц: 30
Количество изображений: 12

Похожие работы

Скачать
312140
1
113

... 4.                 Як графічно позначаються польові транзистори? Інструкційна картка №9 для самостійного опрацювання навчального матеріалу з дисципліни «Основи електроніки та мікропроцесорної техніки» І. Тема: 2 Електронні прилади 2.4 Електровакуумні та іонні прилади Мета: Формування потреби безперервного, самостійного поповнення знань; розвиток творчих здібностей та активізації розумово ...

Скачать
16812
1
2

... ії контурів управління Автоматична система управління дозування формаліна передбачає контролювання таких параметрів як Fстр. кількості постачаємої стружки в дифузійний апарат, є головним чинником який впливає на час подачі формаліна в дифузійну установку, рН дифузійного соку та Т температура середовища протікання процесу, ці показники відображають розвиток мікрофлори в дифузійному апараті та є ...

Скачать
20097
0
2

... для розв'язання особливо складних науково-технічних задач, оброблення великих обсягів даних у реальному масштабі часу, моделювання складних систем, автоматизованого проектування складних об'єктів, а також у системах керування (промислових і військових). Макет найпотужнішого суперкомп'ютера ES (Earth Simulator) Центра моделювання Землі (Earth Simulator Center) у Йокогамі (Японія) показаний рис. ...

Скачать
91869
3
6

... дзеркала над демонстраційною плитою протягом багатьох років з успіхом використовуються в кулінарних училищах. 2.2 Експериментальна перевірка ефективності застосування технічних засобів навчання у навчально-виховному процесі при вивченні дисципліни «Кулінарія» Для перевірки результативності засвоєння знань студентами Чернігівського комерційного технікуму з використанням на заняттях технічних ...

0 комментариев


Наверх