Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.05.2019, 15:21   #1
Dager
Новичок
 
Регистрация: 25.05.2019
Сообщений: 1
Репутация: 10
По умолчанию Программирование светодиодной матрицы в mcu 8051

Программа должна выводить цифру 7 на матричном инидкаторе 8х8 при замыкании ключа 7 на матричной клавиатуре (на скрине обозначена стрелкой), а при замыкании другого ключа ничего выводиться не должно. Вместо этого семерка выводится, когда ключи вообще не замкнуты. Подскажите, пожалуйста, в чем проблема, несколько часов уже пытаюсь настроить
Код:
COLUMN         EQU 01     ;Начальный номер стобца матрицы
ROW         EQU 0     ;начальный номер ряда матрицы
TABL         EQU 50h ; адрес таблицы скан-кода символа
org 0 ;начало основной программы
    mov     a, #COLUMN
    mov     b, #ROW
    mov     dptr,#TABL
    mov     r0, #0     ;установка счетчика столбцов
    
m1:     call     led     ; вызов подпрограммы определения скан-кода
    mov     p2, a     ;подключения одного столбца
    mov     p1, b     ;и всех рядов матрицы
    call     loop     ;задержка на 2,5 мс (частота миганий 50 ГЦ)
     rl a         ;следующий столбец
    inc r0         ;икримент счетчика  столбцов
    orl p1, #0ffh     ;гашение текущего столбца
    cjne r0, #8, m1 ;продолжать до конца столбцов матрицы
    mov r0, #0     ;начинается
    mov r1, #0     ; следующий
    jmp m1         ; цикл
    
led:     push acc    ;
    mov a, r1    ;
    movc a, @A+DPTR    ; 
    mov b, a    ;
    inc r1             ;увелич r1 на 1
    pop acc        ;Извлекает знач из  стэк в аккум
    ret        ;retun
    
loop:     MOV R2, #01h
    MOV R3, #01h
    DJNZ R3, $
    DJNZ R2, $-5
    ret
org 50h
db 11111111b ; 0 
db 11111111b ; 1 
db 11111101b ; 2 
db 11111101b ; 3 
db 11111101b ; A 
db 11101101b ; 4 
db 10000001b ; 5 
db 11101111b ; 6 
db 11111111b ; b  
end
Изображения
 
Dager вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программирование матрицы в Basic Мария Ильина Помощь студентам 2 24.09.2015 16:51
Программирование (Си): матрицы kotenkov_m Помощь студентам 0 15.06.2014 20:29
Матрицы и динамическое программирование. oleg61rus Помощь студентам 7 21.02.2011 16:33
Программирование на базе микроконтроллера Intel 8051 sers88 Assembler 3 06.05.2010 12:57


22:47.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.