IF ... THEN ... - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » IF ... THEN ...
IF ... THEN ...
iso10 Дата: Пт, 17.08.2012, 10:57  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

При компилировании в операторе IF ... THEN, если стоит одно условие всё без ошибок. Если два условия выдаёт:
ERROR: Unable to fit variable T1
ERROR: Unable to fit variable T2

Вот программа на 12F508:

llamp var GPIO.4
plamp var GPIO.5
swl VAR GPIO.0
swp var GPIO.1
TRISiO =%000011
GPIO =%000000
a var byte
b var word
c var word
Loop:
if swl=1 and swp=1 then gosub ava
if swl=1 then gosub levp
if swp=1 then gosub pravp
goto loop
levp
pause 600
return
pravp
pause 600
return
ava
pause 600
return
ЯНДЕКС Дата: 17.08.2012
Matrix252005 Дата: Пт, 17.08.2012, 11:05  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток iso10

Судя по Вашей программе, это будет что то для поворотов... Но суть не в том...

Вы не "присвоили" Label !!! Должно быть: levp: pravp: ava:

Вы забыли добавить ":"


THE TRUTH IS OUT THERE.

С уважением, Николай.
iso10 Дата: Пт, 17.08.2012, 11:57  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

llamp var GPIO.4
plamp var GPIO.5
swl VAR GPIO.0
swp var GPIO.1
TRISiO =%000011
GPIO =%000000
a var byte
b var word
c var word
Loop:
if swl=1 and swp=1 then gosub ava
if swl=1 then gosub levp
if swp=1 then gosub pravp
goto loop
levp:
pause 600
return
pravp:
pause 600
return
ava:
pause 600
return

Добавил ":", результат тот же!
Matrix252005 Дата: Пт, 17.08.2012, 12:36  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Я давно не работал с РВР... Ладно, сейчас разберемся... biggrin

Добавлено (17.08.2012, 12:21)
---------------------------------------------
А Вам критично, на чем написано??? А то, к моему стыду, я забыл РВР... sad Я могу Вам написать на протоне... Это проще и быстрее!!!

Добавлено (17.08.2012, 12:36)
---------------------------------------------
Ну что, проверить в железе не могу...

Что было сделано: заменил "Loop" на "Lop", убрал "b var word" и "c var word" и компилятор не ругался!!!

Если есть проект в протеусе, скиньте... И допишите не достающую часть кода...


THE TRUTH IS OUT THERE.

С уважением, Николай.
retas Дата: Пт, 17.08.2012, 13:20  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Я ради спортивного интереса попробовал данный кусок кода дать на пробу Протону - всё нормально.

Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
iso10 Дата: Пт, 17.08.2012, 20:20  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

А в PBP 3.0.0.5 выдаёт:
ERROR: Unable to fit variable T1
ERROR: Unable to fit variable T2

Если в команде IF...THEN... одно условие, то всё проходит без ошибок!
ivan_fd Дата: Пт, 17.08.2012, 21:18  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Если Вы имеете ввиду вот эту строчку if swl=1 and swp=1 then gosub ava ,
то нужно вот так if (swl=1) and (swp=1) then gosub ava

Quote
Example

IF Pin0 = 0 THEN pushd ' If button connected to Pin0 is pushed (0), jump to label pushd
IF B0 >= 40 THEN old ' If the value in variable B0 is greater than or equal to 40, jump to old
IF PORTB.0 THEN itson ' If PORTB, pin 0 is high (1), jump to itson
IF (B0 = 10) AND (B1 = 20) THEN loop


Меня все время преследуют умные мысли...но я быстрее!!!
iso10 Дата: Сб, 18.08.2012, 10:36  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 16.07.2012

Статус: Offline

Quote (Matrix252005)
Ну что, проверить в железе не могу...

Что было сделано: заменил "Loop" на "Lop", убрал "b var word" и "c var word" и компилятор не ругался!!!

Если есть проект в протеусе, скиньте... И допишите не достающую часть кода...


Да, при удалении "b var word" и "c var word" (loop остаётся!) всё компилирует без ошибок!
Наличие скобок не критично!
Форум Picbasic.ru » Программирование МК » PicBasicPro » IF ... THEN ...
Страница 1 из 11
Поиск: