Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/46: Рейтинг темы: голосов - 46, средняя оценка - 4.85
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75

Бегущая строка на PIC16F877

14.04.2011, 18:06. Показов 8671. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Прошу помочь в написании команд для PIC16F877.
Нудно сделать бегущую строку из светодиодов, схему прилагаю…
http://zsv08.at.ua/shema.jpg

Добавлено через 5 минут
И если не трудно подпрограмма задержки 250 мс.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2011, 18:06
Ответы с готовыми решениями:

PIC16F877. Бегущая строка
у меня задача... нужно сделать бегущую строку диодов, используя PIC16F877...я это сделал (программу в MPLab и собрал схему в Протеусе)......

8051. Бегущая строка
Здравствуйте. Подскажите логику работы реализации бегущей строки на МК8051, вывод на семисегментных индикаторах, язык программы С++. Моя...

Бегущая строка на PIC18F4550
Помогите написать код ASM "реализация бегущей строки на PIC18F4550"

16
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.04.2011, 19:00
Язык программирования какой или без разницы?
Поощрение будет или за спасибо?
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
14.04.2011, 20:54  [ТС]
Какой язык? - ну так assembler...
Поощрение… Хммм. Хотелось бы конечно за спасибо)
Но если все хорошо работать будет, то называйте цену.

Добавлено через 54 минуты
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
list p=16f877
#include <p16F84A.inc>  
COUNT EQU 0Ch
    ORG 0
START: BSF STATUS, RP0
    CLRF TRISB
    BCF STATUS,RP0
RUN: BSF PORTB,0
    CALL DELAY
    BCF PORTB,1
    CALL DELAY
    BSF PORTB,2
    CALL DELAY
    BCF PORTB,0
    CALL DELAY
    BSF PORTB,1
    CALL DELAY
    BCF PORTB,2
    CALL DELAY
    GOTO RUN
DELAY: MOVLW 50
    MOVWF COUNT
LOOP: DECFSZ COUNT,F
    GOTO LOOP
    RETURN
END
Вот написал для 3х диодов, вроде работает, только задержка маленькая. И код громоздкий.
Может, кто подскажет как оптимизировать и сделать задержку 250 мс.?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.04.2011, 21:15
Цитата Сообщение от ПавелИтель Посмотреть сообщение
Какой язык? - ну так assembler
Программы для PIC можно писать не только на ассемблере, но и на высокоуровневых языках, таких как Си, паскаль, бейсик и др. Поэтому и спрашиваю про язык программирования.

Цитата Сообщение от ПавелИтель Посмотреть сообщение
Может, кто подскажет как оптимизировать
Используйте сдвиг - инструкцию rrf или rlf в зависимости в какую сторону должна "бежать" строка. Тогда код будет намного компактнее.

Цитата Сообщение от ПавелИтель Посмотреть сообщение
сделать задержку 250 мс.
Скачайте программу.
В ней указывайте частоту тактового генератора и время задержки и программа создает ассемблерный код подпрограммы задержки.
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
14.04.2011, 21:16
а), если пик 877, то и инклюд делай для 877-го
б). это громоздкий код?
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
14.04.2011, 21:27  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
б). это громоздкий код?
Ну для 8 светодиодов получится громоздкий... с моей точки зрения.
А про инклюде, большое спс!
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
14.04.2011, 21:35
не, это далеко не громоздкий код...

а про бегущую строку
выделить ячейку под номер такта.
в памяти программ сделать таблицу кодов, выводимых на порт с лампочками
организовать работу прерывания по таймеру
по прерыванию увеличивать счетчик номера такта
потом, используя этот счетчик как часть адреса чтения из памяти программ, брать из сформированной таблицы код и ложить его в порт с лампочками.

сложно?
зато, организовав в памяти несколько таблиц, можно получить разные эфекты, например, бежит одиночный огонь, бежит несколько огней, бежит тень и т.д., насколько хватит фантазии.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.04.2011, 21:48
Цитата Сообщение от Dmitry Посмотреть сообщение
не, это далеко не громоздкий код...
Для 8 светиков, он будет намного больше!

Цитата Сообщение от Dmitry Посмотреть сообщение
в памяти программ сделать таблицу кодов, выводимых на порт с лампочками
Быдлокодерский способ - с помощью сдвига можно получить тоже самое, но более элегантно.


Цитата Сообщение от Dmitry Посмотреть сообщение
организовать работу прерывания по таймеру
по прерыванию увеличивать счетчик номера такта
потом, используя этот счетчик как часть адреса чтения из памяти программ, брать из сформированной таблицы код и ложить его в порт с лампочками.
А это то еще зачем?
Все можно сделать в основном цикле программы без использования прерываний.


Цитата Сообщение от Dmitry Посмотреть сообщение
сложно?
зато, организовав в памяти несколько таблиц, можно получить разные эфекты, например, бежит одиночный огонь, бежит несколько огней, бежит тень и т.д., насколько хватит фантазии.
При помощи сдвигов можно сделать тоже самое.
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
14.04.2011, 23:05  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
...выделить ячейку под номер такта.
в памяти программ сделать таблицу кодов, выводимых на порт с лампочками
организовать работу прерывания по таймеру
по прерыванию увеличивать счетчик номера такта
потом, используя этот счетчик как часть адреса чтения из памяти программ, брать из сформированной таблицы код и ложить его в порт с лампочками...
Ого... Не такое я не смогу... Буду что-то проще делать.

Добавлено через 1 час 2 минуты
Большое спасибо за совтинку с расчетом задержки, но код она выдает «палевный»….))) Вот сам разработал. Вроде все хорошо!)
Остается только с RRF разобраться…

Assembler
1
2
3
4
5
6
7
DELAY: MOVLW 62
    MOVWF COUNT
LOOP:   NOP
    DECFSZ COUNT,F
    GOTO LOOP
    NOP
    RETURN
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.04.2011, 23:14
Цитата Сообщение от ПавелИтель Посмотреть сообщение
но код она выдает «палевный»
В каком плане?
Сам ее иногда использую - ни разу не подвела.
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
14.04.2011, 23:42  [ТС]
Не, дело не в этом, просто это для универа, видно что не в ручную расчет делали…

Добавлено через 8 минут
Ребята, помогите еще со светодиодами.
Нужно что бы 2 горели и бегали в строке из 8-ми.
Что-то типо этого? –
Assembler
1
2
3
MOVLW ‘00000011’
RRF W1,0
MOVWF PORTB
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
15.04.2011, 00:06
Вроде так, но я давно не работал с ассемблером и может чего напутал.
Code
1
2
3
4
5
6
7
8
9
10
11
12
           Movlw       b'00000011'
           Movwf       W1
m1:        Movf        W1,W
           Movwf       PORTB
           Call        pause
           Rrf         W1,F
           Btfsc       STATUS,C
           Goto        m2
           Bcf         W1,7
           Goto        m1
m2:        Bsf         W1,7
           Goto        m1
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
15.04.2011, 00:16  [ТС]
Нет, еррор((((
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
15.04.2011, 00:20
Цитата Сообщение от ПавелИтель Посмотреть сообщение
Нет, еррор((((
И что не так?
Ошибка при компиляции или программа не пашет?
0
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
15.04.2011, 02:28  [ТС]
Ошибка при компиляции.
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
list p=16f877
#include <p16F877.inc>  
COUNT EQU 0Ch
    ORG 0
START: BSF STATUS, RP0
    CLRF TRISB
    BCF STATUS,RP0
RUN: MOVLW B'00000011'
    MOVWF W1
M1: MOVF W1,W
    MOVWF PORTB
    CALL PAUSE
    RRF W1,F
    BTFSC STATUS,C
    GOTO M2
    BCF W1,7
    GOTO M1
M2: BSF W1,7
    GOTO M1
    GOTO RUN
DELAY: MOVLW 62
    MOVWF COUNT
LOOP:   NOP
    DECFSZ COUNT,F
    GOTO LOOP
    NOP
    RETURN
END
Добавлено через 53 минуты
Вот, нашел интересную тему по PIC-у и светодиодам... http://radiopirat.h11.ru/pic/pic011.htm
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
15.04.2011, 11:51

Не по теме:

Неужели в первый раз компилируешь программу и так сложно было обнаружить очевидные, даже не ошибки, а недочеты при добавлении моего куска программы с твой каркас?
Ведь нужно было всего лишь добавить переменную, присвоив ей адрес директивой Equ и изменить имя метки вызываемой подпрограммы задержки и все бы скомпилировалось без ошибок.



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
           List        p=16f877
           #Include    <p16F877.inc>
COUNT      Equ         0Ch
W1         Equ         0dh
           Org 0
START:     Bsf         STATUS, RP0
           Clrf        TRISB
           Bcf         STATUS,RP0
RUN:       Movlw       B'00000011'
           Movwf       W1
M1:        Movf        W1,W
           Movwf       PORTB
           Call        DELAY
           Rrf         W1,F
           Btfsc       STATUS,C
           Goto        M2
           Bcf         W1,7
           Goto        M1
M2:        Bsf         W1,7
           Goto        M1
;           Goto        RUN
 
DELAY:     Movlw       62
           Movwf       COUNT
LOOP:      Nop
           Decfsz      COUNT,F
           Goto        LOOP
           Nop
           Return
           End
Вложения
Тип файла: rar PIC16F877.rar (5.7 Кб, 69 просмотров)
1
 Аватар для ПавелИтель
9 / 9 / 3
Регистрация: 21.02.2010
Сообщений: 75
15.04.2011, 17:36  [ТС]
Цитата Сообщение от PB Посмотреть сообщение
Неужели в первый раз компилируешь программу...
Не, 2й
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2011, 17:36
Помогаю со студенческими работами здесь

МК-51. Бегущая строка на семисегментниках
Всем привет! вот возникла такая проблема, нужно модернизировать код програми бегущие строки на семисегментном индикаторе, а именно как то...

Бегущая строка на PIC16
Я только начинаю изучать микроконтроллеры, но курсовая не дремлет, поэтому прощу помощи. Как мне сделать вывод последовательности цифр в...

Задача. Бегущая строка на PIC(16f877)
Доброго времени суток, уважаемые форумчане! Есть задача, создать бегущую строку с основными требованиями: 1. Индикация динамическая 2....

бегущая строка
Мне тут под руку подвернулся модуль 8*8*4 на MAX7219 и я решил вывести на него показания разного рода датчиков в виде бегущей строки....

Бегущая строка
подскажите на словах как реализовать бегущую строку на arduino которая выводит некий текст по времени (сейчас вторая пара через час сейчас...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru