View Single Post
Old 05-08-2014, 07:15 PM   #4
changtraidoc
Nhập môn đệ tử
 
Tham gia ngày: Feb 2010
Bài gửi: 3
:
Có bác nào cho em hỏi là code em viết sai ở đâu mà em ngắt đc trên các chân của port b, đc rồi nhưng mà bị hiện tượng khi bắt đầu chạy, lần đầu tiên ấn nút thì nó chưa ngắt ngay và fari ấn lần 2, sau đó, thì cái nút nhấn thì nhận ngắt bt, nhấn 1 lần là đc.

Code:
#include <main.h>

static INT8 last_b=0xff;

#INT_RB
void  RB_button(VOID)
{
   
   BYTE changes;
   changes = last_b ^ PORTB;
   last_b = PORTB;
   
   IF (bit_test (changes, 0)&& ! bit_test (last_b, 0))
   {
      //b0 went low
      PORTC = 0b00000001;
   }
   IF (bit_test (changes, 1)&& ! bit_test (last_b, 1))
   {
      //b1 went low
      PORTC = 0b00000010;
   }
   IF (bit_test (changes, 2)&& ! bit_test (last_b, 2))
   {
      //b2 went low
      PORTC = 0b00000100;
   }
   IF (bit_test (changes, 3)&& ! bit_test (last_b, 3))
   {
      //b3 went low
      PORTC = 0b00001000;
   }
   IF (bit_test (changes, 4)&& ! bit_test (last_b, 4))
   {
      //b4 went low
      PORTC = 0b00010000;
   }
   IF (bit_test (changes, 5)&& ! bit_test (last_b, 5))
   {
      //b5 went low
      PORTC = 0b00100000;
   }
   delay_ms (100);
   //RBIF = 0; //Xoa co ngat RB
   clear_interrupt (INT_RB);
}

void main()
{
   setup_adc_ports (NO_ANALOGS);
   setup_adc (ADC_OFF);
   setup_spi (SPI_SS_DISABLED);
   setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 (T1_DISABLED);
   setup_timer_2 (T2_DISABLED, 0, 1) ;
   setup_comparator (NC_NC_NC_NC);
   setup_vref (FALSE);
   ANSELH=0x00;
   ANSELH=0x00;
   WPUB=0xFF;
   enable_interrupts (INT_RB);
   // ! enable_interrupts (INT_RB0);
   // ! enable_interrupts (INT_RB1);
   // ! enable_interrupts (INT_RB2);
   // ! enable_interrupts (INT_RB3);
   // ! enable_interrupts (INT_RB4);
   // ! enable_interrupts (INT_RB5);
   ext_INT_edge (H_to_L);
   enable_interrupts (GLOBAL);

   // TODO: USER CODE!!
   
   // set tris
   set_tris_a (0x00);
   set_tris_b (0b11111111); //pin 6, 7 nhan tin hieu
   set_tris_c (0x00);
   set_tris_d (0x00);
   set_tris_e (0x00);
   
   // init port
   // ! PORTA = 0x00;
   PORTC = 0x00;
   // ! PORTD = 0x00;
   // ! PORTE = 0x00;

   WHILE (TRUE)
   {
      //TODO: User Code
   }
}
Hình Kèm Theo
File Type: png Untitled.png (27.7 KB, 3 lần tải)
changtraidoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn