Pic Basic pro для начинающих
|
|
Alexej79 |
Дата: Ср, 22.12.2010, 14:46 | Сообщение # 541 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
71
Замечания:
±
На сайте с 16.08.2010
Статус:
Offline
|
Спасибо за ответ. Вот с прерыванием у меня проблема я на стадии изучения как это делается. Если возможно, напиши как это можно сделать?
|
|
|
|
ivan_fd |
Дата: Ср, 22.12.2010, 19:14 | Сообщение # 542 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Написал бы, но я с мобильного, почитай на форуме есть тема о таймерах и прерываниях.
|
|
|
|
Alexej79 |
Дата: Чт, 23.12.2010, 11:13 | Сообщение # 543 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
71
Замечания:
±
На сайте с 16.08.2010
Статус:
Offline
|
Спасибо за ответ. Но есть ли ещё ссылка где это описано? Форум конечно же я читал только вот где встречаются сообщения о прерывании там обсуждение почему не работает, а мне интересно что это есть прерывание, когда используется, как применяется, какие операторы в ответе за это??? Конечно же даташит читал, рулезный гугл использовал. После чего оформил вопрос в этой теме для новичков. Помогите познать эту функцию. С уважением Alexej79.
Сообщение отредактировал
Alexej79 - Чт, 23.12.2010, 11:17
|
|
|
|
amid- |
Дата: Пт, 24.12.2010, 14:15 | Сообщение # 544 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Quote (Alexej79) что это есть прерывание, когда используется, как применяется, какие операторы в ответе за это Посмотрите программку Программируемый термостат http://picbasic.ru/....-1-0-72 там с помощью прерываний считается время. Разбирайтесь, что не понятно, спрашивайте, сам только вчера понял, как задействовать таймер 1.
|
|
|
|
ivan_fd |
Дата: Пт, 24.12.2010, 22:34 | Сообщение # 546 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Alexej79, Смотрите, сделал, наверно то что Вам нужно. Всех коментариев нету, так шо извиняйте. amid-, Смотрите и Вы, тоже должно подойти.
|
|
|
|
amid- |
Дата: Сб, 25.12.2010, 12:04 | Сообщение # 547 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 16.08.2010
Статус:
Offline
|
ivan_fd, Спасибо за програмку. Потихоньку пытаюсь разобраться. Только у меня в Протеусе она не зажигает диод. Работала ли она у тебя?
|
|
|
|
ivan_fd |
Дата: Сб, 25.12.2010, 15:27 | Сообщение # 550 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Конечно зажигает. Нажмите на изображение----
Сообщение отредактировал
ivan_fd - Сб, 25.12.2010, 15:27
|
|
|
|
retas |
Дата: Вс, 26.12.2010, 00:45 | Сообщение # 551 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
amid- ! , посмотри сдесь http://picbasic.ru/forum/9-593-1
|
|
|
|
amid- |
Дата: Пн, 27.12.2010, 14:22 | Сообщение # 552 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Вопрос а где или как задаем время для таймера 1 и таймера 2 какими командами заставляем его запустится на нужном port
|
|
|
|
retas |
Дата: Пн, 27.12.2010, 21:12 | Сообщение # 553 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
amid- ! 1. Следишь за нажатием Кнопки. 2. Если Кнопка оказалась нажатой, опустошаешь таймер (делаеш его =0). 3. В прерываниях указываешь постоянно пополнять таймер т.е. его инкрементировать. 4. Следиш, не сосчитал ли таймер такое количество кликов, которое соответствует нужному тебе времени. 5. Если в таймере набралось необходимое число, даёш команду зажеч лампу на любом тебе нужном порте. Удачи.
|
|
|
|
amid- |
Дата: Пн, 27.12.2010, 21:51 | Сообщение # 554 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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.
|
|
|
|