Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Большие выдержки времени!
Большие выдержки времени!
Broka Дата: Чт, 10.12.2009, 21:04  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 245
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Недавно скачал универсальную программу для создания задержек времени для PIC,
www.picbasic.ru/load/3-1-0-112 как применить её к PicBasicPRO незнаю,может кто подскажет на примере,
пробовал по всякому,компилятор ругается что неправильный синтаксис.
Дело в том что мне надо написать программу на 7дней,чтобы в определённое время включалась та или иная функция,(Вообщем цикл у этой программы недельный,через неделю всё обнуляется и пошло всё заново.)
В принципе я догадываюсь как это сделать,работает таймер,по достижении нужного промежутка времени,
от таймера происходит прерывание,потом возвращается на то место от куда было всё это вызвано,но вот как это
сделать в PicBasicPro,ни как не могу понять!


Наладчик КИП и А
ЯНДЕКС Дата: 10.12.2009
brown Дата: Чт, 10.12.2009, 22:20  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 335
Репутация: 10   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Цитата Broka
Недавно скачал универсальную программу для создания задержек времени для PIC

Данная программа для ассемблера. В бейсике есть ее простой эквивалент PAUSE и компилятор сгенерит некое подобное в АСМе. Вам это видимо не подходит. Думаю подойдет какая нибудь прога часов, которые неоднократно обсуждались на форуме. Примеры должны быть здесь http://www.picbasic.ru/load/8-1-0-110 Либо вообще использовать часы реального времени типа DS1307.


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
terrarus Дата: Пт, 11.12.2009, 14:05  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Могу предложить такой вариант без использования прерываний:

main:
For cek = 1 To 10080
Pause 1000 ' Пауза 1 сек
GoSub Vkl
GoSub Vykl
Next
GoTo main

End

Vkl:
If x = 1440 Then Led1 = 1 ' Если прошли 1 сутки (24 часа) то включить устройство №1 1440 = 60 сек х 24 часа
If x = 2880 Then Led2 = 1 ' Если прошло 2 суток то включить устройство №2
......
If x = NN Then LedN = 1 ' Если прошлo N сутки (48 часа) то включить устройство №N NN = 60 cек x N суток
Return

Vykl:
If x >= 1500 Then Led1 = 0 ' Если прошли 25 часов то выключить устройство №1 1440 = 60 сек х 24 часа
If x >= 2940 Then Led2 = 0 ' Если прошло 49 часов то выключить устройство №2
......
If x >= NN Then LedN = 0 ' Если прошлo NN cекунд выключить устройство №N

Return


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 11.12.2009, 14:58
Broka Дата: Пт, 11.12.2009, 22:15  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 245
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Спасибо большое,буду проводить эксперементы. Обязательно напишу о результатах! cool
Я так думаю вместо Pause 1000,надо бы поставить 60000,да?


Наладчик КИП и А
Сообщение отредактировал Broka - Сб, 12.12.2009, 10:31
terrarus Дата: Сб, 12.12.2009, 11:42  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Да, я ошибся, забыл что в 1 сутках 60сек Х 60 мин Х 24 часа = 86400 сек
Но помните что в Рic,BasicPRO максимально поддерживаются только переменные типа WORD (слово) которые не могут быть больше 65535
, поэтому нужно будет вводить промежуточные переменные, а лучше писать на Протоне дак как Протон поддерживает переменые дипа DWORD (Двойное слово) которые могут оперировать с числами до 2147483647

Прграмма будет такая же, только оператор Pause 1000 нужно заменить на DelayMs 1000


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Broka Дата: Сб, 12.12.2009, 17:46  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 245
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Я вот каждый раз сталкиваюсь с какой - нибудь проблемой при программировании, и вот смотрю в Протоне
возможностей намного больше , буду изучать Протон, операторы не очень намного отличаются,а возможностей больше! cool


Наладчик КИП и А
terrarus Дата: Сб, 12.12.2009, 21:57  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Да, Протон гораздо мощьнее, чем его предшественники одних только операторов около 200 против 88 операторов PicBasicPRO. Но для 12-разрядных PIC-микроконтроллеров поддерживаются не все операторы. Зато с 16-разрядными работает просто сказка!

Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Сб, 12.12.2009, 22:00
Форум Picbasic.ru » Программирование МК » PicBasicPro » Большие выдержки времени!
Страница 1 из 11
Поиск: