7-ми сегментный (8-ми разрядный) Индикатор и AT89C51, Очень Прошу Помочь!.. Приветствую Вас!!!...
Не Могу Найти Ответ (Гуглил, Искал по Форуму), Собрал Схемку, Написал Программу...
+--------------------------------------------------------------------------------+
•
Дано.....: Есть МК (AT89C51) декодеры (DD1(a,b,c...,g), DD2(1,2,3..8)) и 7-ми сегментный Индикатор (8-ми разрядный), Записываются Цифры в Разные Разряды...
•
Проблема.: В Следующий Разряд Записывается Цифра (Двоично-десятичным способом) Из Предыдущего Разряда Исчезает Цифра, Подскажите Пожалуйста Почему?
•
Цель.....: 7-ми сегментный индикатор отображает количество нажатий на кнопку...
+--------------------------------------------------------------------------------+
По Идее Нужно на Декодер DD1 Подать Нужную Цифру (Например #0001B, #0010B, n...), a на Декодер DD2, тож подать цифру, чтобы Записать в Нужный Разряд... Потом Снова на DD1 и + DD2, и т.д. Но Не Получается...
Ps0: Если Написано Сумбурно, Попытаюсь Объяснить по Другому...
Ps1: Подскажите Пожалуйста, Уже не Один Десяток Часов Потратил на Решение...
Ps2: Без Декодеров тоже Пробовал, Предыдущий Разряд Гаситься, Новый Загорается...
Ps3: Схему и Исходник Прилагаю...
Исходник.:
-----------------------------------------------
P20 EQU 0A0H
P30 EQU 0B0H
BUTTON EQU 097H ;0B7H
;
ORG 0
JMP START
ORG 100H
;
START:
;
CLR C
MOV C,BUTTON ;0B7H
JNC WAIT1
JMP START
;
WAIT1:
;
CLR C
MOV C,BUTTON ;0B7H
JC MENOS
LJMP WAIT1
;
MENOS:
;
INC R1
CLR C
MOV A,R1
SUBB A,#1D
JZ SIM1
CLR C
MOV A,R1
SUBB A,#2D
JZ SIM2
CLR C
MOV A,R1
SUBB A,#3D
JZ SIM3
CLR C
MOV A,R1
SUBB A,#4D
JZ SIM4
CLR C
MOV A,R1
SUBB A,#5D
JZ SIM5
CLR C
MOV A,R1
SUBB A,#6D
JZ SIM6
CLR C
MOV A,R1
SUBB A,#7D
JZ SIM7
CLR C
MOV A,R1
SUBB A,#8D
JZ SIM8
CLR C
MOV A,R1
SUBB A,#9D
JZ SIM9
CLR C
MOV A,R1
SUBB A,#10D
JZ SIM0
RET
;
SIM1:
MOV P20,#001B
MOV P30,#000B
RET
SIM2:
MOV P20,#010B
MOV P30,#010B
RET
SIM3:
MOV P20,#011B
MOV P30,#010B
RET
SIM4:
MOV P20,#100B
MOV P30,#010B
RET
SIM5:
MOV P20,#101B
MOV P30,#011B
RET
SIM6:
MOV P20,#110B
MOV P30,#011B
RET
SIM7:
MOV P20,#111B
MOV P30,#001B
RET
SIM8:
MOV P20,#1000B
MOV P30,#010B
RET
SIM9:
MOV P20,#1001B
RET
SIM0:
MOV P20,#0B
MOV R1,#0
RET
;
END