помогите с pic16f877

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 16
Зарегистрирован: Чт сен 22, 2011 01:35:11

Сообщение giorgi »

K@T спасибо получил.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Сообщение К@Т »

giorgi писал(а):K@T спасибо получил.
Пжалста :)
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Сообщение AVT-28 »

Тема моя заглохла. Хорошо дайте пример на C++ опросить кнопки подключеные к порту B биты 0 1 2.
Я делаю так.

И это не работает!!! Поправьте пожалуйста код что бы это работало. Я уже соображу по аналогии. Все что до этого советовали не работает. Какая то мелочь зараза.
Кнопки подключены к 16f887 контакты 33, 34, 35 (RB0, RB1, RB2). Кнопки подтянуты резисторами на +5 воьт, при замыкании дают 0 на выводах процессора.
Я уже не спрашиваю про динамический опрос клавиатурной матрицы, это на потом оставлю. Есть еще куча другого в чем я легко могу разобраться. Но вот это меня убивает.
Получается только что на RB0 и RB2 присутствует 1 а на RB1 всегда 0, как такое может быть он же подтянут тоже на +5.

Код: Выделить всё

#include <pic.h>	// Include header file for MCU
#include <lcd.h>
#define _XTAL_FREQ	20000000	// Define Frequency 20.0 MHz for function __delay_ms
__CONFIG(HS & WDTDIS & LVPDIS);	// Config. High speed clock,Disable watchdog and Disable LVP
void Delay_ms(unsigned int tick)
{
     while(tick--)	// Loop counter delay time
     {
      __delay_ms(1);	// Delay 1 ms
     }     
}
void main()
{
        lcd_init();	
	TRISB = 0;		
	PORTB = 0b11111111;		
	ANS8 = 0;		 
	while(1)	
	{
		if(RB0==0)	
		{
                	lcd_puts(0x80,"Нажали кнопку 1 ");		
			Delay_ms(200);		
		}
		if(RB1==0)	
		{
			lcd_puts(0x80,"Нажали кнопку 2");
			Delay_ms(200);		
		}
		if(RB2==0)	
		{
			lcd_puts(0x80,"Нажали кнопку 3");
			Delay_ms(200);		
		}
	}
}
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

TRISB=0xFF; // INPUT
ANSELH=0;
прекратите обзывать С компилятор как С++.
Это разные вещи.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Код: Выделить всё

   TRISB = 0;      
   PORTB = 0b11111111; 
Я надеюсь Вы не на железе так над контроллером издеваетесь ? :o
Направления портов выберите правильное!

PS: Не помешало бы Вам ДатаШит покурить немного. Тем более, что он есть на Русском и всё разжовано до некуда...
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Сообщение AVT-28 »

Аlex писал(а):

Код: Выделить всё

   TRISB = 0;      
   PORTB = 0b11111111; 
Я надеюсь Вы не на железе так над контроллером издеваетесь ? :o
Направления портов выберите правильное!

PS: Не помешало бы Вам ДатаШит покурить немного. Тем более, что он есть на Русском и всё разжовано до некуда...
Конечно на железе а на чем же еще. :) Сразу в практике.
А где его на русском нарыть? Я был бы рад почитать. Конечно начинаю во что то врубаться медленно и это радует.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Сообщение AVT-28 »

urry писал(а):TRISB=0xFF; // INPUT
ANSELH=0;
прекратите обзывать С компилятор как С++.
Это разные вещи.
А ясно, не называю больше.
Чегой то я вообще не понимаю, работаю с PORTB, но подключив ANSELH = 0 все заработало как надо. Вроде как ANSELH предназначен для PORTA что бы его в цифровой или аналоговый переключать, или я быстрее всего что то не то понимаю. Но работает теперь то что я уже 3-й день сделать не мог!!! Спасибо огромное.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

ну нельзя же настолько себя не любить.
887 - это продолжение 877, описание которого на русском есть здесь http://www.microchip.ru/lit/?mid=1x0
Дальше - качаем описание 887 с сайта микрочипа и смотрим, какие регистры добавились и за что отвечают - их там всего десяток новых. И видим, что для перевода на аналог-цифра для порта А ANSEL а для порта В ANSELH
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

Сообщение AVT-28 »

Вот спасибо, классная информация.
Родился
Сообщения: 16
Зарегистрирован: Чт сен 22, 2011 01:35:11

Сообщение giorgi »

Привет всем
У меня ко всем такой вопрос.
Сегодня впервые включил pic16f628 .Написал элементарную прогу.

LDmicro0.1
MICRO=Microchip PIC16F628 18-PDIP or 18-SOIC
CYCLE=10000
CRYSTAL=20000000
BAUD=2400

IO LIST
X1 at 2
Y3 at 1
END

PROGRAM
RUNG
CONTACTS X1 0
COIL Y3 0 0 0
END

т.е.если на второй ножке подам единицу на первой тоже сядет единица.
Т.о.работает (светодиод загорается) ,а если сделаю наоборот,т.е. для входа использую первую ножку .а для выхода вторую не работает. Там имеет значение какой ножке присвоешь вход ,а какой выход?
Может литературу какую небудь подскажете.
А то в даташитах такая терминология ,что для меня пока темный лес.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

А то в даташитах такая терминология ,что для меня пока темный лес.
Для Вас Русский язык - тёмный лес ?
В даташитах про
имеет значение какой ножке присвоешь вход ,а какой выход
написано более чем доходчиво...
Это называется - "Мне лень читать и вникать. Расскажите мне всё, разжуйте и в рот положите...".
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2360
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

giorgi писал(а):Сегодня впервые включил pic16f628
Скоро уже про чайники и телевизоры писАть будем. :?
И куда только модераторы смотрят... :roll:
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Родился
Сообщения: 16
Зарегистрирован: Чт сен 22, 2011 01:35:11

Сообщение giorgi »

спасибо за помащь.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»