Trích:
Nguyên văn bởi tranhoangbac
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.