Pic Basic pro для начинающих
|
|
roze222 |
Дата: Пн, 09.05.2011, 08:57 | Сообщение # 616 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.12.2010
Статус:
Offline
|
Quote (amid-) main: portb.0=1 pause 1 portb.0=0 pause 1 goto init: Метка начала подпрограммы и "ссылка" на выполнение бесконечного цикла должны иметь одно "имя". Внутрений генератор по умолчанию и так настроен на 4 мГц. Функция "вход/выход" через TRIS, хотя для данной проги (TRISB = %00000000), достаточно прописать TRISB=%11111110 (управляем выходом 0), специально прописывать порт А , если по-ходу нет оперирования с его выходами, я так, думаю нет особой нужды, хотя это микроконтроллер с радостью впишет в память
|
|
|
|
Эд |
Дата: Чт, 12.05.2011, 12:25 | Сообщение # 617 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 30.08.2009
Статус:
Offline
|
Здравствуйте господа, накропал первый проектик для УЗ пугалки насекомых хотелось бы увидеть отзывы в части оптимизации программы и ответ на вопрос почему при формировании импульса с помощью задержек длительность высокого уровня меньше длительности низкого, хотя задержки установлены одинаковые. Файлы во вложении, там пришлось задержку низкого уровня делать меньше чтобы как то выровнить отношение высокого уровня к низкому.
|
|
|
|
ADMIN |
Дата: Чт, 12.05.2011, 12:50 | Сообщение # 618 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Ну наворочал! Слишком много букв в программе. Это же можно в цикле все сделать. Я делал уже типа такого давным-давно, позже подскажу. Сейчас некогда.
|
|
|
|
ADMIN |
Дата: Чт, 12.05.2011, 19:14 | Сообщение # 619 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А как работает программа? Или как должна работать?
|
|
|
|
Эд |
Дата: Пт, 13.05.2011, 12:18 | Сообщение # 620 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 30.08.2009
Статус:
Offline
|
При включении работает канал 01 что соответствует приблизительно 20 кГц на выходе дальше при нажатии клавиши "вперёд" переключение каналов до 15, с приростом частоты в 1кГц на каждый последующий канал, правда не мешало бы дописать блок для периодического переключения скажем через каждые пол часа а то говорят эти твари к одной частоте привыкают.
|
|
|
|
terrarus |
Дата: Пт, 13.05.2011, 13:28 | Сообщение # 621 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
А что планируете использовать в качестве аккустического излучателя?
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|
Эд |
Дата: Сб, 14.05.2011, 23:15 | Сообщение # 622 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
10
Замечания:
±
На сайте с 30.08.2009
Статус:
Offline
|
Вот такую штуку, думаю подойдёт. Добавлено (13.05.2011, 13.34.11) --------------------------------------------- --------------------------------------------- Господа, плиз подскажите как организовать отсчёт 15 минут, например с помощью прерывания по переполнению TMR0, мне нужно раз в 15 минут изменять значение переменной.
Сообщение отредактировал
Эд - Вс, 15.05.2011, 09:16
|
|
|
|
amid- |
Дата: Вт, 17.05.2011, 16:32 | Сообщение # 623 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Люди добрые я уже всех замучил своим вопросам по поводу работы таймера дайте пример к такой программе pic 18f876a Задача подать на portb.2 =1. И она висит там 10минут а программка выполняется дальше Инициализация таймера ??? Задать нужное время таймера тоесть время выхода на portb.2 лог 1 ???? (10мин) ivan_fd без обид не пойму я твоего примера много английского
Сообщение отредактировал
amid- - Вт, 17.05.2011, 16:33
|
|
|
|
ivan_fd |
Дата: Вт, 17.05.2011, 21:53 | Сообщение # 624 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Смотрите, это Вам подходит? Таймер 1 отсчитывает 10 минут, так как Вы хотели.
|
|
|
|
amid- |
Дата: Ср, 18.05.2011, 11:44 | Сообщение # 625 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Сп. разбираюсь. ??Ктото знает какие ноги отвечают за програмирование етого pic16с57 в даташите не все указано
|
|
|
|
mikhail09p |
Дата: Ср, 18.05.2011, 18:49 | Сообщение # 626 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Осторожно! pic16с57 прошивается 1 раз! Возьмите что-нибуть из серии F !
|
|
|
|
amid- |
Дата: Чт, 19.05.2011, 09:38 | Сообщение # 627 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Quote (mikhail09p) mikhail09p Сп. выкинул
|
|
|
|
Alexej79 |
Дата: Вт, 14.06.2011, 15:37 | Сообщение # 628 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
71
Замечания:
±
На сайте с 16.08.2010
Статус:
Offline
|
Помогите разобраться. Вопрос такой как подключить к 16F628А энкодер? Что я имею на данный момент: Взял энкодер от мауса для ПК. (Я предпологаю что это есть энкодер , колёсико прокрутки ) Схема подключения такова Левый вывод с энкодера на порт PortB.0 так как это и есть вывод для прерывания INT. Средний вывод к массе Правый вывод к порту PortB.2 (подтягивающие резисторы включены Option_reg 7 = 1 ) Для опазнования в какую сторону вращаю энкодер. Сам код программы оформил таким образом. Я напишу тут, самые на мой взгляд, эффективные для моей темы строчки.
OPTION_REG.7 = 0 включил подтягивающие резисторы INTE = 1 Разрешить прерывания по INT INTDG = 1 прерывания по переднему фронту ( когда на INT происходит логическая 1) ну и ещё PEIE = 1 GIE = 1 Вроде как прерывания подготовил. Дальше, подпрограмма прерывания выглядит так Int_Label: Context Save If PORTB.2 = 1 And INTF = 1 Then X = X + 1 If PORTB.2 = 0 And INTF = 1 Then X = X - 1 INTF = 0 Context Restore
Когда происходит прерывания то опрашивается cостояние на выводе порта PortB.2 В зависимости если на выводе логог. 1 или 0 то следовательно переменной Х добовляется или же убавляется 1.
Вот ещё нюанс так как я использую в программе два прерывание одно по переполнению таймера а другое по INT то я решил поставить опрос состояния флага прерывания что б программа узнала по какому событию произашло прерывание и следовательно обработала только его.
Вроде как должно работать, но у меня переменная Х меняется безобразным образом. Где может быть проблема? Расчитываю на Вашу помощь.
|
|
|
|
ADMIN |
Дата: Вт, 14.06.2011, 18:23 | Сообщение # 629 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Во-первых, есть ли даташит на энкодер? Во-вторых, судя по синтаксису, эта программа пишется в протоне, тогда возникает вопрос: что видно в протеусе при отладке? В-третьих, чтобы обрабатывалось нужное прерывание, правильно, нужно ввести проверку условий: If INTF = 1 then bla...bla...bla INTF = 0 endif If T0IF = 1 then bla...bla...bla T0IF = 0 endif
|
|
|
|
ivan_fd |
Дата: Вт, 14.06.2011, 20:12 | Сообщение # 630 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Как Вы подключили Энкодер, схема?
Вот, посмотрите код, нашел на сайте Протона.
|
|
|
|