|
|
|
|
Всем привет. Нужна помощь в дописании программы для 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 Блин респект и низкий поклон за сцылочку. Искал подобно рода специализированный софт, но было все не то. До этого кидал алгоритмы на бумаге, что неудобно и громоздко, а тут прямо сказка.
|
|
|
|
|