#include unsigned char buffer,count; void main(void) { buffer = 0; T2CON = 0x00; //設定timer 2 工作於 自動重新載入模式 TH2 = (65536-50000) / 256; //設定第一次計數次數,50000次, 共50000微秒 TL2 = (65536-50000) % 256; RCAP2H = (65536-50000) / 256; //設定第二次以後之計數次數,50000次, 共50000微秒 RCAP2L = (65536-50000) % 256; count = 20; //設定計數20次, 共1秒鐘 TR2 = 1; //啟動計時器 IE = 0xA0; //啟動Timer 2 中斷 while(1); //不做任何事,等待計時溢位中斷產生 } void timer2_isr(void) interrupt 5 //計時器2的中斷函數, 使用中斷向量5 { TF2 = 0; // 因TF2和EXF2屬於同一中斷向量,硬體不會自動清除TF2, 需寫程式清除 count--; if (count == 0) //判斷是否計數20次(1秒鐘) { count = 20; //重新設定計數20次 P2 = ~buffer; //將buffer內容反向送至P2 buffer++; //buffer內的值加1 } }