Altinkaya: турецкие корпуса для РЭА

Программирование микроконтроллера PIC конструкция if-else

Страница 1 из 2
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.03.2012 12:34 #1
Пробую программировать микроконтроллеры PIC (виртуально, в is-is).
Мигать по разному светодиодами научился, а вот чтобы на нажатие кнопки загорался определённый светодиод, не получается. Скорее всего, дело в том, что в условии пишу что-то не то, т.к. выполняется действие, как будто это условие выполнено, т.е. без кнопки светодид горит. Вот текст программы:
#include <pic.h>
__CONFIG(0x03F72);

void main(void)
{
T0IE=0;
GIE=0;
TRISB=0;
PORTB=0;
TRISC=1;
while(1==1)
{
if(PORTC=1)
{
PORTB=1;
}
else
{
PORTB=0;
}
}
}
Среда разработки VPLAB. Может дело в configuration bits? Помогите пожалуйста.
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 14:22 #2
PIC давно не занимался работаю с AVR, так что могу немного напутать с обозначением...
но у Вас в логике if(PORTC=1)
возможна ошибка. Вы читаете из буфера порта, а Вам надо читать с входа
т.е. должно быть что-то типа if (PINC=1)
уточните как называется вход порта у контроллера PIN и ли как то по другому,
но суть ошибки именно в этом.
Удачи!
Оценка
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.03.2012 17:10 #3
PINC=1 не работает. Может кто-нибудь ещё поможет?
Оценка
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 17:33 #4
Цитата:
Сообщение от RomanEfimov
PINC=1 не работает. Может кто-нибудь ещё поможет?
А я Вам сказал проверьте как читать из порта!
Я не гарантировал название PIN !!!!

Вот смотрите, уточняю

А Вы не забыли перед операцией чтения
перевести порт в режим INPUT может в этом проблема?


TRISC = FF; переводим C в режим input
Вот примерчик чтения байта
TRISD = 0xFF; //все пины порта PORTD на input
temp = PORTD;

вот еще чтение с конкретной ноги

trisa = 0x04; // set portA 2 as input
porta = 0;

if(porta.2 == 1)
{
portc.4 = 0; // LED OFF
}
if(porta.2 == 0) {
portc.4 = 1; // LED ON
}

надо читать конкретный вывод куда подключена кнопка
например if(porta.2 == 1)

обратите внимание if(porta.2 == 1)

а у Вас if(PORTC=1) т.е. не сравнение а присваивание(если Ваш код на языке Си)
тогда здесь ошибка, проверьте!
Последний раз редактировалось dimasamchenko; 20.03.2012 в 18:13.
Оценка
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.03.2012 18:32 #5
Выдаёт кучю ошибок...
Побробывал по разному. Может не туда вставил. Дайте пожалуйста всю программу полностью.
Оценка
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 18:38 #6
Цитата:
Сообщение от RomanEfimov
Выдаёт кучю ошибок...
Побробывал по разному. Может не туда вставил. Дайте пожалуйста всю программу полностью.
Дайте свою программу, постараюсь поправить.
Написать полностью за Вас не получится, не знаю, что у Вас куда включено и какой компилятор!

например исправим старую версию
#include <pic.h>
__CONFIG(0x03F72);

void main(void)
{
T0IE=0;
GIE=0;
TRISB=0;
PORTB=0;
TRISC=0xFF; //все пины порта PORTС на input
while(1)
{
if(PORTC.1==1)//кнопка на 1 разряде или поставте что Вам нужно!
// может у Вас должно быть PORTC.3==0 откуда я знаю???
{
PORTB=1;
}
else
{
PORTB=0;
}
}
}
как-то так.
Последний раз редактировалось dimasamchenko; 20.03.2012 в 18:56.
Оценка
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.03.2012 18:47 #7
Из первого сообщения подредактируйте, нужно ли подключать заголовочные файлы и что добавлять если несколько конструкций if-else.
Делаю hex файл в mplab и вставляю в ptroteys is-is.
Оценка
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 18:52 #8
"Из первого сообщения подредактируйте,"
подредактировал

" нужно ли подключать заголовочные файлы"
незнаю что Вам нужно и какие файлы, по крайней мере тип контроллера
нужен

" и что добавлять если несколько конструкций if-else."
вот это вообще непонятно что Вы имели ввиду


Делаю hex файл в mplab и вставляю в ptroteys is-is.
с ptroteys никогда дела не имел, ничего сказать немогу

О результатах сообщите
Последний раз редактировалось dimasamchenko; 20.03.2012 в 19:05.
Оценка
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
3 55
0 0
 
20.03.2012 19:09 #9
В условии if номер вывода только через запетую пропустил, светодиод никак не горит.
Оценка
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 19:14 #10
А вы можете показать что у Вас куда запаяно, как включен светодиод?
Схемку покажите.
"В условии if номер вывода только через запетую пропустил"
Что значит через запятую??? Там точка должна быть.
Оценка
Ответ
Страница 1 из 2
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 23:08.
Обратная связь РадиоЛоцман Вверх