Pic Basic pro для начинающих
|
|
Alexej79 |
Дата: Чт, 02.12.2010, 21:11 | Сообщение # 451 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
71
Замечания:
±
На сайте с 16.08.2010
Статус:
Offline
|
Привет всем. Не могу врубиться для чего нужен подтягивающий резистор в пикушках? Оъясните пожалуйста и если возможно с наглядными примерами чтоб проще было разобраться. Заранее спасибо.
|
|
|
|
Broka |
Дата: Чт, 02.12.2010, 21:20 | Сообщение # 452 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
253
Замечания:
±
На сайте с 30.09.2009
Статус:
Offline
|
Alexej79 Для того чтобы не городить например кучу деталей лишних, у тебя всё есть в PIC, подключаются они программно, хочешь включить пожалуйста, нехочешь включать тоже пожалуйста Например 16F84 ( На PORTB ты можеш программно подключить подтягивающие резисторы ) это при условии если ты их сделаешь в конфигурации входами!
Наладчик КИП и А
Сообщение отредактировал
Broka - Чт, 02.12.2010, 21:30
|
|
|
|
tombender |
Дата: Чт, 02.12.2010, 21:22 | Сообщение # 453 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 14.09.2010
Статус:
Offline
|
если дело в транзисторах, тогда как работает схема, которую прислал ivan_fd.
|
|
|
|
mikhail09p |
Дата: Чт, 02.12.2010, 21:34 | Сообщение # 454 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
tombender, там ведь подключена всего одна лампочка, а мой проц грузит на 100% !!! Но работает, согласен. Ещё раз обращаю внимание: Протеус всего-навсего СИМУЛЯТОР ! Хотя и неплохой.
|
|
|
|
Broka |
Дата: Чт, 02.12.2010, 21:34 | Сообщение # 455 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
253
Замечания:
±
На сайте с 30.09.2009
Статус:
Offline
|
tombender, А она точно в железе работает? Или только в симуляторе? Если транзистор не входит в насыщение как она может работать, а?
Наладчик КИП и А
|
|
|
|
amid- |
Дата: Чт, 02.12.2010, 21:35 | Сообщение # 456 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Подскажите как сравнить одновременно 4 porta включенных как входы не используя if hten Например если porta.0=1,porta.1=1,porta.2=0,porta.3=0 тоесть на них одновременно пришли какието хаотичные сигналы логич. 1 на porta.1 0 на porta.2 и тому подобное какой командой сделать так чтоб прочитав входы портов (0 или1) сравних их с нужными кодами если совполо то goto main если не совпало то goto end если можно кусочек проги в пример тока учюсь можно и командой if но геморойно очень писать много вроде и книжку прочитал нашол команду select....case но как ее применить не догоняю
Сообщение отредактировал
amid- - Чт, 02.12.2010, 21:39
|
|
|
|
mikhail09p |
Дата: Чт, 02.12.2010, 21:44 | Сообщение # 457 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Quote (Alexej79) Не могу врубиться для чего нужен подтягивающий резистор в пикушках? Например, на порт В вешаешь кнопки одним выводом на корпус. На плюс питания уже не надо разводить резисторы, так как в микрухе они уже есть внутри... Это 8 резисторов. Добавлено (02.12.2010, 21.44.52) --------------------------------------------- Quote (amid-) Подскажите как сравнить одновременно 4 porta включенных как входы не используя if hten Например если porta.0=1,porta.1=1,porta.2=0,porta.3=0 Это не 4 порта, а 4 бита одного порта. Можно так: a=%0101 if PORTA=a then metka
Сообщение отредактировал
mikhail09p - Чт, 02.12.2010, 22:02
|
|
|
|
tombender |
Дата: Чт, 02.12.2010, 22:14 | Сообщение # 458 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 14.09.2010
Статус:
Offline
|
океи завтра пойду прошивать а потом буду собирать. о результате отпишусь поже. ещё раз спасибо за ответы и терпения.
|
|
|
|
ivan_fd |
Дата: Чт, 02.12.2010, 22:18 | Сообщение # 459 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (tombender) Значит Вы думайте что в железе эта схема на лампочки будет работать. Попробуйте собрать и увидите. А Протеус в схеме с лампочками все равно не даст Вам того эффекта, как с диодами. Так что собирайте схему в железе, и эксперементируйте.
|
|
|
|
terrarus |
Дата: Пт, 03.12.2010, 08:33 | Сообщение # 460 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Quote (mikhail09p) Я резисторы между базой и эммитером не устанавливаю, у ПИКов очень нулевой нуль Сразу видно. что Вы не изучали полупроводниковые приборы и действуете чисто методом тыка, по радиолюбительски.. Quote (Broka) Я думаю что будет,если правильно подключить транзисторы и правильно сделать делитель на смещение транзисторов. . Вот слушайте грамотного человека! Дело вовсе не в нулевом уровне, который как Вам кажется, выдает пик при нулевом состоянии на выходе, тут Вы тоже ошибаетесь! На переходе эмиттер-база должно быть падение напряжения не более 0,6-0,8 вольт, иначе произойдет пробой этого самого перехода. Поэтому нужен делитель, или хотя бы ограничительный резистор по току, чтобы ограничить ток протекающий через переход эмиттер -база. Если использовать полевые ключи КП501 (их называют еще и полевыми транзисторами) по выход пика можно прямо подключить к затвору.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 03.12.2010, 09:47
|
|
|
|
terrarus |
Дата: Пт, 03.12.2010, 09:09 | Сообщение # 461 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Подскажите как сравнить одновременно 4 PORTA включенных как входы не используя If hten Dim VAR1 As Byte ' Создать переменную VAR1 типа Byte VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1 LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение On VAR1 GoTo Metka_0, Metka_1, Metka_2, Metka_3 ' Если значение VAR1 = 0 идти к метке Metka_0 ' Если значение VAR1 = 1 идти к метке Metka_1 ' Если значение VAR1 = 2 идти к метке Metka_2 ' Если значение VAR1 = 3 идти к метке Metka_4 '-------------------------------------------------------------------- LoadBit Variable , Index , Value По команде LoadBit записывается 0 либо 1 в указанный разряд переменной или регистра. Variable - это определяемая пользователем переменная, типа Byte, Word, или Dword. Index - может быть константой, переменной, или выражением, которое указывает на отдельный бит переменной, который необходимо изменить. Value - может быть константой, переменной, или выражением, которое будет помещено в нужный разряд. Попытка поместить в нужный разряд значение больше чем 1, приведет к тому, что все равно в него будет записана 1. \ On VAR1 GoTo LABEL_0 , LABEL_1, LABEL_2 Эта команда будет работать точно так же как и блок команд If...Then. Если же значение переменной VAR1 не будет находится в заданных пределах от 0 до 2, например переменная VAR1 получит значение больше чем 2, то команда On GoTo не будет делать ничего и основная программа будет продолжена со следующей команды. '-------------------------------------------------------------------- Команда On GoTo предназначена, прежде всего, для использования с микроконтроллерами, которые имеют всего одну страницу памяти (0-2047). Если используются большие микроконтроллеры, и есть подозрение, что метка перехода может находиться на линии раздела страниц, то лучше вместо неё использовать команду On GoToL '----------------------------------------------------------------------- On GoToL Это команда безусловного перехода принуждающая основную программу переходить в различные её места, определяемые переменным индексом. Команда On GoToL предназначена для микроконтроллеров у которых больше чем одна страница памяти, в основном она предназначена для микроконтроллеров 18 серии, но может работать и с микроконтроллерами 16 серии. Команда On GoToL работает так же как и команда BranchL .
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 03.12.2010, 09:11
|
|
|
|
Matrix252005 |
Дата: Пт, 03.12.2010, 10:06 | Сообщение # 462 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток. tombender, я Вам говорил сразу собирайте в железе. Схема полностью работоспособна. Только подберите транзисторы, а еще лучше, используйте "ULNхххх". Например: ULN2003A - она инвертор, т.е. Вы ее можете использовать для PortC (на память схему не помню)... Ток нагрузки до 500мА. Если Вы сомневаетесь в ее работоспособности, скиньте мне свой EMail, я скину Вам видео этого устройства в действии. В моей схеме используется 64 ультроярких св.диодов (красные и зеленые), питается вся схема от АКК моб. тел+МС34063. Потребляет .... Если я не ошибаюсь, mikhail09p, я Вам скидывал это видео "журнального столика"... tombender, если я Вас обидел, извините меня ПЛЗ. Просто я Вам полностью все расписал, нарисовал схему, только собирайте. Как работает программа тоже вроде бы ясно описал (в личке). Если возникнут вопросы (только если не "Лампочка не горит..."), спрашивайте... Добавлено (03.12.2010, 10.06.40) --------------------------------------------- tombender, да, Ваша схема с поста №444 не когда не заработает. Причина, отсутствие связей между лампочками и транзисторами и резисторами... Эти "точки" которые стоит поблизости от деталей, не говорит о том, что между ними существует связь (не путать с другой... ). Соберите схему на макетке и проверьте в железе...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
amid- |
Дата: Пт, 03.12.2010, 10:59 | Сообщение # 463 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
89
Замечания:
±
На сайте с 02.12.2010
Статус:
Offline
|
Quote (mikhail09p) Это не 4 порта, а 4 бита одного порта. Можно так: a=%0101 if PORTA=a then metka как присвоит (а) к всем четырем porta.0,1,2,3 ? может так a var bayte ? symbol a=porta.0,porta.1,porta.2,porta.3 ? if porta=%1110 then ? если да то можно примерчик плиз Добавлено (03.12.2010, 10.59.45) --------------------------------------------- Quote (terrarus) Dim VAR1 As Byte ' Создать переменную VAR1 типа Byte VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1 LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение On VAR1 GoTo Metka_0, Metka_1, Metka_2, Metka_3 ' Если значение VAR1 = 0 идти к метке Metka_0 ' Если значение VAR1 = 1 идти к метке Metka_1 ' Если значение VAR1 = 2 идти к метке Metka_2 ' Если значение VAR1 = 3 идти к метке Metka_4 Я так понимаю что это програма контралирует все 4 potrta и пишет в память либо все 1 либо все 0 если оно одновременно пришлм на porta a если сегнал у них разный напремер на porta1 =1 porta2 =0 porta3=0 porta4=1 и сегналы приходящии могут быть хаотичными на входах porta
Сообщение отредактировал
amid- - Пт, 03.12.2010, 11:29
|
|
|
|
ivan_fd |
Дата: Пт, 03.12.2010, 14:03 | Сообщение # 464 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (amid-) Я так понимаю что это програма контралирует все 4 potrta и пишет в память либо все 1 либо все 0 если оно одновременно пришлм на porta a если сегнал у них разный напремер на porta1 =1 porta2 =0 porta3=0 porta4=1 и сегналы приходящии могут быть хаотичными на входах porta Нет эта программа не пишет все нули или единицы. Code VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1 Здесь переменной VAR1 присваивается состояние портаА. Code LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение Этот код устанавливает неиспользуемые биты в нули. Кстати его можно написать короче: VAR1 = var1 & %00001111
|
|
|
|
terrarus |
Дата: Пт, 03.12.2010, 14:05 | Сообщение # 465 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Разъясняю!!! VAR1 = PORTA "записать в переменную VAR1 данные которые пришли на все 6 входов порта А Например, (Ваш пример - porta1 =1 porta2 =0 porta3=0 porta4=1) на выводах порта А следующие данные RA0 = 0, RA1 = 1, RA2=0, RA3=0, RA4=1, и еще в порте А есть RA5 и его нужно учесть тоже, тоесть RA5=0. В итоге в перемнную VAR1 будут записаны данные VAR1 = %00010010. Но в RB5 может записаться и 1, поэтому нужно принудительно обнулить RB5, а заодно и RB6, RB7 командами: LoadBit VAR1, 5, 0 ' то есть маскируем этот 5-й разряд как не нужный нам LoadBit VAR1, 6, 0 ' то есть маскируем этот 5-й разряд LoadBit VAR1, 7, 0 ' то есть маскируем этот 5-й разряд После этого в переменной VAR1 гарантированно содержится то, что пришло на нужные входа порта В. Ну а дальше делайте с данными которые уже в VAR1 Все что нужно, ---------------------------------------------------- Этот код устанавливает неиспользуемые биты в нули. Кстати его можно написать короче: VAR1 = var1 & %00001111 Спасибо iivan_fd , так действительно короче. но я записал длинно именно для начинающего. А теперь у него возникнет еще один вопрос Что значит & и наверное еще второй вопрос, что значит %00001111. Мне пожалуйста не отвечайте - сам я то знаю.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 03.12.2010, 14:13
|
|
|
|