boolean myflag1 = true ;//กำหนดให้ myflag1 มีชนิดข้อมูลเป็น boolean เเละมีค่า=true
void setup() {
// 1=ดับ เเละ 0=ติด เพราะว่าต่อledขาบวกกับไฟ 5v
DDRB = 0xFF;//กำหนดให้ PORTB 8 ช่องเป็น output
TCCR1A = 0;//เริ่มต้นใช้ timer1
TCCR1B = 0;//ให้ timer1 เป็นเเบบ normal mode (ดูจากตาราง 2-2)
OCR1A = 1999999;//ให้ timer1 มีเป่าหมายที่ 1HZ
TIMSK1 = 0;//ปิดการใช้งาน interrupts ทั้งหมด
TCNT1 = 0x0;//Reset Counter
TIFR1 = 0x6;//เครีค่า interrupts ทั้งหมด
TCCR1B |= (1 << WGM12);//ให้ timer1 เป็นเเบบ CTC mode (ดูจากตาราง 2-2)
TCCR1B |= (1 << CS11);//กำหนด prescaler เป็น 8 (ดูจากตาราง 2-1)
}
void loop() {
if(TIFR1 & (1 << OCF1A))//เช็คการ match interrupt ของ timer1
{
TIFR1 = (1 << OCF1A);//เครียค่า match interrupt ของ timer1
if(myflag1)//ถ้า myflag1 มีค่าเป็นจริงให้ทำ
{
PORTB &= ~(1 << PORTB7 );//ปิด LED ที่ PORTB7
}
else//ถ้าไม่ตรงเงื่อนไขด้านบนให้ทำ
{
PORTB = (1 << PORTB7);//เปิด LED ที่ PORTB7
}
myflag1 =! myflag1;//สลับค่าของตัวเเปล myflag1 (จาก true เป็น false,จาก false เป็น true)
}
}