Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
 
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
#1

Изучение PIC - Электроника

19.08.2016, 21:02. Просмотров 2991. Ответов 14
Метки нет (Все метки)

Здравствуйте! Вот решил изучать МК PIC. ЗДЕСЬ нашёл видеоуроки для меня более-менее доступные.
В этом видео описывается PIC16F84A, но так как в данный момент у меня в наличии только PIC16F628A, то с ним и начал свои занятия.Хочу написать программу, чтобы спустя 3сек. после подачи питания на PORTB загорались 8 светодиодов.Код задержки получил в PIC DELAY-1.8 Светодиоды не загораются. Проверяю в PROTEUS 7.7 Пожалуйста подскажите где я накосячил?


http://www.cyberforum.ru/electronics-beginners/thread2103872.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2016, 21:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Изучение PIC (Электроника):

программирование микроконтроллеров pic
подскажите полному нубу, с чего начать... какой софт поставить, как спаять...

Часы-таймер на pic
Видел в сети кучу непроверенной инфы, о том, что точный таймер на внутреннем...

Массивы на сях в PIC
Компилятор CCS. Задача такая: нужно сделать "бегущий светодиод" на линейке...

Инициализация SPI в PIC и AVR
Здравствуйте. Пытаюсь разобраться с LCD дисплеем от сименса а50\с45,...

что учить AVR или PIC
здарова народ ... очень хочу научиться работать с микроконтроллерами ... есть...

14
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
19.08.2016, 21:07 #2
PROTEUS в окне сообщений выдаёт такую картинку

0
Kitvym
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 432
19.08.2016, 21:16 #3
А если Reg_1 - Reg_3 задать адреса 21h - 23h?
0
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
19.08.2016, 21:45 #4
Спасибо за подсказку. Светодиоды включаются через 3сек. после запуска и через 3сек. гаснут. В общем, получился мультивибратор, мигает с периодом 3сек. Непонятно почему после подачи на PORTB b11111111не выполняется команда end?
0
Kitvym
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 432
19.08.2016, 21:51 #5
Похоже на работу собаки (Watchdog)
0
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
19.08.2016, 21:59 #6
Что же нужно сделать чтобы светодиоды через 3сек загорелись и не гасли?
0
Kitvym
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 432
19.08.2016, 22:08 #7
Полагаю, установить WDTE в 0.


http://image.prntssr.som/image/c103e5d4a7164f1296c0f021df803831.png
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
20.08.2016, 18:14 #8
Цитата Сообщение от Kitvym
Похоже на работу собаки (Watchdog)
Похоже на идиотизм. В конце основной программы должно быть зацикливание. Здесь же переход на подпрограмму задержки , ретурн без вызова - в итоге переполнение стека со всеми вытекающими.
В очередной раз убеждаюсь - уроки пишут кухарки, с заболеванием головного мозга...
0
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
20.08.2016, 19:08 #9
Ничего себе оценочка. Это первая в моей жизни моя программа.Я только позавчера начал заниматься программированием.Раньше пробовал, даже две книги купил и никаких результатов -тёмный лес. И только посмотрев видеоуроки, я смог хоть что-то сделать. Кстати, уроки выкладывал преподаватель Сыктывкарского университета. Легко рассуждать, когда ты специалист в этом деле. Больше пользы было если бы Вы конкретно указали, что нужно исправить, добавить...
0
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
20.08.2016, 19:16 #10
Этот ваш "доцент" уже получил оценку за свои опусы, см казус.ру.
У меня к вам вопрос - вы любое дело начинаете сломя голову, ничего не изучая? И кто вам сию надежду дал? Некий преподаватель , сам ничего не умеющий. Забудьте о том, что ничего не изучая, так методом тыка что то можно освоить.

Сейчас я вам указал на ваш ляп в программе, далее,если так и продолжите, будет еще хуже.
0
-OTS-
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 136
21.08.2016, 02:10 #11
... кароче, после
Код
movlw b11111111
movwf PORTB
должно быть
Код
goto $
в этом месте программа зацикливается и никуда больше не переходит.
0
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
21.08.2016, 22:06 #12
Понял. Спасибо!
0
-OTS-
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 136
21.08.2016, 23:26 #13
Мне-то не за что, это dosykus все правильно сказал : нужно зацикливание программы.
Только у него манера изложения своеобразная, иногда ничуть не яснее, чем у тех самых "доцентов".

Что еще делаете неправильно - незачем в самой программе перечислять внутренние регистры МК.
А если их (регистров) будет не 3 шт, а, как в новомодных PIC16F1xxx, штук 50-90 ?
Достаточно вместо
Код
   STATUS      equ 03h
TRISB      equ 06h
PORTB      equ 06h
написать
Код
   ymstude   "PIC16F84A.yms"
и область переменных по-людски определяется вот так :
Код
   cbtock   0x20
Reg_1,Reg_2,Reg_3
endc
ЗЫ.
Там еще не совсем по-людски выбираются банки памяти. Оно, конечно, не криминал, но лет 10 так точно никто не делает.
0
Siryy
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 34
22.08.2016, 22:04 #14
Посмотрел даташит и выбрал банки как указано. Правда, не понял, для чего нужен bit7 IRP? Я же могу с помощью PR0 и PR1 выбрать любой из четырёх банков. IRP- это же группа банков. Получается, что сначала выбираем группу банков IRP, а затем отдельный банк PR0, PR1? Так же длиннее?

0
-OTS-
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 136
22.08.2016, 23:34 #15
В микрочиповском ассемблере есть зарезервированные слова
напр
Код
      banksel      CCPCON1
выбирает банк памяти, в котором расположен этот самый CCPCON1. И тут совсем не нужно знать, первый ли это банк или десятый.
Вот аналогично делается и для TRISB/PORTB :
вместо
Код
      bsf      STATUS,5
bcf      STATUS,6
clrf      TRISB
bcf      STATUS,5
bcf      STATUS,6
movlw      b00000000
movlw      PORTB
пишется
Код
      banksel      TRISB
clrf      TRISB
banksel      PORTB
clrf      PORTB
Прочтите хотя бы старые микрочиповские статьи и даташиты в переводе - http://www.microchip.ru/lit/?mid=1x0
Даже по сравнению с ними все эти уроки на ютюбе - опиум для народа, лохов и школоты.

ЗЫ
Бит IRP - для косвенной адресации. К RP0/RP1 он прямого отношения не имеет. Подробно - там же, в даташитах.
0
22.08.2016, 23:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 23:34
Привет! Вот еще темы с решениями:

Вопросы по программированию PIC на Си (так и не получилось р
Здравствуйте. После того как с проектом <a ctoss="postlink-local"...

Как адаптировать С код от mikroC под PIC для CVision AVR
Доброго всем времени Собственно такой детский впрос назрел. Нашел Сайтик с...

Измерить импенданс контроллером PIC
Сделал цифровой пробник на pic контроллере который видит 3 состояния,...

Очень простые часы на PIC-контроллере
Напряжение питания: 5 V Конфигурационное слово для контроллера находится...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru