Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 4

Разработать программу для микропроцессорного устройства

13.06.2012, 23:47. Показов 4699. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать программу на языке ASSEMBLER для микропроцессорного устройства, выполнить отладку в симуляторе ProW32. Алгоритм работы:
Датчики не замкнуты – процесс счета импульсов по входу Р3.4. В течение 100с на каждый 3-ий импульс зажигаются по 2 светодиода. Далее в течении 20 сек на каждый 2-ой импульс за-жигаются 8 светодиодов. Далее все повторяется. При замыкании любого датчика наступает прерывание. D1 замкнут - VD1 делает 7 миганий по 2 сек. D2 замкнут - на каждый 4-ый им-пульс включается светодиод VD5. D3 замкнут – потетрадное включение светодиодов на 8 сек.

написал вот эту прогу.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
                              ORG   0000H        ;  НАЧАЛО ПРОГРАММЫ С АДРЕСА 0000Н
                JMP START        ;  ПЕРЕХОД НА СТАРТ
                ORG   0003H        ;
                JMP INT_DAT      ;  ВЕКТОР ПРЕРЫВАНИЯ ИНТ0
START:      MOV IE,#01H      ;  РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ ПО ИНТ0 
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                MOV R0,#03H      ;  ПОДГРУЗКА ПЕРЕМЕННОЙ В ПАМЯТЬ  
                MOV TMOD,#1DH    ;  Т/С0-СЧЕТЧИК РЕЖ1,Т/С1-ТАЙМЕР РЕЖ1  
                SETB    IT0          ;  ПО СПАДУ ИМПУЛЬСА
                SETB    EA           ;  РАЗРЕШЕНИЕ ВСЕХ ПРЕРЫВАНИЙ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:           MOV TMOD,#1DH    ;  Т/С0-СЧЕТЧИК РЕЖ1,Т/С1-ТАЙМЕР РЕЖ1
                MOV 20H,#0FH     ;  ДЛЯ ТАЙМЕРА СЕКУНДЫ
                MOV 21H,#64H     ;  ДЛЯ ТАЙМЕРА 100 СЕКУНД
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                MOV TH0,#0FFH    ;  ЗАГРУЗКА СЧЕТЧИКА ИМПУЛЬСОВ
                MOV TL0,#0FDH    ;  НА КАЖДЫЙ 3-ИМПУЛЬС      
                SETB    TR0          ;  ВКЛЮЧИТЬ СЧЕТЧИК
                SETB    TR1          ;  ВКЛЮЧИТЬ ТАЙМЕР
WAIT_OV:        JNB TF1,WAIT_OV1 ;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ ТАЙМЕРА  
                CLR TF1          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ 
                DJNZ    20H,WAIT_OV  ;  ЖДЕМ СЕКУНДУ
                MOV 20H,#0FH     ;  ДЛЯ ТАЙМЕРА СЕКУНДЫ
                DJNZ    21H,WAIT_OV  ;  ЖДЕМ 100 СЕКУНД
                CLR TR1          ;  ВЫКЛЮЧИТЬ ТАЙМЕР
                CLR TR0          ;  ВЫКЛЮЧИТЬ СЧЕТЧИК
                CLR TF1          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                CLR TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                JMP PRODOLJE     ;  ПЕРЕХОДИМ ДАЛЬШЕ
WAIT_OV1:   JNB TF0,WAIT_OV  ;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ СЧЕТЧИКА
                MOV TH0,#0FFH    ;   ЗАГРУЗКА СЧЕТЧИКА ИМПУЛЬСОВ     
                MOV TL0,#0FDH    ;  НА КАЖДЫЙ 3-ИМПУЛЬС(Восстанавливаем исходные значения для ожидания 3-х имульсОВ)
                CLR TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                MOV P2,R0        ;  ЗАЖИГАЕМ СВЕТОДИОДЫ
EE:         DJNZ    23H,EE       ;  ЖДЕМ 256 мкС
                MOV A,R0         ;  ИЗВЛЕКАЕМ ПЕРЕМЕННУЮ
                RL      A            ;  ИЗМЕНЯЕМ ПЕРЕМЕННУЮ(СДВИГАЕМ В ЛЕВО)
                MOV R0,A         ;  СОХРАНЯЕМ ПЕРЕМЕННУЮ
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                JMP WAIT_OV      ;  ПЕРЕЙТИ НА ОЖИДАНИЕ ИМПУЛЬСОВ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PRODOLJE:   MOV TMOD,#1DH    ;  Т/С0-СЧЕТЧИК РЕЖ1,Т/С1-ТАЙМЕР РЕЖ1
                MOV 20H,#0FH     ;  ДЛЯ ТАЙМЕРА СЕКУНДЫ
                MOV 21H,#14H     ;  ДЛЯ ТАЙМЕРА 20 СЕКУНД
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                MOV TH0,#0FFH    ;  ЗАГРУЗКА СЧЕТЧИКА ИМПУЛЬСОВ
                MOV TL0,#0FEH    ;  НА КАЖДЫЙ 2-ИМПУЛЬС      
                SETB    TR0          ;  ВКЛЮЧИТЬ СЧЕТЧИК
                SETB    TR1          ;  ВКЛЮЧИТЬ ТАЙМЕР
WAIT_OVA:   JNB TF1,WAIT_OVA1;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ ТАЙМЕРА
                CLR TF1          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                DJNZ    20H,WAIT_OVA ;  ЖДЕМ СЕКУНДУ
                MOV 20H,#0FH     ;  ДЛЯ ТАЙМЕРА СЕКУНДЫ
                DJNZ    21H,WAIT_OVA ;  ЖДЕМ 20 СЕКУНД
                CLR TR1          ;  ВЫКЛЮЧАЕМ ТАЙМЕР
                CLR TR0          ;  ВЫКЛЮЧАЕМ СЧЕТЧИК
                CLR TF1          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                CLR TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                JMP MAIN         ;  НАЧАТЬ С НАЧАЛА
WAIT_OVA1:  JNB TF0,WAIT_OVA ;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ СЧЕТЧИКА        
                MOV TH0,#0FFH    ;  ЗАГРУЗКА СЧЕТЧИКА ИМПУЛЬСОВ
                MOV TL0,#0FDH    ;  НА КАЖДЫЙ 2-ИМПУЛЬС
                CLR TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ
                MOV P2,#0FFH     ;  ЗАЖЕЧЬ СВЕТОДИОДЫ
FF:         DJNZ    23H,FF       ;   ЖДЕМ 256 мкС    
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                JMP WAIT_OVA     ;  ПЕРЕЙТИ НА ОЖИДАНИЕ ИМПУЛЬСОВ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ПРЕРЫВАНИЕ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;       
INT_DAT:        MOV R1,#0FH      ;  ПОДГРУЗКА ПЕРЕМЕННЫХ
                CLR TR1          ;  ВЫКЛЮЧИТЬ ТАЙМЕР
                CLR TR0          ;  ВЫКЛЮЧИТЬ СЧЕТЧИК
INT_DAT_P:  JNB P1.1,SB1     ;  ВЕКТОР ПРИ НАЖАТИИ Д1
                JNB     P1.4,SB2     ;  ВЕКТОР ПРИ НАЖАТИИ Д2
                JNB     P1.7,SB3     ;  ВЕКТОР ПРИ НАЖАТИИ Д3
END_INT:    RETI               ;  ВЫХОД ИЗ ПРЕРЫВАНИЯ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SB1:            MOV R1,#0FH      ;  ПОДГРУЗКА ПЕРЕМЕННОЙ
                MOV     TMOD,#01H    ;  Т/С0-ТАЙМЕР РЕЖ 1
                MOV 22H,#07H     ;  КОЛИЧЕСТВО ВСПЫШЕК+ГАШЕНИЯ      
SBA1:           MOV     R7,#1EH      ;  ДЛЯ ТАЙМЕРА 2 СЕКУНДЫ 
            MOV TH0,#000H    ;  ОБНУЛЯЕМ СЧЕТЧИК 
            MOV TL0,#000H    ;  ОБНУЛЕНИЕ СЧЕТЧИКА
                SETB    TR0          ;  ВКЛЮЧИТЬ ТАЙМЕР       
WAIT_OVB:   JNB     TF0,WAIT_OVB ;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ ТАЙМЕРА 
                CLR     TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ  
                DJNZ    R7,WAIT_OVB  ;  ЖДЕМ 2-СЕКУНДЫ 
                CLR     TR0          ;  ВЫКЛЮЧАЕМ ТАЙМЕР
                JB      22H.0,AA     ;  ЕСЛИ 1, ТО ОТКЛЮЧИТЬ СВЕТОДИОДЫ
                SETB    P2.0         ;  ВКЛЮЧИТЬ СВЕТОДИОД
                JMP BB           ;  ПЕРЕЙТИ НА ПРОВЕРКУ КОЛ-ВА ВСПЫШЕК
AA:         MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
BB:         DJNZ    22H,SBA1     ;  ПРОВЕРКА КОЛ-ВА ВСПЫШЕК
                JNB     P3.2,INT_DAT_P; ПРОВЕРКА НАЛИЧИЯ ПРЕРЫВАНИЯ 
                JMP     END_INT      ;  ВЫЙТИ ИЗ ПРЕРЫВАНИЯ 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SB2:            MOV     R1,#0FH      ;  ЗАГРУЗКА ПЕРЕМЕННОЙ
                MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ
                MOV R2,#04H      ;  СЧЕТЧИК ИМПУЛЬСОВ               
WAIT_0:     JB  P3.4, WAIT_0 ;  ОЖИДАНИЕ О НА Т0 
WAIT_1:     JNB P3.4, WAIT_1 ;  ОЖИДАНИЕ 1 НА Т0
                DJNZ  R2,WAIT_0  ;    ЖДЕМ 4 ИМПУЛЬСА       
                MOV     P2,#10H      ;  ЗАЖГЛИ 5 СВЕТОДИОД
DD:         DJNZ    23H,DD       ;   ЖДЕМ 255 мкС           
            MOV P2,#00H      ;  ОТКЛЮЧЕНИЕ СВЕТОДИОДОВ   
                JNB P3.2,INT_DAT_P; ПРОВЕРКА НАЛИЧИЯ ПРЕРЫВАНИЯ             
                JMP END_INT      ;  ВЫЙТИ ИЗ ПРЕРЫВАНИЯ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SB3:        MOV P2,R1        ;  ЗАЖИГАЕМ ПЕРВУЮ ТЕТРАДУ
                MOV     TMOD,#01H    ;  Т/С0-ТАЙМЕР РЕЖ 1
                MOV     R7,#0FH      ;  ДЛЯ ТАЙМЕРА СЕКУНД
                MOV     R6,#08H      ;  ДЛЯ ТАЙМЕРА 8 СЕКУНД
                SETB    TR0          ;  ВКЛЮЧИТЬ ТАЙМЕР
WAIT_OVC:   JNB     TF0,WAIT_OVC ;  ОЖИДАНИЕ ПЕРЕПОЛНЕНИЯ ТАЙМЕРА
                CLR     TF0          ;  СБРОС БИТА ПЕРЕПОЛНЕНИЯ  
                DJNZ  R7,WAIT_OVC  ;  ЖДЕМ СЕКУНДУ
                MOV     R7,#0FH      ;  ДЛЯ ТАЙМЕРА СЕКУНД
                DJNZ  R6,WAIT_OVC  ;  ЖДЕМ 8-СЕКУНД 
                CLR   TR0            ;  ВЫКЛЮЧАЕМ ТАЙМЕР  
                MOV A,R1         ;  ИЗВЛЕКАЕМ ПЕРЕМЕННУЮ
                SWAP    A            ;  ИЗМЕНЯЕМ ПЕРЕМЕННУЮ(МЕНЯЕМ МЕСТАМИ ТЕТРАДЫ) 
                MOV     R1,A         ;  СОХРАНЯЕМ ПЕРЕМЕННУЮ 
                JNB P3.2,INT_DAT_P; ПРОВЕРКА НАЛИЧИЯ ПРЕРЫВАНИЯ                
                JMP     END_INT      ;  ВЫЙТИ ИЗ ПРЕРЫВАНИЯ
загвоздка заключается в том что преподаватель говорил что прерывание у меня написано не правильно и что опрос датчиков(типа по какому датчику должно производится прерывание) должен производится не в прерывании, а в теле программы. и собственно вопрос знатокам. Кто может помочь в изменении моей программы. срок сдачи завтра в 9 утра. если надо заплачу.
Миниатюры
Разработать программу для микропроцессорного устройства  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2012, 23:47
Ответы с готовыми решениями:

Разработка микропроцессорного устройства
Ребят я немного растерялась не могу только понять, где я не поняла и не правильно сделала, выдает ошибку ...

Кодовый замок на основе микропроцессорного устройства
Всем привет! По учебе возникли проблемы, не могу понять ассемблер. Времени осталось мало, решил понадеяться на знающих людей. У меня...

Программирование микропроцессорного задающего устройства (задатчика) интенсивности
Здравствуйте. Помогите пожалуйста с программой. В общем надо написать программу для задатчика напряжения, чтобы он выдавал сигнал формы,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2012, 23:47
Помогаю со студенческими работами здесь

Разработать программу, реализующей простейший драйвер для устройства ввода-вывода ОС Windows
Разработать программу, реализующей простейший драйвер для устройства ввода-вывода ОС Windows.

Разработать иерархию не менее 2 классов, и программу Разработать программу для реализации игры пятнашки. Разработать 2-3
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы...

TraceMode5. Разработать FBD-программу, реализующую функцию комбинационного устройства
Средствами Trace mode 5 разработать FBD-программу, реализующую функцию комбинационного устройства, в котором при подаче на вход комбинации...

Разработать логическую схему устройства для выполнения арифметических и логических операций
разработать логическую схему устройства для выполнения арифметических и логических операций. Устройство должно включать арифметические и...

Как написать программу для настройки устройства?
Доброго дня! Подскажите, пожалуйста, есть ли какие-то гайды, как написать элементарную программу для настройки устройства с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru