Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Pic Basic pro для начинающих
Эд Дата: Пн, 14.12.2009, 19:57  |                                                                                                                Сообщение # 61
Группа: Проверенные
Ранг:  Новенький
Сообщений: 10
Репутация: 0   ±
Замечания:   ±
На сайте с 30.08.2009

Статус: Offline

Quote (demanik)
Так работает:

@ device pic12F629, intrc_osc_noclkout, wdt_on, PWRT_ON,mclr_off, protect_off
Symbol LED = GPIO.0
TRISIO = %111110' указывает направление порта вход или выход
main:
LED = 1
Pause 1000
LED = 0
Pause 1000
goto main


К сожалению с верхней строкой даже компилировать не хочет а без неё Протеус выдаёт сообщение что (насколько я понял) сторожевой таймер микроконтроллера перезапускает его через определённые промежутки времени что странно при моделировании той же программы привязанной к пику 16ф84 таких проблем не возникало.
ЯНДЕКС Дата: 14.12.2009
slavauk Дата: Пн, 14.12.2009, 21:03  |                                                                                                                Сообщение # 62
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (Эд)
Протеус не моргает гад хоть тресни

Резистор от mclr к "+" подцеплен?

Добавлено (14.12.2009, 21.03.11)
---------------------------------------------

Quote (Эд)
К сожалению с верхней строкой даже компилировать не хочет

Должно компилится.Скорее всего глюк компилятора.В такой конфигурации работает без
резистора
ADMIN Дата: Вт, 15.12.2009, 07:40  |                                                                                                                Сообщение # 63
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Сторожевой таймер включен по-умолчанию, поэтому без верхней строчки протеус будет писать, что таймер сбрасывается через такое-то время.
demanik Дата: Вт, 15.12.2009, 18:38  |                                                                                                                Сообщение # 64
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (Эд)
К сожалению с верхней строкой даже компилировать не хочет

у меня все компилилось и работало в протеусе.


Попробуй всё и вся... может быть пол...

Эд Дата: Вт, 15.12.2009, 23:47  |                                                                                                                Сообщение # 65
Группа: Проверенные
Ранг:  Новенький
Сообщений: 10
Репутация: 0   ±
Замечания:   ±
На сайте с 30.08.2009

Статус: Offline

При компиляции с верхней строкой выдаёт сообщение:Warning(207)c:/progra~1/mecani~1/untitl~1.asm70:Found label after column1 (devise). Error(122)c:/progra~1/mecani~1/untitl~1.asm70:Illegal opcode (PIC12F629)
Сейчас попробую MCLR подтянуть на + через резистор.

Добавлено (15.12.2009, 23.47.50)
---------------------------------------------
Всем огромное спасибо,откомпилировал без верхней строки,подтянул MCLR на плюс и всё заработало,Если кто-то может объяснить почему компилятор выдаёт ошибку при компиляции с верхней строкой буду очень признателен.

vv Дата: Сб, 16.01.2010, 12:26  |                                                                                                                Сообщение # 66
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

Подскажите новичку как правильно сконфигурировать биты в pic16f676.
Хочу использовать PORTA.4 как аналоговый вход на ацп, остальные как цифровой выход (управлять 7-и сегментом. Осцилятор встроенный.

при таких установках в протеусе неактивны А0 и А1...

TRISA=%00001000 'все пины как выход, ПОРТА.4 как аналоговый вход или не так???
ANSEL= %00001000 'аналоговый порт AN4???
TRISC=%00000000

ADCON0=%00010000 'канал АН4 на вход АЦП (биты 4-3-2 1-0-0) ???
ADCON1=%00000010

DIKTATOR Дата: Сб, 16.01.2010, 15:10  |                                                                                                                Сообщение # 67
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 76
Репутация: 2   ±
Замечания:   ±
На сайте с 24.07.2008

Статус: Offline

Пример с книги Чака.
Code

' ---------------------[Заголовок]----------------------------------------------------
'
' Файл......proj05PRO.bas
' Формат....PicBasic Pro
' Цель......Переменный резистор -> PIC16F876 -> светодиоды
' Автор.....Чак Хелибайк
' Создан....19 мая 2001 года
' Изменен...
'
'
' ---------------------[Описание программы]-----------------------------------------------
' Эта программа для микроконтроллера PIC16F876 считывает напряжение с потенциометра и
' отображает его величину с помощью линейки светодиодов.
'
' RA2    Подключение потенциометра
' RB4    4-й светодиод
' RB3    3-й светодиод
' RB2    2-й светодиод
' RB1    1-й светодиод
' RB0    0-й светодиод

' Задание параметров для команды ADCIN
Define ADC_BITS    8  ' Задать число разрядов в результате
Define ADC_CLOCK    3  ' Выбрать источник тактового сигнала (3 = RC)
Define ADC_SAMPLEUS    50    ' Задать время преобразования в микросекундах

' ---------------------[Переменные]-------------------------------------------------------
'
adval    var    byte  ' Создать переменную для хранения результата
'
' ---------------------[Процедура инициализации]------------------------------------------
Init:
PortB = %00000000' Все выходы перед началом сбросить в 0
TrisB = %00000000    ' Все выводы порта PORTB сделать выходами

' ---------------------[Основная программа]-----------------------------------------------

TRISA = %11111111  ' Сделать все выводы порта PORTA входами
ADCON1 =%00000010    ' Сделать выводы порта PORTA аналоговыми входами

loop:
ADCIN 2, adval  ' Преобразовать напряжение в канале 2 и
' поместить результат в adval

' *********************Управление светодиодами********************************************
LEDtst1:
if adval > 25 then tst2    ' Если результат преобразования меньше 25,
portb = %00000001  ' то зажечь только 0-й светодиод
goto    cont    ' Продолжить программу
tst2:
if adval > 75 then tst3    ' Если результат преобразования больше 25, но
portb = %00000011  ' меньше 75, то зажечь 0-й и 1-й светодиоды
goto    cont    ' Продолжить программу
tst3:
if adval > 125 then tst4    ' Если результат преобразования больше 75, но
portb = %00000111  ' меньше 125, то зажечь светодиоды 0…2
goto    cont    ' Продолжить программу
tst4:
if adval > 175 then tst5    ' Если результат преобразования больше 125, но
portb = %00001111  ' меньше 175, то зажечь светодиоды 0…3
goto    cont    ' Продолжить программу
tst5:
portb = %00011111  ' Если результат преобразования больше 175,
' то зажечь все светодиоды (0…4)
cont:
Pause    100    ' Ждать 100 миллисекунд
goto    loop


Используйте симулятор ПРОТУЕС !!! Реальная вещь!!
Я снова тут, но не всегда свободен.
vv Дата: Сб, 16.01.2010, 16:56  |                                                                                                                Сообщение # 68
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

разные контроллеры 676 и 876. У 676 нужно задействовать все выводы. за исключением MCLR. С примером из книги вопросов нет никаких. Сам состряпал псевдо осцил на базе 18ф2550, используя усб (вирт ком порт). А вот с этим пиком в тупике. не могу разобраться как выставить проц на внутренний осцилятор чтоб использовать на выход порты. т.е. вопрос повторю так -
как правильно сконфигурировать все порты ПИК16Ф676 как выходные, один (porta.4) как вход ацп, на использование внутреннего осцилятора (дабы использовать эти порты тоже на выход)??? т.е. TRISA=%00001000 устанавливаем весь порт А как вывод кроме 4-го? вроде так?

полагаю что в регистре конфигурации по адресу 2007Н биты с нулевого по второй и есть настройка осцилятора, как их прописать в протоне/микрокоде ???

ivan_fd Дата: Пн, 18.01.2010, 12:00  |                                                                                                                Сообщение # 69
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (vv)
как правильно сконфигурировать все порты ПИК16Ф676 как выходные, один (porta.4) как вход ацп, на использование внутреннего осцилятора (дабы использовать эти порты тоже на выход)??? т.е. TRISA=%00001000 устанавливаем весь порт А как вывод кроме 4-го? вроде так?

Для выбора какой порт аналоговый, а какой цифровой - регистр ANSEL.

Quote (vv)
полагаю что в регистре конфигурации по адресу 2007Н биты с нулевого по второй и есть настройка осцилятора, как их прописать в протоне/микрокоде ???

Code
bit 2-0 FOSC2:FOSC0: Oscillator Selection bits
111 = RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN  
110 = RC oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
[color=red]100 = INTOSC oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN[/color]
011 = EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN
010 = HS oscillator: High speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
001 = XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
000 = LP oscillator: Low power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN

В Протоне примерно так:

CPD EQU 0X3EFF
CPD_OFF EQU 0X3FFF
CP EQU 0X3F7F
CP_OFF EQU 0X3FFF
BODEN EQU 0X3FFF
BODEN_OFF EQU 0X3FBF
MCLRE_ON EQU 0X3FFF
MCLRE_OFF EQU 0X3FDF
PWRTE_OFF EQU 0X3FFF
PWRTE_ON EQU 0X3FEF
WDT_ON EQU 0X3FFF
WDT_OFF EQU 0X3FF7
LP_OSC EQU 0X3FF8
XT_OSC EQU 0X3FF9
HS_OSC EQU 0X3FFA
EC_OSC EQU 0X3FFB
INTRC_OSC_NOCLKOUT EQU 0X3FFC
INTRC_OSC_CLKOUT EQU 0X3FFD
EXTRC_OSC_NOCLKOUT EQU 0X3FFE
EXTRC_OSC_CLKOUT EQU 0X3FFF

Пример: Config INTRC_OSC_NOCLKOUT, WDT_OFF , PWRTE_ON ,MCLRE_OFF, BODEN_OFF , CP_OFF, CPD_OFF

Ну типа того. Удачи!

Alexandr280480 Дата: Сб, 23.01.2010, 20:47  |                                                                                                                Сообщение # 70
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 23.01.2010

Статус: Offline

Уважаемые участники форума, помогите реализовать программу в которой происходит обратный отчет времени удержания кнопки, например если удерживать 3 секунды один ход выполнения, если меньше 3 с-ход выполнения другой
Заранее благодарен!


Купить за деньги может ВСЁ,
А ты попробуй сделай САМ!!!
ivan_fd Дата: Вс, 24.01.2010, 14:44  |                                                                                                                Сообщение # 71
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну например я делал так: объявлял переменную, и при нажатии кнопки инкрементировал ее значение.
И в зависимости от значения переменной, шел на ту метку, или на другую.

Пример на Протоне:

Code
Button ENT,0,40,5,BUF,0,mainloop   ' Если не нажата то на Mainloop                 
   DelayMS 200

           Inc Presspz                           ' Увеличиваем переменную
   
           While ENT <> 0
              
             If Presspz <= 8 Then
                 Presspz = 0
                 GoTo 1-я метка
             Else
                 Presspz = 0
                 GoTo 2-я метка       
             EndIf
            Wend

                     GoTo mainloop                   
ЯНДЕКС Дата: 24.01.2010
Alexandr280480 Дата: Вс, 24.01.2010, 19:35  |                                                                                                                Сообщение # 72
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 23.01.2010

Статус: Offline

Принцип понятен, единственныё вопрос команда BUTTON на PICBasicPro и ПРОТОНе одинаковые или нет.

Добавлено (24.01.2010, 19.27.50)
---------------------------------------------
Спасибо я сделал вот так:

Code
TRISB=%00000001
PortB=%00000000
RC var Word
Rc=0

Main:
If Portb.0=0 then
    RC=RC+1
          if RC=15000 then
          PortB.1=1
          Pause 2000
          RC=0
          PortB.1=0
          endif
else
     Rc=0
endif          
Goto Main:
End

Добавлено (24.01.2010, 19.35.25)
---------------------------------------------
ПИК 16F84A, кнопка на Порту В.0, индикация на порту В.1, сейчас другой вопрос совмещаю ПИК с дисплеем LM016L с интерфейсом Hitachi 44780 ни фига не получается...почитал форум, что-то никак не пойму в установках DEFINE LCD... что к чему, может где здесь затупил...:(


Купить за деньги может ВСЁ,
А ты попробуй сделай САМ!!!
ivan_fd Дата: Вс, 24.01.2010, 21:27  |                                                                                                                Сообщение # 73
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (Alexandr280480)
ни фига не получается...почитал форум, что-то никак не пойму в установках DEFINE LCD... что к чему, может где здесь затупил...:(

Ну так дайте код, что именно не получается?
Alexandr280480 Дата: Пн, 25.01.2010, 11:56  |                                                                                                                Сообщение # 74
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 96
Репутация: 0   ±
Замечания:   ±
На сайте с 23.01.2010

Статус: Offline

Работаю с 16F84А+LM016L. Наблюдаю за этим в Протуесе 7.5
Для начала хотелось бы просто, вывести "Hello".

Code
Define LCD_DREG PORTB
Define LCD_DBIT4
Define LCD_RSREG PORTB
Define LCD_RSBIT 3
Define LCD_EREG PORTB
Define LCD_EBIT 0
Define LCD_BITS 4
Define LCD_LINES 2
Define LCD_COMMANDUS 2000
Define LCD_DATAUS 50

Main:
LCDOUT $FE,1,"hello"
goto Main
end

Что бы вывести информацию,в книге написано R/S на любой порт, а R/W-на землю, тогда что получается на этом порту должна быть 1?
Что делать с выводом Е?


Купить за деньги может ВСЁ,
А ты попробуй сделай САМ!!!
brown Дата: Пн, 25.01.2010, 12:49  |                                                                                                                Сообщение # 75
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Выложите, пожалуйста, схему в протеусе. Лучше один раз увидеть, чем 100 раз услышать!

Quote (Alexandr280480)
в книге написано R/S на любой порт
-
Quote (Alexandr280480)
Define LCD_RSREG PORTB
Define LCD_RSBIT 3
т.е. портБ.3
Quote (Alexandr280480)
R/W-на землю
-вывод индикатора
Quote (Alexandr280480)
Что делать с выводом Е?
-
Quote (Alexandr280480)
Define LCD_EREG PORTB
Define LCD_EBIT 0
- портБ.0


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: