Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: i8080/8085/KP580
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Денис2345
0 / 0 / 0
Регистрация: 31.01.2017
Сообщений: 4
1

Переписать программу "Кодовый замок" под КР580

31.01.2017, 20:53. Просмотров 538. Ответов 2
Метки нет (Все метки)

Ребят помогите написать программу
нужно Данную программу написать на КР580

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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Dseg                                                     Сегмент данных     
door_code   equ r0          ;массив введённых значений
attempts        equ 38h     ;переменная – число попыток ввода
 
cseg                                                       Программный сегмент
org 00h
ajmp    main
 
org 0bh
ajmp    timer0
 
org 100h
 
main:                                          Начало выполнения программы
anl p2,#1h          ;выключение светодиода и динамика
mov ie,#82h         ;разрешаем прерывания от таймера
mov tmod,#1h            ;задаём режим таймера – 16 бит
mov door_code,#30h      ;задание адреса для вводимых цифр кода
mov attempts,#3h            ;количество попыток
sjmp    ent1                ;переход к началу главного цикла
 
enter_digit:                ;обработка введённого значения
mov @door_code,a        ;запоминаем цифру
 
inc door_code           ;переходим к след. адресу
mov a,door_code 
call delay2
cjne    a,#36h,ent1     ;проверяем,все ли цифры введены (из 6)
ajmp    compare     ;переход к сравнению кодов
 
ent0:               ;ввод 0
mov p0,#0f7h
 
jb  p0.5,ent1
call delay2
mov a,#0h
wait0:
jnb     p0.5,wait0
ajmp    enter_digit
 
ent9:                   ;ввод 9
jb  p0.6,ent0
call delay2
mov a,#9h
wait9:
jnb     p0.6,wait9
ajmp    enter_digit
 
ent1:                   ;ввод 1
mov p0,#0feh            ;устанавливаем 0 на выходе P0.0
 
jb  p0.4,ent2           ;если не нажата кнопка, к след. кнопке
call delay2             ;ждём, пока пройдёт дребезг контактов
 
mov a,#1h               ;запоминаем введённую цифру
wait1:                  
jnb     p0.4,wait1      ; ждём, пока отпустят кнопку
ajmp    enter_digit     ;переход к обраб. введённого значения
 
ent2:                   ;ввод 2
jb  p0.5,ent3
call delay2
mov a,#2h
wait2:
jnb     p0.5,wait2
ajmp    enter_digit
 
ent3:                   ;ввод 3
jb  p0.6,ent4
call delay2
mov a,#3h
wait3:
jnb     p0.6,wait3
ajmp    enter_digit
 
ent4:                   ;ввод 4
mov p0,#0fdh
 
jb  p0.4,ent5
call delay2
mov a,#4h
wait4:
jnb     p0.4,wait4
 
ajmp    enter_digit
 
ent5:                   ;ввод 5
jb  p0.5,ent6
call delay2
mov a,#5h
wait5:
jnb     p0.5,wait5
ajmp    enter_digit
 
ent6:                   ;ввод 6
jb  p0.6,ent7
call delay2
mov a,#6h
wait6:
jnb     p0.6,wait6
ajmp    enter_digit     
 
ent7:                   ;ввод 7
mov p0,#0fbh
 
jb  p0.4,ent8
call delay2
mov a,#7h
wait7:
jnb     p0.4,wait7
ajmp    enter_digit
 
ent8:                   ;ввод 8
 
jb  p0.5,ent9
call delay2
mov a,#8h
wait8:
jnb     p0.5,wait8
ajmp    enter_digit
 
code_wrong:         ;обработка неверного кода
mov door_code,#30h      ;возвращаемся к началу массива
djnz attempts,ent1          ;если есть ещё попытки, в гл. цикл
setb    p2.1                ;включение звукового сигнала
call delay              ;задержка 1 с
clr     p2.1                ;выключение звукового сигнала
mov attempts,#4h            ;восстан. число попыток
jmp code_wrong  
 
compare:                ;сравнение кодов
dec door_code           ;переходим к предыдущей цифре
cjne @door_code,#6h,code_wrong     ;проверяем 6-ю цифру и далее все 
dec door_code           ;цифры по порядку
cjne @door_code,#5h,code_wrong
dec door_code
cjne @door_code,#4h,code_wrong
dec door_code
cjne @door_code,#3h,code_wrong
dec door_code
cjne @door_code,#2h,code_wrong
dec door_code
cjne @door_code,#1h,code_wrong
 
clr p2.0                    ;открыть замок
setb    p2.2                    ;включить светодиод
mov attempts,#3h            ;восстан. кол-во попыток
wait_open:
jnb p0.7,wait_open      ;ждём, пока откроется дверь
call delay2 
wait_close:
jb  p0.7,wait_close     ;ждём, пока закроется дверь
setb    p2.0                ;закрыть замок 
clr p2.2                ;выключить светодиод
ajmp    ent1                ;переход в гл. цикл
 
 
timer0:             ;обработка прерывания от T0
clr tcon.4
clr tcon.5
reti
 
delay:                  ;задержка 1 с
mov r1,#1fh
loop1:
mov th0,#0h
mov tl0,#0h
setb    tcon.4
loop2:
jb tcon.4,loop2
djnz r1,loop1
ret
 
 
delay2:             задержка 5 мс
mov r3,#13h
loop4:                                        возврат
mov     r2,#0ffh
loop3:                                        возврат
djnz    r2,loop3
djnz    r3,loop4
ret
end
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2017, 20:53
Ответы с готовыми решениями:

Написать программу "Кодовый замок" на Ассемблере КР580 по блок-схеме
Ребят помогите по этой блок схеме написать программу на ассемблере КР580

На микропроцессоре кр580 нужно написать программу "секундомер"
На микропроцессоре нужно написать программу "секундомер". начиная справа 2 ячейки отвечают за...

Кодовый замок на базе КР580ВМ80А
Доброго времени суток! Передо мной стоит такая задача: Разработать МПС на базе КР580. Состав схемы...

Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***".
Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***". Data Segment para 'Data'...

Изъять слова, которые имеют префикс "re", "not", "be"
Заданы символьная строка. Слова и идентификаторы разделяются хотя бы одним символом пробела....

2
ФедосеевПавел
Модератор
4252 / 2341 / 940
Регистрация: 01.02.2015
Сообщений: 7,735
01.02.2017, 08:41 2
Денис2345, эта программа никогда не перепишется на КР580. Причина - приведённый код для микроконтроллера (микроЭВМ), а переписать вы просите для микропроцессора.

Возьмите хотя бы схему для подобного устройства Кодовый замок на базе КР580ВМ80А

Ещё прошу осознать трудоёмкость данной работы. Оцениваю её в 20-30 часов (изучение документации, алгоритмов обработки, набор, отладка).
Поэтому, настоятельно прошу вас заняться самостоятельной работой. По некоторым деталям вам будет помощь, но целиком готовый код - вряд ли.
0
pyzhman
802 / 493 / 69
Регистрация: 15.05.2012
Сообщений: 2,783
01.02.2017, 08:54 3
Цитата Сообщение от Денис2345 Посмотреть сообщение
программу написать
Может быть использован алгоритм этой программы. Писать только под железо 580. А оно кардинально отличается от микроконтроллеров.
Возможно, для схемы по ссылке где-то есть программа. Надо поискать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2017, 08:54

Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа
Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа "str2",0 ...

Переписать программу написанную под dos на windows
Доброго времени суток! Попросили переписать программу (психологический тест). Даётся куча...

Заменить во вводимом тексте каждое слово "ЭВМ" словом "машина"
Здравствуйте. Поможете разобраться с ниже приведенной задачей: Заменить во вводимом тексте...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru