Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 16

[1816ВЕ51] Подсчёт числа срабатываний механического датчика

21.04.2021, 11:27. Показов 2284. Ответов 8

Студворк — интернет-сервис помощи студентам
такой вот вопрос, есть 2 блок схемы где программа по идее должна

"механический датчик, имеющий два состояния, подключён к одному из выводов порта Р1 микроконтроллера 1816ВЕ51. Состояние “включено” датчика соответствует замкнутому состоянию контакта. Состояние “выключено” соответствует разомкнутому состоянию контакта. Разработать программу, которая:
– фиксирует первое срабатывание датчика;
– после выдержки времени, достаточного для окончания процесса дребезга, проверяет состояние датчика;
– если десятикратно зафиксировано нажатое состояние датчика, то считается, что датчик сработал;
– если было зафиксировано отжатое состояние датчика, считается, что было ложное срабатывание датчика;
– фиксирует первое разомкнутое состояние датчика;
– после выдержки времени, достаточного для окончания процесса дребезга, проверяет состояние датчика;
– если десятикратно зафиксировано отжатое состояние датчика, то считается, что датчик сработал;
– если было зафиксировано нажатое состояние датчика, то считается, что было ложное срабатывание датчика;
– в случае правильного срабатывания датчика, увеличивает содержимое счетчика числа срабатываний;
– время счета задается счетчиком-таймером и составляет 1 сек;
– счетчик-таймер загружается перед началом опроса датчика."

преподаватель задает вопрос, а что будет если удалить блок инициализации? как тогда датчик будет фиксировать замкнут или разомкнут контакт? как в общем тогда будет работать программа?

листинг программы прилагается -

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
0001                              ORG        100H        ;размещение основной программы
0002    0100:  51 04 00               CALL       P              ;вызов подпрограммы
0003                              ORG        200H        ;размещение подпрограммы в памяти 
0004                                  
0005    0200:  7D 15                              MOV        R5,#15H  ;насттройка счётчка переполнений
0006    0202:  7C 00                              MOV        R4,#00H  обнуление счётчика кол-ва срабатываний
0007                                  
0008    0204:  75 89 01    p:        MOV        89H,#01H  ;выбор режима работы
0009    0207:  75 8C 00               MOV        8CH,#00H  ;загрузка старшего байта таймра
0010    020A:  75 8A 00               MOV        8AH,#00H  ; загрузка младшего байта таймра
0011    020D:  D2 58                  SETB       88H.4          ;запуск Т-ра
0012                                   
0013                                  
0014    020F:  30 58 05    a1:      JNB        88H.5,A2        ;проверка переполненя таймера
0015    0212:  D2 58                              SETB       88H.5            ;сброс флага переполненя таймера
0016    0214:  DD 01                  DJNZ       R5,A2           ;проверка счётчика переполнения
0017    0216:  22                             RET        
0018    0217:  20 00 17    a2:      JB         0D0H.5,A7
0019                                  
0020                                  
0021    021A:  30 5A F2               JNB        90H.0,A1          ;ожидание P0.1=1
0022                                  
0023    021D:  79 04                              MOV        R1,#4              ;загрузка  в R1 4
0024    021F:  7A FF                    a3:     MOV        R2,#255          ;загрузка в R2 255
0025    0221:  DA FE        a4:     DJNZ       R2,A4              ; R2=R2-1 и переход если не "0"
0026    0223:  D9 FA                  DJNZ       R1,A3              ; R1=R1-1 и переход если не "0"
0027                                  
0028    0225:  7B 0A                              MOV        R3,#10            ;загрузкав счётчик числа  N
0029    0227:  30 5A E5    a6:      JNB        90H.0,A1           ;проверка порта на  "0"
0030    022A:  DB FB                  DJNZ       R3,A6              ; R3=R3-1 и переход если не"0"
0031                                  
0032    022C:  B2 00                  CPL        0D0H.5             ;инверсия управляющего флага
0033    022E:  80 DF 00               JMP        A1                     ;переход на проверку таймера
0034                                  
0035    0231:  20 5A DB    a7:      JB         90H.0,A1             ;ожидания «0»
0036                                  
0037    0234:  79 04                              MOV        R1,#4               ; загрузка  в R1 число 4
0038    0236:  7A FF                   a8:      MOV        R2,#255           ; загрузка в R2 число 255
0039    0238:  DA FE       a9:      DJNZ       R2,A9               ; R2=R2-1 и переход если не "0"
0040    023A:  D9 FA                  DJNZ       R1,A8               ; R1=R1-1 и переход если"0"
0041                                  
0042    023C:  7B 0A                              MOV        R3,#10              ;загрузка в счётчитк числа N
0043    023E:  20 5A 03    b1:      JB         90H.0,B2              ;if "1", переход в начало цикла
0044    0241:  DB FB                  DJNZ       R3,B1                ; R3=R3-1 и переход если не"0"
0045                                  
0046    0243:  0C                             INC        R4                      ;инкремент счётчика кол-ва срабатываний
0047                                  
0048    0244:  B2 00                   b2:      CPL        0D0H.5             ;инверсия управляющего флага
0049    0246:  80 C7 00                JMP        A1                    ;переход на проверку таймера
0050        
0051
Миниатюры
[1816ВЕ51] Подсчёт числа срабатываний механического датчика  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2021, 11:27
Ответы с готовыми решениями:

Требуется при нажатии на название датчика открыть другую форму с данными этого датчика
существует запрос, в результате которого высвечивается список датчиков (Снимок1) требуется при нажатии на название датчика (Снимок1,...

Параметры датчика LG, Таблица датчика LG 4781JR2003B
Прошу таблицу зависимостей датчика температуры (сенсор) LG 4781JR2003B https://www.cyberforum.ru/savedimages/2016/06/17/5692374699.jpg

Счетчик срабатываний
Привет народ, подскажи пожалуйста. Нужно 12 вольтовое устройство, которое будет срабатывать при 3,5 и 8 разе подачи напряжение. Есть ли...

8
23.04.2021, 10:40

Не по теме:

Цитата Сообщение от Mantukoryshka Посмотреть сообщение
листинг программы прилагается
Только вы исходный код приложить забыли

0
4041 / 2653 / 582
Регистрация: 11.09.2009
Сообщений: 9,473
23.04.2021, 15:22

Не по теме:

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
исходный код приложить забыли
Мимо кассы. Листинг содержит исходный код полностью.



Цитата Сообщение от Mantukoryshka Посмотреть сообщение
а что будет если...
Лучше спросите себя, куда дальше пойдёт основная программа (с адреса 100h) после вызова CALL P.

А на вопрос "что будет если удалить блок инициализации?" ответ простой. В общем случае, в инициализируемых там переменных будут случайные числа. Соответственно возможен любой из вариантов "поведения" программы с такими начальными установками.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
23.04.2021, 15:32
Цитата Сообщение от i8085 Посмотреть сообщение
Листинг содержит исходный код полностью.
Вот только его не так-то просто скопировать в редактор. Да и в исходном коде используются именованные константы и комментарии, а не магические числа.
То есть по дампу ТСа может и можно восстановить исходный код, но напрямую он им не является.
0
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 16
25.04.2021, 10:05  [ТС]
ну а все же, как тогда датчик будет фиксировать замкнут или разомкнут контакт?
0
4041 / 2653 / 582
Регистрация: 11.09.2009
Сообщений: 9,473
25.04.2021, 12:21
Цитата Сообщение от Mantukoryshka Посмотреть сообщение
если удалить блок инициализации? как тогда датчик будет фиксировать замкнут или разомкнут контакт?
Да в общем-то так же. Начиная со второго срабатывания датчика - нормально будет фиксировать. А с первым срабатыванием один хрен та же неопределённость будет. Состояние датчика и момент первого срабатывания относительно момента включения питания всё равно же не определёны.

Цитата Сообщение от Mantukoryshka Посмотреть сообщение
как в общем тогда будет работать программа?
Ну, так как не будет начальной инициализации счётчика числа срабатываний, то как минимум этот подсчёт будет "от фонаря". А так как вроде это главная функция программы, то программа станет абсолютно бесполезной, т. к. она будет начинать подсчёт количества импульсов с произвольного числа.
0
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 16
26.04.2021, 05:16  [ТС]
а как тогда будет выглядеть блок схема? или она весомо не изменится? не считая убранных блоков.
0
4041 / 2653 / 582
Регистрация: 11.09.2009
Сообщений: 9,473
26.04.2021, 06:11
Хорошо будет выглядеть. Посвежевшей и отдохнувшей.

Не по теме:

Блиннн... Чувствую себя идиотом, читающим лекцию в трубу от унитаза...

0
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 16
26.04.2021, 06:40  [ТС]
очень остроумно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2021, 06:40
Помогаю со студенческими работами здесь

Счетчик срабатываний предиката.
Здравствуйте. Суть моего вопроса такова: Есть предикат: template <typename type, class b> class something { ...

Реализация вычисления числа Пи с использованием датчика случайных чисел
Используя генератор случайных чисел, придумайте и реализуйте способ экспериментального вычисления числа pi. Тут только методом Монте...

С помощью датчика случайных чисел получить натуральные числа m и n, не превосходящие 20
С помощью датчика случайных чисел получить натуральные числа m и n, не превосходящие 20, n целых чисел, лежащих в диапазоне от a до b...

Зависимость работы таймера от количества срабатываний.
Здравствуйте! Помогите мне, пожалуйста, настроить таймер! Я случайно раздобыл код замечательного таймера. Если нажать на кнопку...

Модель механического цеха
Помогите решить задачу) На карусельный станок механического цеха поступают на обработку два типа деталей судовой трубопроводной...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru