Em đang làm bài nhấn nút 3 lần để thay đổi trạng thái LED mà làm mãi không xong :| Trên lớp các anh đã soạn code bài này, em gõ theo nhưng vẫn chưa chạy được (không chắc gõ giống hết vì hôm đó em chỉ xem được 1 phần màn hình).
Đoạn code: (nối port LED với port D).
	
	
	
		
Cho em hỏi:
1. Hàm delay nằm trong chương trình ngắt để làm gì.
2. Khi có xung từ nút nhấn vào chân T0CKI, bit TMR0 tăng lên 1, khi TMR0 đến 255, tăng 1 lần nữa (xuống 0) thì bật cờ T0IF, chương trình nhảy vào ngắt để nháy đèn. Vậy tại sao trong ngắt lại có lệnh if (RA0 == 0) để kiểm tra phím nữa vậy?
								Đoạn code: (nối port LED với port D).
		Code:
	
	// Description:
// PICC6
// Bai 2: Timer0
// Import
#include <htc.h>   // thu vien HTC compiler
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); // 1st config. Word
__CONFIG(BOR4V_BOR21V); // 2st config. Word
#define _XTAL_FREQ 4000000 // crystal 4Mhz
void InitPort();
void InitTimer0();
// Main program
void main()
{
	InitPort();
	InitTimer0();
	
	TMR0 = 0x00;
	while(1);
}
void InitPort()
{
	ANSEL = 0;
	ANSELH = 0;
	TRISA = 1;
	TRISD = 0;	// PORT D is output
	PORTD = 0x00;
}
void InitTimer0()
{
	T0CS = 1;	// Mode counter
	T0SE = 1;	// Increment when 1 -> 0
	PSA = 1;
	TMR0 = 253;
	T0IF = 0;
	T0IE = 1;
	GIE = 1;
}
void interrupt isr()
{
	if (T0IE && T0IF)
	{
		[COLOR="red"]__delay_ms(100);
		if (RA0 == 0)[/COLOR]
		{
			PORTD ^= 0xFF;
			TMR0 = 253;
			T0IF = 0;
		}
	}  
}
	1. Hàm delay nằm trong chương trình ngắt để làm gì.
2. Khi có xung từ nút nhấn vào chân T0CKI, bit TMR0 tăng lên 1, khi TMR0 đến 255, tăng 1 lần nữa (xuống 0) thì bật cờ T0IF, chương trình nhảy vào ngắt để nháy đèn. Vậy tại sao trong ngắt lại có lệnh if (RA0 == 0) để kiểm tra phím nữa vậy?
				