Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 3
1

Динамическая индикация ATMega8535

31.03.2018, 10:27. Показов 1457. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо реализовать динамическую индикацию на 7 сегментном индикаторе.
Даны начальные условия
Количество разрядов: 6
Основание: 16ричное
Порт ввода: С
Таймер: Т0, переполнение
Время включения: 0,4 мс

Мною написанный код выглядит вот таким образом, но в итоге на индикации показывается вот такая ерунда

Динамическая индикация ATMega8535


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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
.include "m8535def.inc"
.def C = r21
.def D = r20
.cseg
.org 0
    rjmp reset
.org $009
    rjmp t0_ovrflw
 
reset:
    ldi r16,low(RAMEND)
    ldi r17,high(RAMEND)
    out sph,r17
    out spl,r16
    clr r16
    ser r17
    out DDRC,r16          ;порт С на вход
    out PORTC,r17
    out DDRB,r17          ;порт B на выход сегментов
    out PORTB,r16
    out DDRA,r17           ;порт А на выход индикаторов
    out PORTA,r16
    out TCCR0,r16       ;обнуление регистра управления Т0
    ldi r18,206
    out TCNT0,r18       ;задание начального значения счетчика
    ldi r17,0x03
    out TCCR0,r17
    ldi zh,2
    clr zl              ;задание адреса FLASH
    ldi r17,0x01
    out TIMSK,r17   ;прерывание по переполнению Т0
    ldi r16,0x01
    clr r19
    sei
 
main:
    rjmp main
 
t0_ovrflw:
    out TCNT0,r18   ;задание таймера начального значений
    out PORTA,r19   ;обнуление порта А
    rcall digit         ;вызов подррограммы вычисления 16-ой системы
    cpi r16,0x01        ;первый бит
    breq HG4            ;переход на метку HG4
    cpi r16,0x02        ;второй бит
    breq HG3             ;переход на метку HG3
 
HG3:
    mov zl,C        ;копирование в zl первого разряда 16ой системы
    rjmp met1
HG4:
    mov zl,D        ;копирование в zl нулевого разряда 16ой системы
 
met1:
    out PORTA,r16   ;выдача в порт A r16
    lpm                 ;копирование данных из FLASH в r0
    out PORTB,r0        ;вывод r0 в порт В
    lsl r16             ;побитовый сдвиг влево
    cpi r16,0x10        ;перйти по метке
    brne met2           ;если равно
    ldi r16,0x01        ;задание начального значения r16
 
met2:
    reti                ;выход из прерывания
digit:
    in r17, PINC        ;ввод двоичного кода с порта С
    andi r17,$3F        ;накладываем маску
    clr C           ;обнуление 1го разряда
    clr D               ;обнуление 0го разряда
 
CC:                     ;цикл расчета 1го разряда
    cpi r17,16
    brlo DD
    subi r17,16
    inc C
    rjmp CC
 
DD:                 ;расчет 0го разряда
    mov D,r17
    ret
 
.org $100
.db 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2018, 10:27
Ответы с готовыми решениями:

Динамическая индикация
AT90USB162. Нужно чтобы два средних разряда 4-разрядного индикатора мигали. Прерывания по идее пока...

Динамическая индикация
Здравствуйте! Хочу сделать динамическую индикацию на Atmega8 код примера взял отсюда : Динамическая...

DS18b20 и динамическая индикация
Всем привет.Написал программу управляющая компрессором,которая следит за работой,измеряет...

Динамическая индикация с транзисторами atmega16
Здравствуйте! возникла такая проблема: Схема состоит из мк atmega16, 4-разрядного сегментника с...

14
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
01.04.2018, 20:24 2
C
1
2
3
    breq HG3             ;переход на метку HG3
 
HG3:
А если не равно?
0
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 3
01.04.2018, 21:50  [ТС] 3
Assembler
1
2
3
4
cpi r16,0x02        ;второй бит
    breq HG3             ;переход на метку HG3
 
HG3:
Тогда может быть стоит сделать так?
Просто убрать эти строчки
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
02.04.2018, 18:44 4
Пробуйте. Никто не мешает.
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 6
30.04.2020, 04:08 5
Подскажите как сделать допустим чтоб "УРА" на всех четырех сегментах пробегала ? не до конца понимаю реализацию
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
30.04.2020, 04:22 6
Меняйте содержимое индикаторов так часто, насколько вы хотите чтобы быстро бежала строка.
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 6
30.04.2020, 05:13 7
pyzhman, можете помочь в реализации ? чтоб понять разом. А то уже со вчера парюсь , не могу понять до конца. Если есть возможность перейти на вацап , вк.. скажите как связаться с вами
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
30.04.2020, 07:06 8
В моей подписи все указано.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
30.04.2020, 08:49 9
Цитата Сообщение от Чикибомбан Посмотреть сообщение
Если есть возможность перейти на вацап , вк.. скажите как связаться с вами
нет
правила п 4.6
Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
1
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
30.04.2020, 10:42 10
Цитата Сообщение от moov_ Посмотреть сообщение
Assembler
1
2
3
4
5
6
7
8
t0_ovrflw:
 out TCNT0,r18 ;задание таймера начального значений
 out PORTA,r19 ;обнуление порта А
 rcall digit ;вызов подррограммы вычисления 16-ой системы
 cpi r16,0x01 ;первый бит
 breq HG4 ;переход на метку HG4
 cpi r16,0x02 ;второй бит
 breq HG3 ;переход на метку HG3
- не совсем понимаю строчку
Assembler
1
out TCNT0,r18
Она вначале обработчика прерывания и число(206) близко к 255, т.е. к прерываемому. Поэтому в прерывании нужно отключать прерывания cli и число записывать в конце обработчика. Также нужно будет включить прерывания sei после этой команды.
Алгоритм не сложный запоминаете 4 символа и динамической индикацией проходите по каждому поочередно.

Добавлено через 28 минут
Почему количество разрядов в задании 6, ведь на пульте-то 4?
Думаю, что бегущую строку Вам рановато еще делать(без обид).
Почему частота обновления такая высокая в задании 2500 (Гц)? Обычно, по-моему, меньше берут. 50-100 (Гц).

Добавлено через 15 минут
Цитата Сообщение от moov_ Посмотреть сообщение
Assembler
1
.org $100
- не маловато отступили, может надо побольше? Думаю да.
Assembler
1
.org $1F40
Добавлено через 2 минуты
Цитата Сообщение от moov_ Посмотреть сообщение
Assembler
1
andi r17,$3F ;накладываем маску
- Зачем маску накладывать? Разработайте алгоритм и переделайте все. Еще бы неплохо схему выхода на 2 7-сегментных индикатора. И Вам нужно написать дешифратор.
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
30.04.2020, 10:50 11
Цитата Сообщение от FFPowerMan Посмотреть сообщение
может надо побольше?
Программа заканчивается на #003F. Так что 100 даже с гаком.
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 6
30.04.2020, 11:21 12
когда подставляю свои значения , почему-то ошибка в нулем какая-то- warning: .cseg .db misalignment - padding zero byte

Добавлено через 2 минуты
в понял-понял , что это
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
30.04.2020, 11:21 13
Неплохо-бы в программе автора(1 сообщение) внизу поставить метку
Assembler
1
2
.org $100
Digits: .db 0xC0,...
И еще очень очень неплохо 7-сегментные числа привести в порядок так, что бы каждое число соответствовало себе. Я соответствия не увидел.
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 6
30.04.2020, 11:39 14
не повторится

Добавлено через 16 минут
Ну с числами все понятно , какое что выводит... почему-то программа не работает , а если и работает то не так. Просто на один порт выводит одно и тоже число с задержкой
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
30.04.2020, 16:45 15
Как вот этот массив, который в конце прочитать? При помощи команды LPM и регистра Z? Кто может пример привести?
0
30.04.2020, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2020, 16:45
Помогаю со студенческими работами здесь

ATmega8515. CVAVR. Не работает динамическая индикация
Изучаю динамическую индикация и таймеры. Предполагалось, вывести динамическую индикацию на два...

Динамическая индикация. Проблема с портом С (ATmega16)
Парни, ай нид хелп! Собрал схемку на atmega16 в tqfp корпусе, на порт С кинул сегменты от...

Четыре датчика DS18B20 и динамическая индикация
Здравствуйте! Есть следующая задача. Рожается контроллер нагревателя, который содержит в своем...

Как работает динамическая индикация + AVR
Не могу понять как работают схемы динамической индикации описанные здесь:...

Динамическая индикация на примере управления светодиодной матрицей 4x
нашел данную статью - http://microsin.net/programming/avr/led-matrix-dynamic-indication.html очень...

[Atmega128] Динамическая индикация на многоразрядном семисегментном индикаторе
Всем привет. Программирую на МК Atmega128. По заданию встрял на динамической индикации для 7-ми...

Динамическая индикация на два независимых индикатора на atmega8
Здравствуйте. Так как только учусь программировать с миру по нитки собрал программу. На два...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru