Pic Basic pro для начинающих
|
|
Эд |
Дата: Пн, 14.12.2009, 19:57 | Сообщение # 61 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 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 таких проблем не возникало.
|
|
|
|
slavauk |
Дата: Пн, 14.12.2009, 21:03 | Сообщение # 62 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
64
Замечания:
±
На сайте с 14.03.2009
Статус:
Offline
|
Quote (Эд) Протеус не моргает гад хоть тресни Резистор от mclr к "+" подцеплен?Добавлено (14.12.2009, 21.03.11) ---------------------------------------------
Quote (Эд) К сожалению с верхней строкой даже компилировать не хочет Должно компилится.Скорее всего глюк компилятора.В такой конфигурации работает без резистора
|
|
|
|
ADMIN |
Дата: Вт, 15.12.2009, 07:40 | Сообщение # 63 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Сторожевой таймер включен по-умолчанию, поэтому без верхней строчки протеус будет писать, что таймер сбрасывается через такое-то время.
|
|
|
|
demanik |
Дата: Вт, 15.12.2009, 18:38 | Сообщение # 64 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (Эд) К сожалению с верхней строкой даже компилировать не хочет у меня все компилилось и работало в протеусе.
Попробуй всё и вся... может быть пол...
|
|
|
|
Эд |
Дата: Вт, 15.12.2009, 23:47 | Сообщение # 65 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 23.01.2010
Статус:
Offline
|
Уважаемые участники форума, помогите реализовать программу в которой происходит обратный отчет времени удержания кнопки, например если удерживать 3 секунды один ход выполнения, если меньше 3 с-ход выполнения другой Заранее благодарен!
Купить за деньги может ВСЁ, А ты попробуй сделай САМ!!!
|
|
|
|
ivan_fd |
Дата: Вс, 24.01.2010, 14:44 | Сообщение # 71 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 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
|
|
|
|
Alexandr280480 |
Дата: Вс, 24.01.2010, 19:35 | Сообщение # 72 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
96
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (Alexandr280480) ни фига не получается...почитал форум, что-то никак не пойму в установках DEFINE LCD... что к чему, может где здесь затупил...:( Ну так дайте код, что именно не получается?
|
|
|
|
Alexandr280480 |
Дата: Пн, 25.01.2010, 11:56 | Сообщение # 74 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
96
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|