#include unsigned char buffer,count; void main(void) { buffer = 0; TMOD = 0x10; //設定timer 1 工作於 mode 1 TH1 = (65536-50000) / 256; //設定第一次計數次數,50000次, 共50000微秒 TL1 = (65536-50000) % 256; count = 20; //設定計數20次, 共1秒鐘 TR1 = 1; //啟動計時器 IE = 0x88; //啟動Timer 1 中斷 while(1); //不做任何事,等待計時溢位中斷產生 } void timer1_isr(void) interrupt 3 //計時器1的中斷函數, 使用中斷向量3 { TH1 = (65536-50000) / 256; //重新設定計數50000次 TL1 = (65536-50000) % 256; count--; if (count == 0) //判斷是否計數20次(1秒鐘) { count = 20; //重新設定計數20次 buffer++; //buffer內的值加1 P2 = ~buffer; //將buffer內容反向送至P2 } }