Новичок
Регистрация: 02.03.2012
Сообщений: 193
Репутация: 13
|
Пробую программировать микроконтроллеры 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
|
PIC давно не занимался работаю с AVR, так что могу немного напутать с обозначением...
но у Вас в логике if(PORTC=1) возможна ошибка. Вы читаете из буфера порта, а Вам надо читать с входа т.е. должно быть что-то типа if (PINC=1) уточните как называется вход порта у контроллера PIN и ли как то по другому, но суть ошибки именно в этом. Удачи! |
||
Оценка
|
Новичок
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
|
А я Вам сказал проверьте как читать из порта!
Я не гарантировал название 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.
|
||
Оценка
|
Новичок
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
|
Цитата:
Написать полностью за Вас не получится, не знаю, что у Вас куда включено и какой компилятор! например исправим старую версию #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.
|
||
Оценка
|
Новичок
Регистрация: 10.06.2009
Сообщений: 19
Репутация: 13
|
"Из первого сообщения подредактируйте,"
подредактировал " нужно ли подключать заголовочные файлы" незнаю что Вам нужно и какие файлы, по крайней мере тип контроллера нужен " и что добавлять если несколько конструкций if-else." вот это вообще непонятно что Вы имели ввиду Делаю hex файл в mplab и вставляю в ptroteys is-is. с ptroteys никогда дела не имел, ничего сказать немогу О результатах сообщите
Последний раз редактировалось dimasamchenko; 20.03.2012 в 19:05.
|
||
Оценка
|
Ответ |
Страница 1 из 2
|
|
|
Обратная связь РадиоЛоцман Вверх |