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

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

Статус: Offline

Спасибо за ответ. Вот с прерыванием у меня проблема я на стадии изучения как это делается. Если возможно, напиши как это можно сделать?
ЯНДЕКС Дата: 22.12.2010
ivan_fd Дата: Ср, 22.12.2010, 19:14  |                                                                                                                Сообщение # 542
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Написал бы, но я с мобильного, почитай на форуме есть тема о таймерах и прерываниях.
Alexej79 Дата: Чт, 23.12.2010, 11:13  |                                                                                                                Сообщение # 543
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Спасибо за ответ. Но есть ли ещё ссылка где это описано? Форум конечно же я читал только вот где встречаются сообщения о прерывании там обсуждение почему не работает, а мне интересно что это есть прерывание, когда используется, как применяется, какие операторы в ответе за это??? Конечно же даташит читал, рулезный гугл использовал. После чего оформил вопрос в этой теме для новичков. Помогите познать эту функцию.
С уважением Alexej79.

Сообщение отредактировал Alexej79 - Чт, 23.12.2010, 11:17
amid- Дата: Пт, 24.12.2010, 14:15  |                                                                                                                Сообщение # 544
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Уважаемые подскажите вот кусочек программы
bip_taimer_a:

portb.1 = 1 'При нажатии * выдаем лог.1на 10 мин
pause 2000
portb.3 = 1
freqout portb.0,1000,1300 'И сигнал длит.1сек,2раза 1.3кгц
pause 1000
portb.3 = 0
freqout portb.0,1000,1300
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
pause 60000
portb.1 = 0
return
в общем задержка на 10 мин вопрос?
когда выполняется этот процесс то pic какбы засыпает на 10 минут
как мне реализовать задержку на этом порте но так чтоб pic продолжал работу остальной программы.
???
freqout portb.0,1000,1300 ' сигнал длит.1сек,1.3кгц при кварце 20кгц, а какая команда должна быть при кварце 4 кгц тоесть freqout portb.0,1000,xxxx .что бы, получить туже частоту какое значение xxxx (если я правельно прикинул то должно быть freqout portb.0,1000,260 правельно аль нет)

Сообщение отредактировал amid- - Пт, 24.12.2010, 14:21
mikhail09p Дата: Пт, 24.12.2010, 16:23  |                                                                                                                Сообщение # 545
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (Alexej79)
что это есть прерывание, когда используется, как применяется, какие операторы в ответе за это

Посмотрите программку Программируемый термостат http://picbasic.ru/....-1-0-72 там с помощью прерываний считается время. Разбирайтесь, что не понятно, спрашивайте, сам только вчера понял, как задействовать таймер 1.
ivan_fd Дата: Пт, 24.12.2010, 22:34  |                                                                                                                Сообщение # 546
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Alexej79, Смотрите, сделал, наверно то что Вам нужно.
Всех коментариев нету, так шо извиняйте.

amid-,

Смотрите и Вы, тоже должно подойти.

Прикрепления: Alexej79.zip (59.2 Kb)
amid- Дата: Сб, 25.12.2010, 12:04  |                                                                                                                Сообщение # 547
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Сп за примеры обрабатываю (сложновато но я стораюсь) ,а можно небольшой пример к примеру кнопка на porta два светика на portb,нажали кнопку, 1 светик загорелся на 10 мин нажали второй раз кнопку ,2 светик загорелся на 5 мин но светик 1 не гаснет а светится положенное ему время третье нажатие кнопки опять устанавливает время свечения 1 светика 10 мин и.т.д

Но вопрос остался
???
freqout portb.0,1000,1300 ' сигнал длит.1сек,1.3кгц при кварце 20кгц, а какая команда должна быть при кварце 4 кгц тоесть freqout portb.0,1000,xxxx .что бы, получить туже частоту 1,3 кгц какое значение xxxx (если я правельно прикинул то должно быть freqout portb.0,1000,260 правельно аль нет)

Добавлено (25.12.2010, 12.04.49)
---------------------------------------------
Да я обратил внемание что все работают в В PROTON+IDE на PicBasic чем он лучше MicroCode Studio аль чем хуже .
Я учусь в MicroCode Studio стоит ли перейти PROTON+IDE на PicBasic но я вижу разницу вводимых команд програмы

В PROTON+IDE не вижу команды pause чем ее там заменить ?

Сообщение отредактировал amid- - Сб, 25.12.2010, 12:40
ivan_fd Дата: Сб, 25.12.2010, 13:04  |                                                                                                                Сообщение # 548
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (amid-)
Но вопрос остался
???

А Вы пробовали такую же команду, по идее должно быть так же?

Quote (amid-)
Да я обратил внемание что все работают в В PROTON+IDE на PicBasic чем он лучше MicroCode Studio аль чем хуже .
Я учусь в MicroCode Studio стоит ли перейти PROTON+IDE на PicBasic но я вижу разницу вводимых команд програмы

Я тоже с начала начинал с PicBasicPro, но когда перешел на Proton......, на много удобнее и мощнее. Хотя те же задачи можно делать и на PicBasicPro? но..

Quote (amid-)
В PROTON+IDE не вижу команды pause чем ее там заменить ?

DelayMS - миллисекунды
DelayUS - микросекунды

Alexej79 Дата: Сб, 25.12.2010, 15:01  |                                                                                                                Сообщение # 549
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

ivan_fd, Спасибо за програмку. Потихоньку пытаюсь разобраться. Только у меня в Протеусе она не зажигает диод. Работала ли она у тебя?
ivan_fd Дата: Сб, 25.12.2010, 15:27  |                                                                                                                Сообщение # 550
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Конечно зажигает.

Нажмите на изображение----

Прикрепления: 6550920.gif (227.4 Kb)

Сообщение отредактировал ivan_fd - Сб, 25.12.2010, 15:27
retas Дата: Вс, 26.12.2010, 00:45  |                                                                                                                Сообщение # 551
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

amid- ! , посмотри сдесь http://picbasic.ru/forum/9-593-1
ЯНДЕКС Дата: 26.12.2010
amid- Дата: Пн, 27.12.2010, 14:22  |                                                                                                                Сообщение # 552
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Quote (retas)
amid- ! , посмотри сдесь http://picbasic.ru/forum/9-593-1

Вопрос а где или как задаем время для таймера 1 и таймера 2 какими командами заставляем его запустится на нужном port

retas Дата: Пн, 27.12.2010, 21:12  |                                                                                                                Сообщение # 553
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

amid- !

1. Следишь за нажатием Кнопки.
2. Если Кнопка оказалась нажатой, опустошаешь таймер (делаеш его =0).
3. В прерываниях указываешь постоянно пополнять таймер т.е. его инкрементировать.
4. Следиш, не сосчитал ли таймер такое количество кликов, которое соответствует нужному тебе времени.
5. Если в таймере набралось необходимое число, даёш команду зажеч лампу на любом тебе нужном порте.
Удачи.

amid- Дата: Пн, 27.12.2010, 21:51  |                                                                                                                Сообщение # 554
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

retas

IF t1="10min" then Output1=0
IF t2="5min" then Output2=0
goto main

INTERUPT
INC t1 : INC t2

НЕ пойму каким оброзом получить 10 мин .......(тоесть какие цыфры)

и последние две команды разъясните
Спасибочки

Сообщение отредактировал amid- - Пн, 27.12.2010, 22:04
Alexej79 Дата: Пн, 27.12.2010, 23:49  |                                                                                                                Сообщение # 555
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

ivan_fd, Спасибо ещё раз за программу
Quote (ivan_fd)
Прикрепления: Alexej79.zip(59Kb)
Вроде про прерывания стал слегка догонять. Но в том коде что содержится сдесь
Code

  ;      Ðåãèñòð  T1CON
       
      Symbol TMR1ON = T1CON.0     ' Timer1 ON
      Symbol TMR1CS = T1CON.1     ' Timer1 Clock Source Select
      Symbol T1SYNC = T1CON.2     ' Timer1 External Clock Input Synchronization Control
      Symbol T1OSCEN = T1CON.3    ' Timer1 Oscillator Enable Control
      Symbol T1CKPS0 = T1CON.4    ' Timer1 Input Clock Prescale Select bits
      Symbol T1CKPS1 = T1CON.5    ' Timer1 Input Clock Prescale Select bits

       ;     INTCON
       Symbol RBIF = INTCON.0 ' RB Port Interrupt Flag
       Symbol INTF = INTCON.1 ' RB0 External Interrupt Flag
       Symbol T0IF = INTCON.2 ' TMR0 Overflow Interrupt Flag
       Symbol RBIE = INTCON.3 ' RB Port Change Interrupt Enable
       Symbol INTE = INTCON.4 ' RB0 External Interrupt Enable
       Symbol T0IE = INTCON.5 ' TMR0 Overflow Interrupt Enable
       Symbol PEIE = INTCON.6 ' Peripheral Interrupt Enable
       Symbol GIE = INTCON.7  ' Global Interrupt Enable
           
       ;      PIE1
       Symbol TMR1IE = PIE1.0 ' TMR1 Overflow Interrupt Enable
       Symbol TMR2IE = PIE1.1 ' TMR2 to PR2 Match Interrupt Enable
       Symbol CCP1IE = PIE1.2 ' CCP1 Interrupt Enable
       Symbol TXIE = PIE1.4   ' USART Transmit Interrupt Enable
       Symbol RCIE = PIE1.5   ' USART Receive Interrupt Enable
       Symbol CMIE = PIE1.6   ' Comparator Interrupt Enable
       Symbol EEIE = PIE1.7   ' EE Write Complete Interrupt Enable

       Symbol TMR1IF = PIR1.0 ' TMR1 Overflow Interrupt Flag bit
       Symbol TMR2IF = PIR1.1 ' TMR2 to PR2 Match Interrupt Flag
       Symbol CCP1F = PIR1.2  ' CCP1 Interrupt Flag
       Symbol TXIF = PIR1.4   ' USART Transmit Interrupt Flag
       Symbol RCIF = PIR1.5   ' USART Receive Interrupt Flag
       Symbol CMIF = PIR1.6   ' Comparator Interrupt Flag
       Symbol EEIF = PIR1.7   ' EEPROM Write Operation Interrupt Flag

Как я понял там сразу настроены все прерывания. Для меня стоит только брать прерывания по порту В то есть
Symbol RBIE = INTCON.3 ' RB Port Change Interrupt Enable Разрешение прерывания по изменению сигнала на входах RB7:RB4 PORTB
Правильно ли я понял? Если так то перейдём к вопросу о таймерах.

Quote (ivan_fd)
Настройте прерывание таймера на 1сек., в прерывании делать инкремент переменной. А потом, если набежит 5 мин. делаем то что надо.

Как организовать теперь таймер? Как его настроить что б он отсчитал именно 5 минут?
Вот сдесь я окончательно запутался мне нужно ещё прерывание по таймеру . Если набежит 5 мин то тогда происходит прерывание.
Простите конечно за писанину ну у меня в голове такой вот бардак по таймерам и прерываниям может кто и поймёт. Буду рад любой помощи.
С уважением Alexej79.
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: