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

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

14.04.2011, 18:06. Показов 8565. Ответов 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 / 829
Регистрация: 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 / 829
Регистрация: 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru