Свежие обсуждения
Микроконтроллеры

PIC12F629 Нужна помощь с прошивкой

1 2

Всем привет. Нужна помощь в дописании программы для PIC12F629, это моя первая программа
которую я пишу. Выводы контроллера: GP5, GP4 - работают на вход, GP0, GP1, GP2 - работают
на выход. Начало программы начинается при включении тумблера "ПУСК", далее на GP0 и GP2
Должно появиться единичный уровень втечении 10 секунд, далее выполняеться условие
если на входе GP4 есть высокий уровень (1) то отключить выход GP2 и включить GP1 если
нет завершении программы до следующего отключения и включения "ПУСК", далее
через 10 секунд отключить GP0, программа должна постоянно контролировать наличие единичного
уровня на GP4. Можно конечно вообще убрать тумблер и поставить по питанию.
Вот что я нацарапал сам, голова идёт кругом, подскажите пожалуйста как дейсвовать
дальше.
;***********************************************************************************************
; PIC12629
;===============================================================================================
LIST p=12f629 ; Установка типа микроконтроллера.
; Конфигурацию буду устанавливать при прошивки
;===============================================================================================
; Определение положения регистров специального назначения.
;===============================================================================================
Status equ 03h ; Регистр выбора банка.
GPIO equ 05h ; Регистр портов ввода/вывода
TRISIO equ 05h ; Регистр направление работы каналов GRIO
IntCon equ 8bh ; Регистр прерывания
;===============================================================================================
; Определение и назначения регистров общего назначения.
;=====================================================
CYCL equ 20h ;
Sec equ 21h
;=====================================================
F equ 1 ;
org 0 ; Начать выполнение программы с 0
goto Start ; Переход в ПП Start
;=====================================================
; ТЕКСТ ПРОГРАМЫ
;=====================================================
Start clrf IntCon ; Запрещение всех прерываний
bsf Status,5
;======================================================
; Проверка включения кнопки на GP5
;======================================================
btfss GPIO,5 ; Если не включена то переход в ПП START
goto Start
;======================================================
; Формирование на выходе GP0 и GP2 единичного уровня
;======================================================
bsf GPIO,0 ; Установка на выходе защёлки GP0 единицы
bsf GPIO,2 ; Установка на выходе защёлки GP2 единицы
;======================================================
; Проверка включения (единицы) на входе GP4
;======================================================
btfss GPIO,4 ; Если не включена то переход в ПП START
goto Start
;======================================================
; Формирование на выходе GP2 нулевого уровня
;======================================================
bcf GPIO,2 ; Установка на выходе GP2 нуля
;======================================================
; Формирование на выходе GP1 единичного уровня
;======================================================
bsf GPIO,1 ; Установка на выходе защёлки GP1 единицы
;======================================================
;?????
;======================================================
end

 

Не получаеться прикрепить схемку и проект в MBLAB

 

Это что, курсовик или ...
Не совсем понятно что подключается к GP5 и зачем вообще нужен этот вход. Кнопка "Пуск" куда подключена (и зачем нужен тумблер, а не кнопка). Такого рода программу лучше писать с прерываниями: основной цикл - отслеживание наличия аппаратного прерывания на входе GP4 (изменение входного уровня). Всё остальное поместить в обработчик прерывания. Чтобы голова не шла кругом, накидайте простенький алгоритм (последовательность действий программы), тогда многое прояснится.
Схемку киньте на радикал, а сюда дайте ссылку.

 

Для рисования алгоритмов категорически рекомендую yEd
Бесплатная и с гибкой настройкой авторасположения расположения. Когда попробовал - по другому стал относиться к алгоритмас теперь везде где можно сначала рисую, потом пишу

 

Далеко не курсовик, техникум и институт давно закончил.
http://s013.radikal.ru/i323/1011/36/0e978addd4f3.jpg
GP5 можно и исключить, а выключатель перенести на питание. Это первая моя програмка, хотелось бы знать правильным путём иду?

 

rafaellm: GP5 можно и исключить, а выключатель перенести на питание
Так и нужно сделать.
Честно говоря, править чью-то программу и при этом объяснять что не так, дело достаточно муторное и неблагодарное, занимающее кучу времени и нервов. Потому что сколько программистов, столько и способов реализации алгоритмов той или иной задачи.
Поэтому постарайтесь найти все свои ошибки самостоятельно, разбирая чужие программы и вынося из этого разбора крупицы знаний. Советую раскопать в архивах этой конфы темы "ликбез по программированию PIC", а также найти в сети и установить программу "PIC simulator IDE". Эти две вещи значительно помогут Вам в практике написания программ на АСМе. MPLAB IDE тоже можно использовать, но он менее нагляден на первом этапе, чем вышеуказанный симулятор.
По себе знаю, что если сам не допёр до чего-то, никакие подсказки не помогут. Да, еще обязательно имейте под рукой даташит на 12F629, т.к. там практически всё есть, в том числе примеры на асме.

PS: а почему напряжение питания контроллера выбрано таким низким? Если для питания от батарей, то не обойтись без sleep-режима, иначе батареек хватит на несколько дней, а это еще усложнит программу...
PPS: можно заказать написание готовой программы по вашему ТЗ, но это уже совсем другая история и к данному вопросу отношения не имеет...

 

Используйте симулятор "Proteus", не нужно будет заводить такие темы с предложеним проверить программу. Лучше задавать конкретный вопрос по непонятному месту.
В строке с вопросительными знаками - там действительно так? Нужно всё же в этом месте программу зациклить, отправив на начало. Иначе для повторного запуска придётся откл/вкл питание.
Прерывание для такой программы избыточно, контроллеру просто нечего делать во время ожидания прерывания.

 

PIC simulator IDE, даташит на 12F629 всё это есть не хватает опыта. Питание действительно будет от батареек и для повторного запуска необходимо откл/вкл питание (так и надо). А в остальном буду разбираться.
Кто хотел помочь всем спасибо.

 

prorad:
Используйте симулятор "Proteus"
Самое удобное, это - связка MPLAB-Proteus.

 

rfc: Для рисования алгоритмов категорически рекомендую yEd

Блин респект и низкий поклон за сцылочку. Искал подобно рода специализированный софт, но было все не то. До этого кидал алгоритмы на бумаге, что неудобно и громоздко, а тут прямо сказка.