Форум РадиоКот https://radiokot.ru/forum/ |
|
Не работает простейший код. Прошу помощи. https://radiokot.ru/forum/viewtopic.php?f=58&t=194996 |
Страница 1 из 1 |
Автор: | Ariadna-on-Line [ Сб сен 28, 2024 20:24:32 ] | ||
Заголовок сообщения: | Не работает простейший код. Прошу помощи. | ||
Простейший код не работает. Как заклинило. Вместо переключения по кнопкам имеем генерацию. Спойлер' Show button press on LEDDevice = 12F683 Declare Xtal = 4 Declare All_Digital = True ' все линии - цифровые PortB_Pullups = On ' включить подтяжки TRISB = %11111100 ' биты 0,1 -выходы, остальные - входы Loop: If PORTB.5 = 0 Then ' если кнопка ON прижата к земле High PORTB.0 ' зажжем Зеленый Low PORTB.1 ' погасим Rрасный EndIf DelayMS 100 If PORTB.4 = 0 Then ' если кнопка OFF прижата к земле Low PORTB.0 ' зажжем Красный High PORTB.1 ' погасим Зеленый EndIf DelayMS 100 GoTo Loop ' Do it forever
|
Автор: | Martian [ Сб сен 28, 2024 20:34:03 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся. А в этом языке сравнение одним знаком равно? И без скобок в условии? А то смотрю, как-то странно: вверху присваивание такое же... |
Автор: | Ariadna-on-Line [ Сб сен 28, 2024 21:12:21 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся. А в этом языке сравнение одним знаком равно? И без скобок в условии? А то смотрю, как-то странно: вверху присваивание такое же... Вы же на картинке видите что на обоих входах высокий уровень, и переключаться вообще ничего не должно. Должно просто сохраняться предыдущее состояние. |
Автор: | Martian [ Сб сен 28, 2024 21:53:04 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
вообще-то не вижу. состояние регистров не отображено. да и зачем картинка, я код смотрю. и задал по нему вопрос. даже два. |
Автор: | koms48 [ Вс сен 29, 2024 11:35:53 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Биты конфигурации криво стоят. Device = 12F683 @ CONFIG_REQ = 0 ; Override Compiler's configuration settings Asm __Config 0x31C4 EndAsm Declare Xtal = 4 Declare All_Digital = On ' ??? ????? - ???????? Declare PortB_Pullups = On ' ???????? ???????? TRISIO = %11111100 ' ???? 0,1 -??????, ????????? - ????? Loop: If PORTB.5 = 0 Then ' ???? ?????? ON ??????? ? ????? GPIO.0 =1' ?????? ??????? GPIO.1 =0' ??????? R?????? EndIf DelayMS 100 If GPIO.4 = 0 Then ' ???? ?????? OFF ??????? ? ????? GPIO.0=0 ' ?????? ??????? GPIO.1=1 ' ??????? ??????? EndIf DelayMS 100 GoTo Loop |
Автор: | Martian [ Вс сен 29, 2024 13:39:41 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.? |
Автор: | Ariadna-on-Line [ Вс сен 29, 2024 16:05:02 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Биты конфигурации криво стоят... Верно. Заработало. Спасибо, дорогой !!!. В жизни бы не догадался в чем собака зарыта. Буду разбираться в чем тут логика. С уважением.ПС. Попытка выставить в Протеусе слово конфигурации 0x31C4, если оно не выставлено в самом хекс-файле - к успеху симуляции не приводит. |
Автор: | Martian [ Вс сен 29, 2024 16:14:35 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
В жизни бы не догадался Вот поэтому нужно параллельно пользоваться (учиться пользоваться) отладчиком. Тогда не надо догадываться: раз Вы подали какой-то уровень на вход, а он не отрабатывается, то смотрите в отладчике состояние регистров портов и тут же понимаете, что они не такие, как должны. Более того: вручную выставив в отладчике правильное состояние регистров, Вы получаете приемлемую работу программы и сразу понимаете, что необходимо внести в код.В общем, отладчик - это невероятно удобный инструмент. Добавлено after 1 minute 29 seconds: P.S. И всё-таки разумнее использовать более популярные языки программирования - сообщество больше, книжек и примеров больше, инструментов больше... |
Автор: | Ariadna-on-Line [ Вс сен 29, 2024 16:49:36 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.? TRISIO и GPIO - только у PIC12Fxxx. Он единственный. И может быть без проблем обозван как PORTB, TRISB и тд.
|
Автор: | Martian [ Вс сен 29, 2024 16:55:38 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Ага, ясно, спасибо. Я предполагал такое... хотя, это ужасно - переносимость кода на другие мк нехило страдает. Но тогда почему не заработал Ваш код, если это эквивалентно? Код тогда одинаковый становится. |
Автор: | 24Natan [ Вс сен 29, 2024 17:14:53 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
koms48 указал на config bits ![]() (получил подбором 31С4, по умолчанию - 3FFF) |
Автор: | Martian [ Вс сен 29, 2024 17:20:22 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
А, точно... Asm __Config 0x31C4 EndAsm |
Автор: | Ariadna-on-Line [ Вс сен 29, 2024 19:16:52 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
По умолчанию - 0x3FF4. То бишь внутренний такт 4 МГц. ПС. В моем случае лучше - 0x31E4 - имеем рабочий пин Reset. |
Автор: | Базилюк [ Вс сен 29, 2024 20:29:39 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Интересно, это на каком языке? Чето типо Паскаля или Бейсика? |
Автор: | Martian [ Вс сен 29, 2024 20:35:38 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Proton PicBasic |
Автор: | Ariadna-on-Line [ Пн сен 30, 2024 11:17:43 ] |
Заголовок сообщения: | Re: Не работает простейший код. Прошу помощи. |
Всё оказалось намного веселее : Почему-то штатная Бейсиковская конструкция (используется во всех штатных примерах компилятора) - Device = 12F683 ' PIC12F675 и тд. Declare Xtal = 4 ' варианты - Declare Xtal 4; Xtal = 4 не срабатывает, а - @ CONFIG_REQ = 0 ; Override Compiler's configuration settings Asm __Config 0x3FF4 ' Что то же самое !!! EndAsm срабатывает, и работает как требуется. ПС. Пользовался раньше каким-то Proton-ом на другом компе - и горя не знал. Потому и версии не запомнил. А тут пришлось устанавливать - и такой заморок. Короче - проблема решена. Всем спасибо. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |