Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/99: Рейтинг темы: голосов - 99, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574

Кодовый замок (помощь)

18.12.2010, 16:03. Показов 20019. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова я, с очередными вопросами :)
на сей раз запарка с кодовым замком
задание такого:
Кодовый замок, управляемый одной кнопкой. Содержит кнопку управления и светодиод. Первоначально светодиод не светится. При нажатии на кнопку светодиод начинает мигать; время включения = 0.5 сек., время выключения = 0.2 сек. Считывание кода производится в момент выключения светодиода по состоянию кнопки (нажата или отжата). Длина кода = 10 бит. Если код введен правильно, то вырабатывается сигнал включения электронигнита (2 сек.), в противном случае вырабатывается сигнал включения звонка (2 сек.)

теперь к деталям которые не могу понять... Я не могу сделать так чтобы кнопка как-либо влияла на действие, т.е. на значение, в начале я использую не код длинной 10 бит, а для начала один регистр (в программе поймете). Для проверки работоспособности я сделал так, если я код ввожу верно, то у меня загорается светодиод и не гаснет, а если нет, то он гаснет и не загорается. Ниже написанна программа, а затем и программа в протеусе прикрипленна

Code
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
$NOMOD51
$INCLUDE(REG52.INC)
 
ORG 0
;
LJMP START
;
ORG 100H
;
START:
MOV     P0,#11111111B
MOV     P1,#11111111B
MOV     P2,#11111111B
 
;
ACP:
mov      a,#11111111B
clr      p1.0
mov      c, p1.1
mov      acc.0,c
LJMP    N3
 
;
 
N3:
CJNE    A,#11111110B, END1
mov      r2,#8
;
 
NM10:
CLR      P0.1
lcall   s4it
LCALL   ZAD5
SITB   P0.1
LCALL   ZOD2
DJNZ   R2, nm10
LJMP   nm9
 
END1:
 
LJMP   ACP
 
s4it:
mov      C,   p1.1
rlc      a
ret
nm9:
CJNE   A,#10000000B,   k35
CLR      p0.1
ljmp   nm9
 
k35:
clr      p0.2
ljmp   k35
 
ZAD5:
MOV    TH0, #00010011b ;
MOV    TL0, #10001000b;
MOV    TMOD, #1h ;
MOV    R0, #10
SITB    TCON.4 ;
lcall   again
ret
 
again:
JNB TCON.5, $ ;
CLR TCON.5
DJNZ R0, again
ret
ZOD2:
MOV    TH0, #00010011b ;
MOV    TL0, #10001000b;
MOV    TMOD, #1h ;
mov      R1,   #4
SITB    TCON.4 ;
lcall   again1
ret
again1:
JNB TCON.5, $ ;
CLR TCON.5
DJNZ R1, again1
ret
 
END
Надеюсь кто поможет раобраться. Зарание всем спасибо, кто отпишется по данной теме

[20.55 Кб]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2010, 16:03
Ответы с готовыми решениями:

Кодовый замок на микроконтроллере
Добрый день) получила задание разработать кодовый замок на микроконтроллере. С микроконтроллерами до этого никогда не сталкивалась, поэтому...

Управлением светодиодом комбинацией кнопок (кодовый замок на C8051F410)
Здравствуйте! Нужна помощь! Микроконтроллер x51. Необходимо реализовать включение и отключение светодиода по нажатию предварительно...

Кодовый замок
Есть скетч для Arduino под кодовый замок. Скомпилировал и залил на Mega 2560. Код по умолчанию "1234". При вводе верного кода...

28
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 238
19.12.2010, 18:33
Студворк — интернет-сервис помощи студентам
Какую функцию несёт в программе регистр A ? Для чего туда бит переноса заносится ? Почему вообще должен как-либо меняться бит переноса, если перед этим небыло арифметических операций ?
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
19.12.2010, 19:30
Регистр А - это аккумулятор. В него я заношу двоичный код, по заданию нужен кодовый замок, вот и пытаюсь таким образом его организовать, затем сравниваю значения. Бит будет менятся в зависимости 0 или 1 полученна, апперацию сделанна так, получаю (1 или 0) сдвигаю влево, получаю, сдвигаю... и так 8 раз, чтобы организовать байт
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 238
19.12.2010, 19:47
s4it:
mov C, p1.1; считывает информацию с Р1.1 (я думаю в данном цикле чего-то либо не хватает, либо не верно сделан цикл)
rlc a ; переносит данные из бита переноса в А
ret ; выход из подпрограммы
Ну так вот и не понятно, как поменяется флаг переноса после команды mov ?
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
19.12.2010, 19:52
вот я и говорю может как-нить по другому организовать или вообще что необходимо сделать?
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 238
19.12.2010, 21:24
Давай плясать от печки, код 8ми битный или длинее ?
А, ну да, прочитал 10 бит.
Кстати, вот же dsodir выше алгоритм расписал.
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
19.12.2010, 21:42
цикл с улсовием не умею делать, я могу написать только то чтобы подпрограмма ждала пока я нажму на кнопку - это да, а дальше не понимаю (грамотежки не хватает)
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 238
19.12.2010, 21:49
Я просто не знаю команд 51-го ассемблера, но для мегавского я делал так:

Code
1
2
3
4
5
6
7
8
9
10
11
12
.MACRO pihaem0
lsl bufer_knopki1    ;пихаем в С левый бит 1 байта буфера
rol bufer_knopki0   ;пихаем С в правый бит 0 байта буфера
lsr bufer_knopki1   ;сдвигаем 1 байт обратно
 
lsl bufer_knopki2    ;пихаем в С левый бит 2 байта буфера
rol bufer_knopki1    ;пихаем С в правый бит 1 байта буфера
lsr bufer_knopki2    ;сдвигаем 2 байт обратно
 
lsl bufer_knopki3     ;пихаем в С левый бит 3 байта буфера (справа задвинется 0, как мы хотели)
rol bufer_knopki2     ;пихаем С в правый бит 2 байта буфера
.ENDMACRO
Это макрос задвигающий 0 справа в 4 регистра (которые bufer_knopki 0,1,2,3) из рабочего кода.
Но т.к. тебе нужно всего 10 бит, то можно обойтись двумя байтами, т.е. код будет выглядеть так:
Code
1
2
3
lsl bufer_knopki1      ;пихаем в С левый бит 1 байта буфера
;(справа задвинется так нужный нам ноль)
rol bufer_knopki0     ;пихаем С в правый бит 0 байта буфера
Если же нужно задвинуть не ноль, а единицу, то нужно сначала задвинуть ноль, как в предыдущем примере, а затем:
Code
1
2
3
ldi r16,1                  ;заносим в регистр r16 единицу
or bufer_knopki1,r16  ;т.к. единица это 00000001, то командой or ставим последний бит
;в единицу, а остальные биты значения не поменяют
Но это такой изврат приходится делать в Меге, там просто нет команды сдвига с запихиванием единицы, если в твоём ассемблере такая есть, то всё ещё проще - сразу этой командой задвигаем и все дела.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 238
19.12.2010, 22:05
Цитата Сообщение от RyshirD
цикл с улсовием не умею делать, я могу написать только то чтобы подпрограмма ждала пока я нажму на кнопку - это да, а дальше не понимаю (грамотежки не хватает)
Нет ничего проще:
Code
1
2
3
4
5
6
7
8
9
10
ldi r16,10 ;запихиваем в r16(или любой свободный регистр) количество проходов цикла
clr r17 ;обнуляем r17(или любой свободный регистр)
metka:
yms r17 ;увеличиваем счётчик на 1
;...
;делаем что нам надо сделать
;...
cpse r16,r17 ;СРАВНИВАЕТ РЕГИСТРЫ И ЕСЛИ ОНИ РАВНЫ, ПРОПУСКАЕТ СЛЕД. КОМАНДУ
jmp metka    ;иначе переходим на начало цикла
;Т.Е. ПЕРЕХОДИТ СЮДА, ВЫЙДЯ ТАКИМ ОБРАЗОМ ИЗ ЦИКЛА
Опять же - код для Меги, для своего смотри какие у тебя есть команды, но принцип думаю понятен.
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
20.12.2010, 13:16
проблема решена, я не правельно, кое-где написал :)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2010, 13:16

Кодовый замок в proteus
Всем привет, возникли затруднение с одной лабораторной работой, цель: сделать кодовый замок. ...

Кодовый замок на Arduino nano
Видает ошибку при компиляции данного кода, уже всё что знал перепробовал ничего не получается, не могу понять в чем проблема, ведь код...

Кодовый замок на микроконтроллере atmega8
помогите пожалуйста написать программный код на кодовый замок на микроконтроллере atmega8 заранее спасибо за помощь

ATmega 128. Кодовый замок
Доброго времени суток! У меня есть задание на курсовой проект : Устройство контроля доступом на базе микроконтроллера ATmega128,...

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru