View Single Post
Old 31-03-2011, 08:11 PM   #2
minh_cly
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Nơi Cư Ngụ: TPHCM
Bài gửi: 12
:
Trích:
Nguyên văn bởi tranhoangbac View Post
Chào các bác, em đang làm con Pic6F877A, với chương trình khi bấm phím Cancel thì a=1, nhưng khi bấm giữ phím cancel khoảng 5s thì b=1. Nhưng em chưa biết viết chương trình như thế nào, bác nào giúp em đoạn chương trình này với. Thank nhiều!
Mình viết bằng CCS C nha bạn.
Bạn dùng ngắt Timer 0 như sau:

Code:
#include ...
...
int16 count;
int1 a = 0;
int1 b = 0;
// Ngat Timer 0
#INT_TIMER0
void TIMER0_isr() {
   if (a == 1) {
      set_timer0(57); // 256 - 199 = 57
      count++;
      if (count >= 490) { // 490 * 199 * 51.2 us = 5s
         count = 0;
         a = 0; // a = 0 va b = 1
         b = 1;
      }
   } else {
       count = 0;
   }
}

// Chuong trinh chính

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Chu ky 51.2 us
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_TIMER0); // Ngat Timer 0
   enable_interrupts(GLOBAL);

   while (1) {
      if (input(...)) { //Input cua nut Cancel
         b = 0;
         a = 1;
         set_timer0(57);
         count = 0;
      }
      else {
         a = 0;
      }
   }
}
Bạn thử code trên đi.
Xin mấy đại ca xem giúm em code đúng chưa.

thay đổi nội dung bởi: minh_cly, 31-03-2011 lúc 08:19 PM.
minh_cly vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn