Розробка програми сортування масиву однобайтних даних
Мінімізація функції за методом карт Карно; розробка програм на мові асемблеру для Intel 8051: сортування масиву однобайтних даних у зовнішній пам’яті; формування послідовності прямокутних імпульсів; підрахунок кількості натискань на клавішу переривання.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 14.04.2012 |
Размер файла | 196,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки, молоді та спорту України
Національний авіаційний університет
Інститут інформаційно-діагностичних систем
КУРСОВА РОБОТА
з дисципліни
Цифрові пристрої та мікропроцесори
Київ - 2010
ЗАВДАННЯ
на курсову роботу
1. За методом карт Карно виконати мінімізацію функції заданою таблицею істинності, розробити та відлагодити програму на мові асемблеру для Intel 8051, що реалізує отриманий логічний вираз; створити у середовищі Electronics Workbench схему, що реалізує отриманий логічний вираз. Змінні , , та знаходяться у комірках зовнішньої пам'яті даних.
x1=85 h, x2= 41h, x3= 36h, x4= 06h.
X1 |
X2 |
X3 |
X4 |
№4 |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
1 |
0 |
0 |
|
0 |
0 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
1 |
|
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
0 |
1 |
1 |
1 |
0 |
|
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
1 |
1 |
1 |
|
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
2. Розробити програму для формування послідовності прямокутних імпульсів з вказаними частотою та коефіцієнтом заповнення. У якості виходу використовувати сигнальну лінію одного із портів паралельного вводу-виводу мікроконтролера.
Тактова частота 6,9465 МГц, частота сигналу 2,857 Гц, вихід P0.7 коефіцієнт заповнення 23,46%.
3. Розробити програму, що виконує сортування масиву однобайтних даних, що знаходиться у зовнішній пам'яті. Мінімальне і максимальне значення масиву повинні бути виведені на статичні індикатори, виведення на які організовано через комірки зовнішньої пам'яті МК. Відображення чисел на індикаторі повинно бути реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
Кількість байт 29, зсув першого елементу масиву A1EF.
4. Розробити та відлагодити програму на мові асемблеру для Intel 8051, що реалізує підрахунок кількості натискань на клавішу переривання INT0 або INT1 та її індикацію та статичний індикатор, виведення на які організовано через комірку зовнішньої пам'яті МК. Число натискань необхідно також дублювати за допомогою семисегментного індикатору, шляхом підсвічення сегментів D, G, A після перевищення певного рівня. Відображення чисел на індикаторі повинно бути реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
Сигнал переривання INT1, межі D 9, G 14, A 26.
1. За методом карт Карно виконати мінімізацію функції заданою таблицею істинності, розробити та відлагодити програму на мові асемблеру для Intel 8051, що реалізує отриманий логічний вираз. Змінні x1, x2, x3 та x4 знаходяться у комірках зовнішньої пам'яті даних.
Адреси: x1=85 h, x2= 41h, x3= 36h, x4= 06h.
X1 |
X2 |
X3 |
X4 |
№4 |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
1 |
0 |
0 |
|
0 |
0 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
1 |
|
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
0 |
1 |
1 |
1 |
0 |
|
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
1 |
1 |
1 |
|
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
Базис: І-Ні.
1.1 Заповнюємо Карту Карно відповідно до таблиці істинності:
0 |
1 |
1 |
0 |
||
1 |
0 |
0 |
1 |
||
1 |
0 |
1 |
1 |
||
1 |
1 |
1 |
1 |
1.2 Будуємо ЗДНФ:
Перетворимо її по де Моргану для того щоб використовувати функціонально повний базис і отримаємо: Отримаємо:
1.3 Блок-схема програми
Размещено на http://www.allbest.ru/
1.4 Розробити та відлагодити програму на мові асемблеру для Intel 8051, що реалізує отриманий логічний вираз
org 0000h; визначення стартового коду та таблиці векторів
mov dptr,#85h
movx A,@dptr; запис змінної х1 у комірку внут.пам'яті
mov 85h,A
mov A,85h
cpl A ; інвертуємо х1 і заносимо його в R1
mov R1,A
mov dptr,#41h
movx A,@dptr; запис змінної х2 у комірку внут.пам'яті
mov 41h,A
mov A,41h
cpl A; інвертуємо х2 і заносимо його в R2
mov R2,A
mov dptr,#36h
movx A,@dptr; запис змінної х3 у комірку внут.пам'яті
mov 36h,A
mov A,36h
cpl A ; інвертуємо х3 і заносимо його в R3
mov R3,A
mov dptr,#06h
movx A,@dptr; запис змінної х4 у комірку внут.пам'яті
mov 06h,A
mov A,06h
cpl A ; інвертуємо х4 і заносимо його в R4
mov R4,A
mov A,85h; ложимо в акумулятор значення х1
orl A,R2; OR регістра і акумулятора
orl A,R4; OR регістра і акумулятора
cpl A; інверсія акумулятора
mov R7,A; (R7) =
mov A,36h; ложимо в акумулятор значення х3
orl A,R4; OR регістра і акумулятора
orl A,R2; OR регістра і акумулятора
cpl A; інверсія акумулятора
orl A,R7; OR регістра і акумулятора
mov R7,A; (R7) =
mov A,85h; ложимо в акумулятор значення х1
orl A,41h; OR комрки і акумулятора
orl A,06h; OR комірки і акумулятора
cpl A; інверсія акумулятора
orl A,R7; OR регістра і акумулятора
cpl A; інверсія акумулятора
mov R7,A; (R7) =
st: jmp st;цикл
2. Розробити програму для формування послідовності прямокутних імпульсів з вказаними частотою та коефіцієнтом заповнення. У якості виходу використовувати сигнальну лінію одного із портів паралельного вводу-виводу мікроконтролера.
Варіант |
Частота, МГц |
Частота сигналу, Гц |
Лінія |
Коефіцієнт заповнення, % |
|
17 |
6,9456 |
2,857 |
Р0.7 |
23,46 |
2.1 Період імпульсу:
.
2.2 Тривалість імпульсу:
2.3 Тривалість паузи:
2.4 Знаходимо частоту імпульсів, яку буде підраховувати кожен з лічильників:
2.5 Знаходимо кількість імпульсів, яку повинен підрахувати лічильник щоб забезпечити та :
2.6 Знайдемо перед установки лічильників:
2.7 Блок-схема програми:
Размещено на http://www.allbest.ru/
2.8 Лістинг програми на мові асемблеру:
org 0000h;визначення стартового коду і таблиці векторів
jmp p07;перехід на мітку p07
org 000Bh;вектор переривання таймера 0
jmp m0;перехід на мітку m0
org 001Bh;вектор переривань таймера 1
jmp m1;перехід на мітку m1
p07:;мітка p07
mov IE,#10001010b;встановлення стану регістру керування , дозвіл
переривань від таймерів 0 і 1
mov TMOD,#10011001b;встановлення регістру режиму TMOD,
встановлення необхідного режиму лічильника
mov TCON,#00010000b;встановлення регістру управління TCON,
запуск лічильника 0
mov R0,#7
mov TH0,#01001011b;початковий стан лічильника 0 молодших розрядів
mov TL0,#01011110b;початковий стан лічильника 0 старших розрядів
mov TH1,#01100001b;початковий стан лічильника 1 молодших розрядів
mov TL1,#10100101b;початковий стан лічильника 1 старших розрядів
setb 87h;вивід на порт P0.7
s1: jmp s1;безкінечний цикл
m0:;мітка mo
clr 87h;очистка значення P0.7
mov TCON,#00000000b;встановлення регістру управління TCON,
зупинка лічильника 0
mov TH0,# 01001011b;початковий стан лічильника 0 молодших
розрядів
mov TL0,# 01011110b;початковий стан лічильника 0 старших розрядів
mov TCON,#01000000b;встановлення регістру управління TCON,
запуск 1-го лічильника
reti;вихід з переривання
m1:
djnz R0,m3
m3:;мітка m1
setb 87h;вивід на порт P0.7
mov TCON,#00000000b;встановлення регістру управління TCON,
зупинка лічильника 1
mov TH1,# 01100001b;початковий стан лічильника 1 молодших
розрядів
mov TL1,# 10100101b;початковий стан лічильника 1 старших розрядів
mov TCON,#00010000b;встановлення регістру управління TCON,
запуск 0-го лічильника
reti;вихід з переривання
мінімізація програма сортування імпульс
3. Розробити програму, що виконує сортування масиву однобайтних даних, що знаходиться у зовнішній пам'яті. Мінімальне і максимальне значення масиву повинні бути виведені на статичні індикатори, виведення на які організовано через комірки зовнішньої пам'яті МК. Відображення чисел на індикаторі повинно бути реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
3.1 Блок-схема програми
Размещено на http://www.allbest.ru/
3.2 Лістинг програми на мові асемблеру:
org 0000h ; визначення стартового коду і таблиці векторів
mov R0,#0;обнулили регістр R0
mov R5,#29; обсяг масиву
mov R0,#10h; початкова адреса масиву
mov dptr,#0A1EFh; в зовнішню пам'ять поклали значення комірки
A1EF
m1:;мітка
movx A,@dptr; число з комірки A1EFh переносимо у внутрішню
пам'ять
mov @R0,A; значення з акумулятора переносимо в масив R0
INC dptr ; інкремент покажчика даних
INC R0 ; інкремент регістру
djnz R5,m1; поки R5 не буде =0 , то m1
mov 60h,#0 ; для проміжного зберігання числа
mov 61h,#0; для проміжного зберігання числа
mov 62h,#29; зберігання к-ті елементів для поточної ітерації
mov R0,#0 ; обнулили регістр R0
mov R0, #10h; початкова адреса масиву
mov R1, #11h; початкова адреса масиву +1
mov R2, 62h; обсяг масиву (поточної ітерації)
mov R3, 62h ; обсяг масиву (ітерацій)
start:
clr c; очищення флагу переносу
mov A, @R0; заносимо значення з регістру R0 до акумулятора
subb A, @R1;порівняння значення в акумуляторі та в регістрі R1
jc max
m2:; мітка
inc R0; інкрементування регістру R0
inc R1 ; інкрементування регістру R1
djnz R2, start ; декремент регістру R2 і перехід на мітку start, якщо він
не дорівнює нулю
mov R0, #10h ; заносимо значення 10 до регістру R0
mov R1, #11h ; заносимо значення 11 до регістру R1
dec 62h ; декрементування комірки 62
mov R2, 62h ; заносимо комірку 62 в регістр R2
djnz R3, start ; декремент регістру R3і перехід на мітку start, якщо він не
дорівнює нулю
mov dptr,#0A000h
mov A,10h ;виведення на лівий індикатор
movx @dptr,A
mov dptr,#0B000h
mov A,39h ;виведення на правий індикатор
movx @dptr,A
s1: jmp s1 ; нескінченний цикл
max:
mov 60h, @R0 ; обмін значеннями поточних комірок
mov 61h, @R1 ; більше значення іде "вверх"
mov @R0, 61h
mov @R1, 60h
jmp m2; перехід на мітку
4. Розробити та відлагодити програму на мові асемблеру для Intel 8051, що реалізує підрахунок кількості натискань на клавішу переривання INT0 або INT1 та її індикацію та статичний індикатор, виведення на які організовано через комірку зовнішньої пам'яті МК. Число натискань необхідно також дублювати за допомогою семисегментного індикатору, шляхом підсвічення сегментів D, G, A після перевищення певного рівня. Відображення чисел на індикаторі повинно бути реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
4.1 Лістинг програми на мові асемблеру:
org 0000h; визначення стартового коду і таблиці векторів
jmp 0100h; перхід за адресою 100h
org 0003h; перехід на обробник переривання INT0
jmp 0040h; перхід за адресою 40h
org 0100h ; визначення стартового коду і таблиці векторів
mov IE, #10000001b; дозвіл переривань INT0
mov TCON,#00000001b; встановлення активного сигналу "перехід 1-0"
mov IP,#00000001b; встановлення найвищого пріоритету для INT0
mov R0, #0; обнулили регістр R0
mov dptr, #8003h
mov A, #10000000b; Дозволяємо роботу ПП
movx @dptr, A
mov dptr,#8002h
mov A, #11111100b; Вибір індикатора для виводу інформації
movx @dptr, A
mov 20h,#9h; заносимо число 9 до комірки 20h
mov 21h,#14h;заносимо число 14 до комірки 21h
mov 22h,#26h ;заносимо число 26 до комірки 22h
mov 2Ah,#00000000b
m1: ; мітка
cjne A,20h,m1; порівнюємо значення акумулятора з 20h
jmp vivod1; перехід на підпрограму vivod1
m2:; мітка
m3:; мітка
cjne A,21h,m3; порівнюємо значення акумулятора з 21h
jmp vivod2 ; перехід на підпрограму vivod2
m5:; мітка
m4:; мітка
cjne A,22h,m4 ; порівнюємо значення акумулятора з 22h
jmp vivod3; перехід на підпрограму vivod3
m6:; мітка
st: jmp st ; нескінченний цикл
org 0040h
Inc R0; інкрементування регістру R0
mov DPTR, #0B000h
mov A, R0 ; виведення на правий індикатор
movx @DPTR,A
reti; вихід з підпрограми
vivod1:
setb 53h ; встановлення біту
mov DPTR, #8000h
mov A, 2Ah; вивід на індикатор
movx @DPTR,A
jmp m2; перехід на мітку
vivod2:
setb 56h ; встановлення біту
mov DPTR, #8000h
mov A, 2Ah; вивід на індикатор
movx @DPTR,A
jmp m5; перехід на мітку
vivod3:
setb 50h; встановлення біту
mov DPTR, #8000h
mov A, 2Ah ; вивід на індикатор
movx @DPTR,A
jmp m6; перехід на мітку
4.2 Блок-схема програми:
Размещено на http://www.allbest.ru/
Висновок
В ході курсової роботи:
· за методом карт Карно виконав мінімізацію функції заданою таблицею істинності, розробив та відлагодив програму на мові асемблеру для Intel 8051, що реалізує отриманий логічний вираз; створив у середовищі Multisim, схему, що реалізує отриманий логічний вираз;
· розробив програму для формування послідовності прямокутних імпульсів з вказаними частотою та коефіцієнтом заповнення. У якості виходу використав сигнальну лінію одного із портів паралельного вводу-виводу мікроконтролера;
· розробив програму, що виконує сортування масиву однобайтних даних, що знаходиться у зовнішній пам'яті. Мінімальне і максимальне значення масиву виведені на статичні індикатори, виведення на які організовано через комірки зовнішньої пам'яті МК. Відображення чисел на індикаторі повинно було реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
· розробив та відлагодив програму на мові асемблеру для Intel 8051, що реалізує підрахунок кількості натискань на клавішу переривання INT1 та її індикацію та статичний індикатор, виведення організовано через комірку зовнішньої пам'яті МК. Число натискань також дублювалося за допомогою семисегментного індикатору, шляхом підсвічення сегментів D, G, A після перевищення певного рівня. Відображення чисел на індикаторі було реалізовано за допомогою інструменту «Окружение» середовища MCStudio.
Размещено на Allbest.ru
Подобные документы
Алгоритм процедури сортування у порядку зростання елементів побічної діагоналі (зліва направо) за допомогою методу вибору мінімального елементу. Підрахунок та визначення кількості перестановок. Виведення масиву на лист MS Excel до та після перетворень.
практическая работа [404,3 K], добавлен 26.09.2013Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.
лекция [411,2 K], добавлен 24.07.2014Схема алгоритму програми. Алгоритм процедури введення даних, виведення результатів сортування, побудови дерева, перестановки елементів, "вирішення сімейного конфлікту". Приклад для масиву з 20 елементів. Користувацьке вікно та побудова піраміди.
курсовая работа [3,0 M], добавлен 21.02.2011Задача сортування даних в програмуванні. Алгоритм сортування обміном за критерієм або вибором, деревом, пірамідальне, швидке, сортування Хоара та метод цифрового сортування. Системні вимоги та інструкція для користувача. Алгоритм та лістинг програми.
курсовая работа [20,6 K], добавлен 08.08.2009Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.
курсовая работа [87,5 K], добавлен 28.10.2015Розробка методу-члену класу для створення нового одновимірного масиву з кількості всіх негативних елементів кожного рядка заданого двовимірного динамічного масиву. Особливість виводу змісту масиву на екран. Аналіз перевірки правильності роботи програми.
лабораторная работа [131,2 K], добавлен 18.11.2021Алгоритм покриття за методом "мінімальній стовпець - максимальний рядок". Підпрограми основного алгоритму. Розробка програми сортування методом простих включень (бульбашковим методом). Словесний опис алгоритму, його контрольний приклад та ефективність.
курсовая работа [36,4 K], добавлен 06.03.2013Вирішення задач сортування в програмуванні та розробка ефективних алгоритмів сортування. Знайомство з теоретичним положенням, що стосуються методів сортування файлів, реалізації їх на мові програмування Turbo Pascal. Методи злиття впорядкованих серій.
курсовая работа [46,9 K], добавлен 16.09.2010Прості та умовні оператори мови С++. Робота з двовимірними масивами. Пошук та сортування даних. Робота з файлами та з динамічними структурами даних. Опис мови програмування Delphi. Складення програми до розроблених алгоритмів. Організація циклів.
отчет по практике [4,3 M], добавлен 28.08.2014Розробка бази даних мовою С для задачі "Біржа праці". Методи організації та зберігання лінійних списків. Операції зі списками при послідовному збереженні. Сортування підрахунком, злиттям, включенням, вибором. Опис функцій, що використовуються програмою.
курсовая работа [478,1 K], добавлен 04.03.2015