Pic Basic pro для начинающих
|
|
ADMIN |
Дата: Вт, 06.10.2009, 01:13 | Сообщение # 31 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Да пожалуйста.
|
|
|
|
MobyDick |
Дата: Вт, 06.10.2009, 10:52 | Сообщение # 32 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
ADMIN, Кажется я догадался)) не зря ведь Вы пересадили линии данных на RB4-7 )) Щас буду даташит "жевать" Еще раз спасибо...
Учиться никогда не поздно....
|
|
|
|
ivan_fd |
Дата: Вт, 06.10.2009, 11:03 | Сообщение # 33 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (MobyDick) Благодарю за помощь! Для меня важно именно разобраться и понять где я допустил ошибки или что то не понял...Даташиты изучал,но видимо не внимательно ) Скорее всего ваша ошибка в: Quote bit 5 MCLRE: MCLR Pin Function Select bit (4) 1 = MCLR pin function is MCLR 0 = MCLR pin function is digital input, MCLR internally tied to VDD
|
|
|
|
MobyDick |
Дата: Вт, 06.10.2009, 15:05 | Сообщение # 34 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
ADMIN, Рискну сделать вывод...Судя по тому что я "нарыл" в даташите 16F690, все порты А на которые я пытался посадить "дату"являются только аналоговыми портами ввода-вывода(ну не считая другой периферии,компараторы,АЦП и т.д.) А порты RB 7-4 как раз "заточены" под Synchronous Serial Port (SSP) в который как раз входят два интерфейса: I2C и SPI который и позволяет нам передавать "цифру" в LCD.....Сильно не пинайте....я прав?
Учиться никогда не поздно....
|
|
|
|
ivan_fd |
Дата: Ср, 07.10.2009, 10:43 | Сообщение # 35 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (ivan_fd) являются только аналоговыми портами ввода-вывода Не верно. Цитата из даташита: Регистр ANSEL (в нем настраивается какие будут порты, цыфровые или аналоговые) Code Analog select between analog or digital function on pins AN<7:0>, respectively. 1 = Analog input. Pin is assigned as analog input 0 = Digital I/O. Pin is assigned to port or special function. А вот и пример из даташита. Code EXAMPLE 4-1: INITIALIZING PORTA BCF STATUS,RP0 ;Bank 0 BCF STATUS,RP1 ; CLRF PORTA ;Init PORTA BSF STATUS,RP1 ;Bank 2 CLRF ANSEL ; digital I/O BSF STATUS,RP0 ;Bank 1 BCF STATUS,RP1 ; MOVLW 0Ch ;Set RA<3:2> as inputs MOVWF TRISA ;and set RA<5:4,1:0> ;as outputs BCF STATUS,RP0 ;Bank 0 Я писал Вам раньше, что вывод MCLR, нужно настроить как порт ввода\вывода, и то он будет работать только на ВХОД (Digital input). А в вашем случае, нужно что бы он работал на выход.
Сообщение отредактировал
ivan_fd - Ср, 07.10.2009, 11:49
|
|
|
|
MobyDick |
Дата: Ср, 07.10.2009, 15:44 | Сообщение # 36 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
ivan_fd, ADMIN переделал схему под мою задачу...Сейчас другая проблема...Собрал схему в железе,все работает НО...отображаются только первые 8 знаков слева-направо...т.е. если написать 12345678910 то отобразится только 12345678 опять ломаю мозг...
Учиться никогда не поздно....
|
|
|
|
ivan_fd |
Дата: Ср, 07.10.2009, 17:49 | Сообщение # 37 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Дайте код, тот который вы в железо зашиваете. Я счас взял ваш код, вместо Hello написал 1234567890, и в протеусе все работает.
|
|
|
|
slavauk |
Дата: Ср, 07.10.2009, 18:33 | Сообщение # 38 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
64
Замечания:
±
На сайте с 14.03.2009
Статус:
Offline
|
Quote (MobyDick) отображаются только первые 8 знаков слева-направо Есть такие индикаторы где следующие 8 символов отображаются как вторая строка
|
|
|
|
MobyDick |
Дата: Чт, 08.10.2009, 08:46 | Сообщение # 39 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
ivan_fd, В Протеусе у меня тоже все замечательно работает,на то он и симулятор внизу то, что в данный момент залито в камень... slavauk, Спасибо...я вот тоже об этом подумал.попробую инициировать вторую строку.Кстати уже пробовал...получилось но "коряво" сильный сдвиг вправо.работаю над этим... Да,забыл уточнить LCD у меня оказывается 16\1 а я думал что двухстрочный...не запускал его просто ни разу до сего дня....Дефайном выставил 1строку,толку небыло...
Учиться никогда не поздно....
|
|
|
|
holyuser |
Дата: Чт, 08.10.2009, 09:57 | Сообщение # 40 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Здравствуйте, MobyDick, попробуйте так: Code ... Lcdout $FE,1 ' Clear LCD screen Lcdout $FE,128," Hello " ' Первая строка Lcdout $FE,192,"World! " ' Вторая строка Еще, правильное место строки "Pause 1000" - после дефиниций.
|
|
|
|
MobyDick |
Дата: Чт, 08.10.2009, 11:40 | Сообщение # 41 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
holyuser, Спасибо,приму к сведению про паузу......Lcdout $FE,128," Hello " ' Первая строка Lcdout $FE,192,"World! " ' Вторая строка ........Вашу мысль понял,сейчас попробую...
Учиться никогда не поздно....
|
|
|
|
MobyDick |
Дата: Чт, 08.10.2009, 11:58 | Сообщение # 42 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
holyuser, Действительно работает!!! Для примера я захотел выдать на экран свою фамилию и имя,но фамилия на английском содержит 9 символов...поэтому пришлось воспользоваться Вашей подсказкой и дописать второй строкой "y". Вот отрывок... Lcdout "Rafalski" ' полностью Rafalskiy LCDOUT $FE, 192 LCDOUT "y" Немного неудобно,но если другого выхода нет то сойдет...Еще раз спасибо!
Учиться никогда не поздно....
|
|
|
|
ecilop |
Дата: Чт, 08.10.2009, 14:42 | Сообщение # 43 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 08.04.2009
Статус:
Offline
|
Не могу понять, почему я не могу считать уровень с порта а.1, там может быть и 1, и 0, а читается всегда 0. Если подставить любой порт B. То все ок, в зависимости от уровня на ножке срабатывают условия. Может надо как-то хитро конфигурить? НА выход а.1 работает отлично, светодиодом мигал....Трис если прописывать явно на вход, все равно не помогает. pic 16f628 input portb.3 if portb.3=1 then serout portb.2,T9600,[13,"Right=OK",10,13] else serout portb.2,T9600,[13,"Right=ERROR",10,13] endif input porta.1 if porta.1=0 then serout portb.2,T9600,[13,"Left=OK",10,13] else serout portb.2,T9600,[13,"Left=ERROR",10,13] endif
|
|
|
|
ivan_fd |
Дата: Чт, 08.10.2009, 14:47 | Сообщение # 44 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
To MobyDick Так это у вас LCD такой. Посмотрите даташит на него, может он и разбит на 2 строки по 8.
|
|
|
|
MobyDick |
Дата: Чт, 08.10.2009, 14:52 | Сообщение # 45 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
14
Замечания:
±
На сайте с 08.09.2009
Статус:
Offline
|
ivan_fd, Да действтельно,так и есть.Видел ведь, но подумал что это опционально для 16\2.. Даташит просто общий на всю линейку экранов....Дааа без ваших советов мигал бы я светодиодами до сих пор Еще раз спасибо....
Учиться никогда не поздно....
|
|
|
|