3 / 2 / 1
Регистрация: 28.03.2020
Сообщений: 92

[mcs-51] Подсчитать нажатия кнопки SW15

11.04.2021, 15:09. Показов 2099. Ответов 3

Студворк — интернет-сервис помощи студентам
подсчитать нажатия кнопки SW15 от 0 до 9999, и вывести на статический индикатор ( 0xA000 -2 левых разряда, 0xB000-2 правых)
У меня получилось сделать программу, которая считает от 0 до 255.
Как увеличить количество до 9999?

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
Name Lab_9_4
N EQU 1
Const_TH0 EQU high(65536 - 6144)
Const_TL0 EQU low(65536 - 6144)
CSEG AT 0x00
  MOV R0, #0x7F
  CLR A
L1:
  MOV @R0, A
  DJNZ R0, L1
  MOV TMOD, #0x01
  SETB TR0
  CLR  A
 
 
L3:
  JNB IE0, L3
L4:
  MOV R6, #0x01
  CALL Delay10
  JNB IE0, L4
  INC  A
  MOV  R3,  A
  
  MOV B, #0x64
  DIV AB
  MOV 0x40, A
  MOV A, B
  MOV B, #0x0A
  DIV AB
  MOV R0, B
  MOV B, #0x10
  MUL AB
  ADD A, R0
  MOV 0x41, A
  MOV DPTR, #0xB000
  MOVX @DPTR, A
  MOV A, 0x40
  MOV DPTR, #0xA000
  MOVX @DPTR, A
  
  MOV  A,  R3
  
  
L5:
  JB IE0, L5
  MOV R6, #0x01
L6:
  CALL Delay10
  JB IE0, L6
  JMP L3
Delay10:
  MOV R6, #N
  
LZ2:
  MOV TH0, #Const_TH0
  MOV TL0, #Const_TL0
LZ1:
  JNB TF0, LZ1
  CLR TF0
  DJNZ R6, LZ2
  RET
  END
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2021, 15:09
Ответы с готовыми решениями:

[mcs-51] Инкремент счетчика нажатий кнопки SW15, и декремент счетчика при нажатии кнопки SW16
Реализовать программу, которая при нажатии кнопки SW15 добавляет их каждое нажатие ((Lich) = (Lich) +1), а при нажатии кнопки SW16...

Отлов нажатия кнопки submit и блокировка последующего нажатия
Привет всем! Нужен код, который способствует блокировке нажатия кнопки после одного нажатия на нее. Спасибо. Добавлено через 54...

(MCS-51) Подсчитать количество пар единиц, стоящих рядом в 16-разрядном числе
Помогите пожалуйста с этой задачкой. Язык не совсем ассемблер, а система команд микроконтроллеров MCS-51, но думаю особой разницы нет.

3
Модератор
1238 / 670 / 290
Регистрация: 10.11.2019
Сообщений: 1,394
11.04.2021, 17:37
Надо хранить счетчик в двоично-десятичном коде.
Используйте примерно такие подпрограммы:

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
; обнулить счетчик
cntzero:mov R6,#0 ; старший байт
    mov R7,#0 ; младший байт
    ret
 
; прибавить к счетчику 1
cntadd1:mov a,R7 ; младший байт
    add a,#1
    da a     ; десятичная коррекция
    mov R7,a
 
    mov a,R6 ; старший байт
    addc a,#0
    da a     ; десятичная коррекция
    mov R6,a
    ret
 
; показать счетчик на дисплее
cntshow: mov dptr,#0B000h
    mov a,R6  ; старший байт
    movx @dptr,a
    mov dptr,#0A000h
    mov a,R7 ; младший байт
    movx @dptr,a
    ret
0
3 / 2 / 1
Регистрация: 28.03.2020
Сообщений: 92
11.04.2021, 18:14  [ТС]
qbfan, 2 подпрограмма после 99 не записывает 1 в R6, и начинает опять считать до 100 в R7
0
Модератор
1238 / 670 / 290
Регистрация: 10.11.2019
Сообщений: 1,394
11.04.2021, 19:33
Лучший ответ Сообщение было отмечено ivan2020ua как решение

Решение

Проверял в MCStudio, всё работает нормально. Я сталкивался с тем, что в некоторых эмуляторах коианда
da a реализована неверно. Проверенный код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    org 0
start:  call cntzero
m:      call cntadd1
    jmp m
 
cntzero:mov R6,#0
    mov R7,#0
    ret
 
 
cntadd1:mov a,R7
    add a,#1
    da a
    mov R7,a
 
    mov a,R6
    addc a,#0
    da a
    mov R6,a
    ret
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2021, 19:33
Помогаю со студенческими работами здесь

Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)
Пишу калькулятор. Есть несколько кнопок (Button) с цифрами и знаками. Для цифр имена кнопок: but_0, but_1, ... but_9 На все кнопки с...

После нажатия первой кнопки поле должно пропасть, после нажатия второй - появиться
Разместить на странице поле для ввода текста и 2 кнопки. После нажатия первой кнопки поле должно пропасть, после нажатия второй - появиться.

Есть инлайн кнопки “лайк”, “дизлайк” Телеграм бот. Как изменить значение кнопки после нажатия на неё?
Решил засунуть переменные quant1 и quant2 в строки кнопок. Но как их изменить по нажатию на кнопку не знаю. Смастерил вот такой код. Но по...

Не запускается комп: индикатор возле кнопки Пуск на системнике зажегся только во время нажатия кнопки. После - не горит.
Просьба к форумчанам помочь в решении проблеммы. Сегодня вдруг отрубился комп во время работы. Если быть точнее, то аудио выключилось, а на...

Создайте обработчик события нажатия кнопки мыши на форме (Click), который будет устанавливать все кнопки в активный режи
Доброго времени суток! Помогите сделать задачу пожалуйста я полный ноль! (с описанием если можно:cry:) Уточните условие задания,...


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

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

Новые блоги и статьи
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru