простые и интересные  РАДИОСХЕМЫ сделанные своими руками

» Гость

Мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!



» ДАТАШИТЫ
Например: TDA1562

» СХЕМЫ


Отметить прочитанными   -   Поиск   -   Правила   -   Новые сообщения

Страница 1 из 11
Модератор форума: Электродыч, Витинари, Sam 
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Программа для PIC (нажатие кнопки)
Программа для PIC (нажатие кнопки)
Сб, 17.10.2015, 12:41 | Сообщение # 1        
kolya2014ponomarev
аватар
  Постов: 1  Offline
Здравствуйте, недавно начал заниматься программированием платы PIC16F877. Написал программу по выбору одной из двух кнопок, одна - включает светодиод, другая - звук, но к сожалению, данная программа не работает(программа компилируется, но после загрузки ни одна из кнопок не работает). Один из портов (PORTB.F0) при этом аналоговый и не знаю как перевести его в цифровой. Плата pic16f877.
Помогите пожалуйста с решением данной проблемы.
Вот сама программа:

void main()
{
TRISB=0x00;
TRISB.F0=1;
TRISA.F4=1;
TRISB.F3=0;
Sound_Init(&PORTC,0);
while(1)
{
for(;;)
if(!PORTA.F4)
PORTB.F3=1;
}
{
for(;;)
if (!PORTB.F0)
sound_play(10,10);
}
}


Отредактировал kolya2014ponomarev - Сб, 17.10.2015, 12:41
Сб, 17.10.2015, 14:22 | Сообщение # 2        
Витинари
аватар
  Постов: 2484  Offline Модератор 
kolya2014ponomarev, так как не указано, какой именно вариант языка Си использовался, прокомментировал основные ошибки.

Во-первых, направление портов указано только для порта B (и то, все - выходы). Порт F просто не знает, что на нем должна быть кнопка (она указывается как вход, т.е. состояние соответствующего бита на TRISA должно быть равно 1). Во-вторых, знаете ли, что значит "TRISB=0x00" и ей подобные команды, и знаете ли, вообще, как расшифровывается "0x00"?
В-третьих:

void main()
{

TRISB=0x00;
TRISB.F0=1;
TRISA.F4=1;
TRISB.F3=0;
Sound_Init(&PORTC,0);
while(1) // бесконечный цикл, здесь все правильно
{ // начало блока цикла
for(;;) // а тут цикл в цикле! здесь программа наглухо виснет
if(!PORTA.F4) // PORTA не знает, что на нем есть входы
PORTB.F3=1;
} // внезапно заканчивается блок цикла while
{ // неизвестно откуда взявшаяся фигурная скобка
for(;;) // еще один цикл в цикле. Но программа уже висит на предыдущем
if (!PORTB.F0) // а PORTB знает, что на нем только выходы
sound_play(10,10);
} // что закрывает этот блок - не известно.
}
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Программа для PIC (нажатие кнопки)
Страница 1 из 11
Поиск:
Кто есть кто на форуме радиолюбителей: Администратор Модераторы Друзья Пользователи
Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2016, "Радиосхемы". Все права защищены. Почта