Перейти к содержанию

Программа Выбора Кнопки Для Pic16F877


Programma-robot

Рекомендуемые сообщения

Здравствуйте, недавно начал заниматься программированием платы 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);
}
}

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Пользуйсесь тегом CODE!

Обычно я пишу так:

//      76543210
TRISA = 0b00010000;
TRISB = 0b00000001;

Тогда сразу понятно какие ноги на вход, а какие на выход.

Что означает эта запись?

while(1)

а эта?

for(; 
if(!PORTA.F4)
 PORTB.F3=1;

А где подавление дребезга кнопок???

Вот даташит на русском.

PIC16F87x рус.pdf

Изменено пользователем Vovka

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Даже посмотрев все источники (в том числе и прикрепленные). Не могу понять как сделать процесс АЦП (аналоговый в цифровой)ю Даже вставив, то что ты написал Vovka, программа все равно не работает, но я немного изменил программу:

for(;  //бесконечный цикл
if(!PORTA.F4) //если нажать кнопку
PORTB.F3=1; //включение светодиода
void main()
{
TRISA = 0b00010000;
TRISB = 0b00000001;
Sound_Init(&PORTC,0);
while(1)
{
if (!PORTA.F4)
{
for(; 
sound_play(100,100);
}
}
{
if (!PORTB.F0)
sound_play(10,10);
}
}

Ссылка на комментарий
Поделиться на другие сайты

Пользуемя тегом CODE

void main()
{
   TRISA = 0b00010000;
   TRISB = 0b00000001;
   Sound_Init(&PORTC,0);
   while(1) // бесконечный цикл
   {
       if (!PORTA.F4) // если нажали кнопку
       {
           for(;  // то бесконечно вызываем функцию звука
           sound_play(100,100);
       }
   }
   { // а вот сюда мы никогда не попадем! Почему???
       if (!PORTB.F0)
           sound_play(10,10);
   }
}

исправил

Изменено пользователем Vovka

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

Ссылка на комментарий
Поделиться на другие сайты

Один из портов (PORTB.F0) при этом аналоговый и не знаю как перевести его в цифровой.

...

Даже посмотрев все источники (в том числе и прикрепленные). Не могу понять как сделать процесс АЦП (аналоговый в цифровой)

Вот и я не пойму, с какого перепуга аналоговые ноги перепрыгнули с порта А в порт В :crazy:

Тогда вот первоисточник: http://ww1.microchip...eDoc/39582C.pdf

страница 128.

Ладно, вот код:

void main()
{
PORTA = 0b00000000;
TRISA = 0b00010000;
PORTB = 0b00000000;
TRISB = 0b00000001;
// желательно еще и порт С настроить
Sound_Init(&PORTC,0);
while(1)
{
 if( !PORTA.F4 ) {
  PORTB.F3=1;
  while( !PORTA.F4 ) ; // хотя бы так ждем отжатия кнопки
 }
 if( !PORTB.F0 ) {
  sound_play(10,10);
  while( !PORTB.F) ) ;
 }
}
}

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

Ссылка на комментарий
Поделиться на другие сайты

Пишет следующие ошибки:

недопустимое выражение ( строка: if( !PORTA.F4 ) )

недопустимое выражение ( while( !PORTA.F4 ) )

";" expected but } found ( PORTB.F3=1; )

Ссылка на комментарий
Поделиться на другие сайты

Что хоть за компилятор?

Вот, откомпилирован HI-TESH v9.81:

#include <htc.h>
__CONFIG( FOSC_XT & WDTE_OFF & PWRTE_ON & BOREN_ON & LVP_OFF );
//						 76543210
#define KEY1  (PORTA &  0b00010000)
#define KEY2  (PORTB &  0b00000001)
#define PORT_LED		 0b00001000 // бит порта, где висит светодиод
#define LED_ON PORTA |= PORT_LED; // зажечь светодиод. Не забываем о RMW !
#define LED_OFF PORTA &=~PORT_LED; // выключить светодиод. Не забываем о RMW !
void main()
{
PORTA = 0b00000000;
TRISA = 0b00010000;
PORTB = 0b00000000;
TRISB = 0b00000001;
// желательно еще и порт С настроить
// Sound_Init(&PORTC,0);
while(1)
{
  if( !KEY1 ) {
  LED_ON;
  while( !KEY1 ) ; // хотя бы так ждем отжатия кнопки
 }
 if( !KEY2 ) {
//   sound_play(10,10);
  while( !KEY2 ) ;
 }
}
}

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

Ссылка на комментарий
Поделиться на другие сайты

Немного подредактировал программу, теперь компилируется, но теперь обе кнопки не работают.

void main()

{

TRISA = 0b00010000;

TRISB = 0b00000001;

PORTA = 0b00000000;

PORTB = 0b00000000;

Sound_Init(&PORTC,0);

for(;;)

{

if (!PORTA.F4)

{

Sound_play(100,100);

while(!PORTA.F4);

}

if (!PORTB.F0)

{

Sound_play(10,10);

while(!PORTB.F0);

}

}

}

Все программа заработала. Спасибо всем

Особенно vovka

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...