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

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

Статус: Offline

ADMIN,
Проверил код в протеусе. что-то не правильно он работает. Скорость счёта не увеличилсь, но индикатор снова начал "мерцать"
В чём может быть проблемма?
Семеркин Дата: Вт, 01.06.2010, 19:32  |                                                                                                                Сообщение # 257
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 31.05.2010

Статус: Offline

спасибо Dmitry!
сработка зафиксироваллась, теперь буду учить PIC звонить и СМСки посылать.
contra Дата: Чт, 03.06.2010, 18:54  |                                                                                                                Сообщение # 258
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

всем привет! Вопрос к ADMINу.Скажите, в приведённом вами примере кода (Счётчик импульсов на PIC16F84) переменная isrbit
и есть Бит2 регистра INTCON или я все напутал? Спасибо.
ADMIN Дата: Пт, 04.06.2010, 02:18  |                                                                                                                Сообщение # 259
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Это просто бит - флаг, который объявлен в начале программы.
isrbit var bit 'Объявим переменную (битовую), клторая будет указывать программе на то, что произошло прерывание
Я же объясняю. Не надо в прерывании выполнять действия, включая задержки и вычисления. В прерывании нужно зафиксировать факт прерывания(в данном случае - флагом isrbit)!!! А потом в программе проверять его. и если он установлен, то выполнять действия, которые нужно.
contra Дата: Сб, 05.06.2010, 07:38  |                                                                                                                Сообщение # 260
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

ADMIN, прошу прощение за назойливость но хотелось бы узнать почему:
Проверил код в протеусе. что-то не правильно он работает. Скорость счёта не увеличилсь, но индикатор снова начал "мерцать"
В чём может быть проблемма? Объясните пожалуйста!
ADMIN Дата: Сб, 05.06.2010, 16:49  |                                                                                                                Сообщение # 261
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Если вы подпждете, я проверю. Сейчас нет возможности проверить. Товарищи!!! У кого есть возможность, проверьте код, пожалуйста. У меня комп голый абсолютно и траффик ограниченный сейчас.
ЯНДЕКС Дата: 05.06.2010
ivan_fd Дата: Вс, 06.06.2010, 16:50  |                                                                                                                Сообщение # 262
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (contra)
ADMIN, прошу прощение за назойливость но хотелось бы узнать почему:
Проверил код в протеусе. что-то не правильно он работает. Скорость счёта не увеличилсь, но индикатор снова начал "мерцать"
В чём может быть проблемма? Объясните пожалуйста!

Выложите свой код полностью, посмотрим.

contra Дата: Вс, 06.06.2010, 20:09  |                                                                                                                Сообщение # 263
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Вот программа в которую ADMIN внёс поправки, но она работает неправильно (мерцают все индикаторы и скорость счёта невысокая)
Прикрепления: counter.doc (29.5 Kb)
mikhail09p Дата: Вс, 13.06.2010, 19:43  |                                                                                                                Сообщение # 264
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

holyuser Дата: Воскресенье, 21.02.2010, 13.04.37 | Сообщение # 135
PIC18

Ниже пример вывода на ЖКИ температуры (со знаком) в PBP:

Code

....

temp var word ; RAW температура от DS18B20
sign var byte ; знак температуры
result var byte ; целая часть результата
remainder var word ; дробная часть результата

....

if temp > 2000 then ; отрицательная температура
temp = 65535 - temp + 1 ; вычисление абс. значения
sign = 45 ; ASCII код символа "-"
result = temp / 16 ; вычисление целой части
remainder = (temp // 16) * 625 / 1000 ;вычисление дробной части
else ; неотрицательная температура
sign = 43 ; ASCII код символа "+"
result = temp / 16 ; вычисление целой части
remainder = (temp // 16) * 625 / 1000 ;вычисление дробной части
endif

lcdout $FE,128,sign,#result,".",#remainder," C " ; вывод на ЖКИ

....
А как прочитать температуру из датчика ?... Подскажите... surprised

Добавлено (13.06.2010, 19.43.46)
---------------------------------------------
Как на Pic Basic pro написать программу для чтения 12 разрядов температуры датчика DS18B20?
Помогите!

Сообщение отредактировал mikhail09p - Вс, 13.06.2010, 19:44
ivan_fd Дата: Вс, 13.06.2010, 21:15  |                                                                                                                Сообщение # 265
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (ivan_fd)
Вот программа в которую ADMIN внёс поправки, но она работает неправильно (мерцают все индикаторы и скорость счёта невысокая)

Извиняюсь раньше не мог.
Вы можете выложить код программы (*.pbp), а не doc. И на чем вы пробуете, в железе или протеус?
Если протеус, то его модель тоже.

Dmitry Дата: Вс, 13.06.2010, 23:14  |                                                                                                                Сообщение # 266
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (mikhail09p)
Как на Pic Basic pro написать программу для чтения 12 разрядов температуры датчика DS18B20? Помогите!

Да вот же только что было: http://picbasic.ru/forum/5-416-1
Только на ПРОТОНе smile

Ну вот на PICBasic - коряво, но работает:

Code

             OWOut DQ1, 1, [$CC, $44]       ' Start temperature conversion
waitloop:   OWIn DQ1, 4, [count_remain]    ' Check for still busy converting
             if count_remain = 0 Then waitloop
             OWOut DQ1, 1, [$CC, $BE]  ' Read the temperature
             OWIn DQ1, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 2, conf, skip 3]
             if conf = $ff then showerror
Семеркин Дата: Пн, 14.06.2010, 20:36  |                                                                                                                Сообщение # 267
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 31.05.2010

Статус: Offline

помогите в очередной раз в борьбе с ПИКом!
пытаюсь заставить ПИК 16F628 позвонить, никак вражина не сдается.

вот программка:

DEFINE LOADER_USED 1
I var byte
j var byte
q var byte
portA = %00000000
CMCON=7
TRISA = %11111111 '1 - âõîä 0 - âûõîä
i=0

Define Hser_RCSTA 90h ' Âêëþ÷èòü ïðèåìíèê USART
Define Hser_TXSTA 20h ' Âêëþ÷èòü ïåðåäàò÷èê USART
Define Hser_bAUD 19200 ' ÑÊÎÐÎÑÒÜ ïåðåäà÷è
Define Hser_even 1 ' ðàçðåøèòü ïðîâåðêó ÷åòíîñòè
Define Hser_ODD 1 ' ðàçðåøèòü ïðîâåðêó íå÷åòíîñòè

MAIN:
high 4
PAUSE 1000
low 4
PAUSE 500
if portA.1 = 0 then goto zikl
if portA.1 = 1 then goto LED
GOTO MAIN

led:
High 3
Pause 1000
Low 3
Pause 500
hserout ["AT",13]
Pause 100
if portA.1 = 0 then goto zikl
hserin 500,led,[wait("ok")]

goto main

zikl:
for i=1 to 10
High 3
Pause 200
Low 3
Pause 200
next i
GOTO MAIN

светодиодики моргают, а вот обмен PIC и Siemensa на могу обнаружить,
без пика с помощью программ hiperterminal и simoco управлять телефоном получается, а вот контроллер никак не хочет, даже просто команду АТ не посылает. Описание у Халибейка уж очень поверхностное и примеров мало. нашел на этом сайте похожую сигналку, а она на протоне написана и аналогию провести не получается. ПОМОГИТЕ

Сообщение отредактировал Семеркин - Вт, 15.06.2010, 19:28
contra Дата: Пн, 14.06.2010, 22:04  |                                                                                                                Сообщение # 268
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

Quote (ivan_fd)
Извиняюсь раньше не мог. Вы можете выложить код программы (*.pbp), а не doc. И на чем вы пробуете, в железе или протеус? Если протеус, то его модель тоже.

вот код в pbp:
Прикрепления: Schetchik.pbp (3.4 Kb)
contra Дата: Пн, 14.06.2010, 22:07  |                                                                                                                Сообщение # 269
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 0   ±
Замечания:   ±
На сайте с 27.06.2009

Статус: Offline

проверял в Протеусе вот файл:
Прикрепления: chetcik_impulso.dsn (94.7 Kb)
mikhail09p Дата: Пн, 14.06.2010, 23:12  |                                                                                                                Сообщение # 270
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (mikhail09p)
Как на Pic Basic pro написать программу для чтения 12 разрядов температуры датчика DS18B20? Помогите!

Да вот же только что было: http://picbasic.ru/forum/5-416-1
Только на ПРОТОНе

Вот я ж и просил на PICBasic.
А почему КОРЯВО но работает?

Добавлено (14.06.2010, 23.12.51)
---------------------------------------------
Code

OWOut DQ1, 1, [$CC, $44] ' Start temperature conversion
waitloop: OWIn DQ1, 4, [count_remain] ' Check for still busy converting
if count_remain = 0 Then waitloop
OWOut DQ1, 1, [$CC, $BE] ' Read the temperature
OWIn DQ1, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 2, conf, skip 3]
if conf = $ff then showerror

А можно по-русски sad Где переменные, не понимаю... cry

Сообщение отредактировал mikhail09p - Пн, 14.06.2010, 23:13
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: