AC-DC и DC-DC преобразователи напряжения Top Power на складе ЭЛТЕХ

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

Страница 1 из 2
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 14
4 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? Помогите пожалуйста.
Оценка
Азиатские датчики влажности сегодня — это сочетание надёжности, высокой точности и доступной цены, достигнутое благодаря активным инвестициям в разработки и оптимизированному производству. Они успешно конкурируют с западными аналогами, позволяя снижать себестоимость проектов без ущерба для качества. КОМПЭЛ предлагает широкий выбор датчиков влажности от популярных азиатских брендов для любых задач. В статье — обзор ключевых параметров китайских датчиков влажности и практические рекомендации по их установке.
Новичок
 
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
3 3
0 0
 
20.03.2012 14:22 #2
PIC давно не занимался работаю с AVR, так что могу немного напутать с обозначением...
но у Вас в логике if(PORTC=1)
возможна ошибка. Вы читаете из буфера порта, а Вам надо читать с входа
т.е. должно быть что-то типа if (PINC=1)
уточните как называется вход порта у контроллера PIN и ли как то по другому,
но суть ошибки именно в этом.
Удачи!
Оценка
Светодиодные драйверы серий XLG/ ELG/HLG MEAN WELL предназначены для самых разных задач – от уличного и архитектурного освещения до промышленных и рекламных установок. Все три линейки объединяют герметичный металлический корпус (степень защиты не ниже IP65/67), стабильная работа при экстремальных температурах (вплоть до –40 °C) и комплекс встроенных защит: от короткого замыкания, перегрузки, перенапряжения и перегрева. Во всех семействах есть возможность выбора диммируемых моделей по принятым в световой отрасли интерфейсам управления. Посмотреть ассортимент
Новичок
 
Аватар для RomanEfimov
 
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 14
4 55
0 0
 
20.03.2012 17:10 #3
PINC=1 не работает. Может кто-нибудь ещё поможет?
Оценка
Растущие требования к эффективности, компактности и надёжности в промышленной автоматизации, телекоммуникациях, дата-центрах и электротранспорте делают карбид кремния (SiC) не просто альтернативой кремнию, а ключевым инструментом инженерных решений. Китайские производители предлагают SiC-диоды и транзисторы, сопоставимые по характеристикам с мировыми аналогами при оптимизированной стоимости. В каталоге КОМПЭЛ представлен широкий выбор SiC-дискретов, доступных со склада для ваших проектов.
Новичок
 
Регистрация: 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
Репутация: 14
4 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
Репутация: 14
4 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
Репутация: 14
4 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, время: 12:45.
Обратная связь РадиоЛоцман Вверх