реклама на сайте
подробности

 
 
> прерывания PIC
HarieR
сообщение May 5 2010, 07:25
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 5-05-10
Пользователь №: 57 075



Помогите нубу с прерываниями, плиз. По нажатию кнопки RB0 (pic16f887) должно измениться состояние светодиодов на порту PORTD. Все вроде должно работать, ан-нет. Прошу помощи у PIC-гуру smile.gif . Ниже код:
Код
unsigned short counter;
void interrupt()
{
  if(INTCON.INTF)
  {
      counter++;
        if (counter > 8)
        {
          PORTD=~PORTD; //PORTD - меняем состояние на противопол  
          counter=0;
        }
    INTCON.INTF=0;
   }
}// interrupt

void Init()
{
   TRISB=0b00000001; //RB0 - вход
   TRISD=0b00000000; //PORTD - все выходы
   PORTD=0b00000000; //PORTD - не горят          
   OPTION_REG = 0x87;  
   INTCON.INTE=1; //включаем прерыв на порту RB0    
   INTCON.GIE=1;   //разрешаем все прерывания  
}// Init

void main()
{
   Init();
   while(1)
  {          
   }
}
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 17)
Guest_@Ark_*
сообщение May 7 2010, 10:45
Сообщение #16





Guests






Цитата
Вопрос: каким образом могли повлиять на работу регистры ANSEL и ANSELH?

Непосредственным. Эти регистры задают режимы работы портов - аналоговый или цифровой. После старта (сброса) - устанавливается аналоговый режим. Нужно правильно настраивать порты, прежде чем ими пользоваться.
Go to the top of the page
 
+Quote Post
HarieR
сообщение May 7 2010, 11:03
Сообщение #17





Группа: Участник
Сообщений: 10
Регистрация: 5-05-10
Пользователь №: 57 075



Спасибо большое всем за помощь!


вешаю кнопку на RB4 и меняю программу, чтобы прерывание срабатывало с нее:
Код
void interrupt()
{
     if(INTCON.RBIF)
     {

         PORTD=~PORTD;

         INTCON.RBIF=0;
     }
}// interrupt
void Init()
{
     ANSEL  = 0;
     ANSELH = 0;
     TRISB=0b00010000;
     TRISD=0b00000000;
     OPTION_REG = 0b10000111;
     INTCON.RBIE=1;
     INTCON.GIE=1;
}// Init
void main() {

   Init();
   while(1) { }
   }

не работает! в чем ошибка, пните плиз

Сообщение отредактировал HarieR - May 7 2010, 11:04
Go to the top of the page
 
+Quote Post
evc
сообщение May 7 2010, 13:35
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Посмотрите регистр IOCB. Стр. 49/ds


--------------------
УЭР
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 09:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.06294 секунд с 7
ELECTRONIX ©2004-2016