Пжалстаgiorgi писал(а):K@T спасибо получил.
помогите с pic16f877
- Сообщения: 16
- Зарегистрирован: Чт сен 22, 2011 01:35:11
- Реклама
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
- Сообщения: 378
- Зарегистрирован: Вс сен 11, 2011 12:35:11
Тема моя заглохла. Хорошо дайте пример на C++ опросить кнопки подключеные к порту B биты 0 1 2.
Я делаю так.
И это не работает!!! Поправьте пожалуйста код что бы это работало. Я уже соображу по аналогии. Все что до этого советовали не работает. Какая то мелочь зараза.
Кнопки подключены к 16f887 контакты 33, 34, 35 (RB0, RB1, RB2). Кнопки подтянуты резисторами на +5 воьт, при замыкании дают 0 на выводах процессора.
Я уже не спрашиваю про динамический опрос клавиатурной матрицы, это на потом оставлю. Есть еще куча другого в чем я легко могу разобраться. Но вот это меня убивает.
Получается только что на RB0 и RB2 присутствует 1 а на RB1 всегда 0, как такое может быть он же подтянут тоже на +5.
Я делаю так.
И это не работает!!! Поправьте пожалуйста код что бы это работало. Я уже соображу по аналогии. Все что до этого советовали не работает. Какая то мелочь зараза.
Кнопки подключены к 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);
}
}
}
TRISB=0xFF; // INPUT
ANSELH=0;
прекратите обзывать С компилятор как С++.
Это разные вещи.
ANSELH=0;
прекратите обзывать С компилятор как С++.
Это разные вещи.
Я надеюсь Вы не на железе так над контроллером издеваетесь ?Код: Выделить всё
TRISB = 0; PORTB = 0b11111111;
Направления портов выберите правильное!
PS: Не помешало бы Вам ДатаШит покурить немного. Тем более, что он есть на Русском и всё разжовано до некуда...
- Реклама
- Сообщения: 378
- Зарегистрирован: Вс сен 11, 2011 12:35:11
Конечно на железе а на чем же еще.Аlex писал(а):Я надеюсь Вы не на железе так над контроллером издеваетесь ?Код: Выделить всё
TRISB = 0; PORTB = 0b11111111;![]()
Направления портов выберите правильное!
PS: Не помешало бы Вам ДатаШит покурить немного. Тем более, что он есть на Русском и всё разжовано до некуда...
А где его на русском нарыть? Я был бы рад почитать. Конечно начинаю во что то врубаться медленно и это радует.
- Сообщения: 378
- Зарегистрирован: Вс сен 11, 2011 12:35:11
А ясно, не называю больше.urry писал(а):TRISB=0xFF; // INPUT
ANSELH=0;
прекратите обзывать С компилятор как С++.
Это разные вещи.
Чегой то я вообще не понимаю, работаю с PORTB, но подключив ANSELH = 0 все заработало как надо. Вроде как ANSELH предназначен для PORTA что бы его в цифровой или аналоговый переключать, или я быстрее всего что то не то понимаю. Но работает теперь то что я уже 3-й день сделать не мог!!! Спасибо огромное.
ну нельзя же настолько себя не любить.
887 - это продолжение 877, описание которого на русском есть здесь http://www.microchip.ru/lit/?mid=1x0
Дальше - качаем описание 887 с сайта микрочипа и смотрим, какие регистры добавились и за что отвечают - их там всего десяток новых. И видим, что для перевода на аналог-цифра для порта А ANSEL а для порта В ANSELH
887 - это продолжение 877, описание которого на русском есть здесь http://www.microchip.ru/lit/?mid=1x0
Дальше - качаем описание 887 с сайта микрочипа и смотрим, какие регистры добавились и за что отвечают - их там всего десяток новых. И видим, что для перевода на аналог-цифра для порта А ANSEL а для порта В ANSELH
- Сообщения: 378
- Зарегистрирован: Вс сен 11, 2011 12:35:11
- Сообщения: 16
- Зарегистрирован: Чт сен 22, 2011 01:35:11
Привет всем
У меня ко всем такой вопрос.
Сегодня впервые включил 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
т.е.если на второй ножке подам единицу на первой тоже сядет единица.
Т.о.работает (светодиод загорается) ,а если сделаю наоборот,т.е. для входа использую первую ножку .а для выхода вторую не работает. Там имеет значение какой ножке присвоешь вход ,а какой выход?
Может литературу какую небудь подскажете.
А то в даташитах такая терминология ,что для меня пока темный лес.
У меня ко всем такой вопрос.
Сегодня впервые включил 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
т.е.если на второй ножке подам единицу на первой тоже сядет единица.
Т.о.работает (светодиод загорается) ,а если сделаю наоборот,т.е. для входа использую первую ножку .а для выхода вторую не работает. Там имеет значение какой ножке присвоешь вход ,а какой выход?
Может литературу какую небудь подскажете.
А то в даташитах такая терминология ,что для меня пока темный лес.
Для Вас Русский язык - тёмный лес ?А то в даташитах такая терминология ,что для меня пока темный лес.
В даташитах про
написано более чем доходчиво...имеет значение какой ножке присвоешь вход ,а какой выход
Это называется - "Мне лень читать и вникать. Расскажите мне всё, разжуйте и в рот положите...".
Скоро уже про чайники и телевизоры писАть будем.giorgi писал(а):Сегодня впервые включил pic16f628
И куда только модераторы смотрят...
ICQ нет, и, в ближайшее время, не будет.
- Сообщения: 16
- Зарегистрирован: Чт сен 22, 2011 01:35:11


