Не работает простейший код. Прошу помощи.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

Простейший код не работает. Как заклинило. Вместо переключения по кнопкам имеем генерацию.
Спойлер' Show button press on LED

Device = 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
Вложения
Безымянный.png
(12.96 КБ) 141 скачивание
Реклама
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся.
А в этом языке сравнение одним знаком равно? И без скобок в условии?
А то смотрю, как-то странно: вверху присваивание такое же...
Реклама
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

[uquote="Martian",url="/forum/viewtopic.php?p=4630000#p4630000"]если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся.
А в этом языке сравнение одним знаком равно? И без скобок в условии?
А то смотрю, как-то странно: вверху присваивание такое же...[/uquote]
Вы же на картинке видите что на обоих входах высокий уровень, и переключаться вообще ничего не должно. Должно просто сохраняться предыдущее состояние.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

вообще-то не вижу. состояние регистров не отображено.
да и зачем картинка, я код смотрю. и задал по нему вопрос. даже два.
Реклама
Эиком - электронные компоненты и радиодетали
koms48
Встал на лапы
Сообщения: 132
Зарегистрирован: Пт окт 19, 2012 05:54:55

Re: Не работает простейший код. Прошу помощи.

Сообщение koms48 »

Биты конфигурации криво стоят.

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
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.?
Реклама
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

[uquote="koms48",url="/forum/viewtopic.php?p=4630210#p4630210"]Биты конфигурации криво стоят...[/uquote]Верно. Заработало. Спасибо, дорогой !!!. В жизни бы не догадался в чем собака зарыта. Буду разбираться в чем тут логика. С уважением.
ПС. Попытка выставить в Протеусе слово конфигурации 0x31C4, если оно не выставлено в самом хекс-файле - к успеху симуляции не приводит.
Последний раз редактировалось Ariadna-on-Line Вс сен 29, 2024 16:23:57, всего редактировалось 1 раз.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4630274#p4630274"]В жизни бы не догадался[/uquote] Вот поэтому нужно параллельно пользоваться (учиться пользоваться) отладчиком. Тогда не надо догадываться: раз Вы подали какой-то уровень на вход, а он не отрабатывается, то смотрите в отладчике состояние регистров портов и тут же понимаете, что они не такие, как должны. Более того: вручную выставив в отладчике правильное состояние регистров, Вы получаете приемлемую работу программы и сразу понимаете, что необходимо внести в код.
В общем, отладчик - это невероятно удобный инструмент.

Добавлено after 1 minute 29 seconds:
P.S. И всё-таки разумнее использовать более популярные языки программирования - сообщество больше, книжек и примеров больше, инструментов больше...
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

[uquote="Martian",url="/forum/viewtopic.php?p=4630240#p4630240"]А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.?[/uquote]TRISIO и GPIO - только у PIC12Fxxx. Он единственный. И может быть без проблем обозван как PORTB, TRISB и тд.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

Ага, ясно, спасибо. Я предполагал такое... хотя, это ужасно - переносимость кода на другие мк нехило страдает.
Но тогда почему не заработал Ваш код, если это эквивалентно? Код тогда одинаковый становится.
24Natan
Держит паяльник хвостом
Сообщения: 974
Зарегистрирован: Пн май 27, 2024 14:45:54

Re: Не работает простейший код. Прошу помощи.

Сообщение 24Natan »

koms48 указал на config bits
Изображение
(получил подбором 31С4, по умолчанию - 3FFF)
с минусами в моей карме список тех, кого народная мудрость рекомендует обходить стороной...)))
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

А, точно...
Asm
__Config 0x31C4
EndAsm
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

По умолчанию - 0x3FF4. То бишь внутренний такт 4 МГц.
ПС. В моем случае лучше - 0x31E4 - имеем рабочий пин Reset.
Последний раз редактировалось Ariadna-on-Line Пн сен 30, 2024 10:19:54, всего редактировалось 2 раза.
Базилюк
Нашел транзистор. Понюхал.
Сообщения: 159
Зарегистрирован: Чт сен 19, 2024 19:18:28

Re: Не работает простейший код. Прошу помощи.

Сообщение Базилюк »

Интересно, это на каком языке? Чето типо Паскаля или Бейсика?
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Не работает простейший код. Прошу помощи.

Сообщение Martian »

Proton PicBasic
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Не работает простейший код. Прошу помощи.

Сообщение Ariadna-on-Line »

Всё оказалось намного веселее :
Почему-то штатная Бейсиковская конструкция (используется во всех штатных примерах компилятора) -

Device = 12F683 ' PIC12F675 и тд.
Declare Xtal = 4 ' варианты - Declare Xtal 4; Xtal = 4

не срабатывает, а -

@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm
__Config 0x3FF4 ' Что то же самое !!!
EndAsm

срабатывает, и работает как требуется.

ПС. Пользовался раньше каким-то Proton-ом на другом компе - и горя не знал. Потому и версии не запомнил. А тут пришлось устанавливать - и такой заморок. Короче - проблема решена. Всем спасибо.
Ответить

Вернуться в «PIC»