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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Pic Basic pro для начинающих
ADMIN Дата: Вт, 06.10.2009, 01:13  |                                                                                                                Сообщение # 31
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Да пожалуйста.
Прикрепления: SH__PROG.rar (6.1 Kb)
ЯНДЕКС Дата: 06.10.2009
MobyDick Дата: Вт, 06.10.2009, 10:52  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

ADMIN, Кажется я догадался)) не зря ведь Вы пересадили линии данных на RB4-7 )) Щас буду даташит "жевать" Еще раз спасибо...

Учиться никогда не поздно....
ivan_fd Дата: Вт, 06.10.2009, 11:03  |                                                                                                                Сообщение # 33
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

ivan_fd, ADMIN переделал схему под мою задачу...Сейчас другая проблема...Собрал схему в железе,все работает НО...отображаются только первые 8 знаков слева-направо...т.е. если написать 12345678910 то отобразится только 12345678 опять ломаю мозг...
Прикрепления: LCD690.bmp (355.1 Kb) · lcd690.pbp (0.5 Kb)


Учиться никогда не поздно....
ivan_fd Дата: Ср, 07.10.2009, 17:49  |                                                                                                                Сообщение # 37
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Дайте код, тот который вы в железо зашиваете. Я счас взял ваш код, вместо Hello написал 1234567890, и в протеусе все работает.
slavauk Дата: Ср, 07.10.2009, 18:33  |                                                                                                                Сообщение # 38
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (MobyDick)
отображаются только первые 8 знаков слева-направо

Есть такие индикаторы где следующие 8 символов отображаются как вторая строка
MobyDick Дата: Чт, 08.10.2009, 08:46  |                                                                                                                Сообщение # 39
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

ivan_fd, В Протеусе у меня тоже все замечательно работает,на то он и симулятор smile внизу то, что в данный момент залито в камень...
slavauk, Спасибо...я вот тоже об этом подумал.попробую инициировать вторую строку.Кстати уже пробовал...получилось но "коряво" сильный сдвиг вправо.работаю над этим...
Да,забыл уточнить LCD у меня оказывается 16\1 а я думал что двухстрочный...не запускал его просто ни разу до сего дня....Дефайном выставил 1строку,толку небыло...
Прикрепления: LCD690.hex (1.1 Kb)


Учиться никогда не поздно....
holyuser Дата: Чт, 08.10.2009, 09:57  |                                                                                                                Сообщение # 40
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

holyuser, Спасибо,приму к сведению про паузу......Lcdout $FE,128," Hello " ' Первая строка
Lcdout $FE,192,"World! " ' Вторая строка ........Вашу мысль понял,сейчас попробую...


Учиться никогда не поздно....
ЯНДЕКС Дата: 08.10.2009
MobyDick Дата: Чт, 08.10.2009, 11:58  |                                                                                                                Сообщение # 42
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

holyuser, Действительно работает!!! Для примера я захотел выдать на экран свою фамилию и имя,но фамилия на английском содержит 9 символов...поэтому пришлось воспользоваться Вашей подсказкой и дописать второй строкой "y". Вот отрывок...
Lcdout "Rafalski" ' полностью Rafalskiy
LCDOUT $FE, 192
LCDOUT "y"
Немного неудобно,но если другого выхода нет то сойдет...Еще раз спасибо!
Прикрепления: 4677453.pbp (0.7 Kb)


Учиться никогда не поздно....
ecilop Дата: Чт, 08.10.2009, 14:42  |                                                                                                                Сообщение # 43
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

To MobyDick
Так это у вас LCD такой. Посмотрите даташит на него, может он и разбит на 2 строки по 8.
MobyDick Дата: Чт, 08.10.2009, 14:52  |                                                                                                                Сообщение # 45
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 08.09.2009

Статус: Offline

ivan_fd, Да действтельно,так и есть.Видел ведь, но подумал что это опционально для 16\2.. Даташит просто общий на всю линейку экранов....Дааа без ваших советов мигал бы я светодиодами до сих пор smile Еще раз спасибо....

Учиться никогда не поздно....
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: