#include unsigned char buffer,count; void main(void) { buffer = 0; TMOD = 0x00; //設定timer 1 工作於 mode 0 TH0 = (8192-5000) / 32; //設定第一次計數次數,5000次, 共5000微秒 TL0 = (8192-5000) % 32; count = 200; //設定計數200次, 共1秒鐘 TR0 = 1; //啟動計時器1 IE = 0x82; //啟動Timer 0 中斷 while(1); //不做任何事,等待計時溢位中斷產生 } void timer0_isr(void) interrupt 1 //計時器0的中斷函數, 使用中斷向量1 { TH0 = (8192-5000) / 32; //重新設定計數5000次 TL0 = (8192-5000) % 32; count--; if (count == 0) //判斷是否計數200次(1秒鐘) { count = 200; //重新設定計數200次 buffer++; //buffer內的值加1 P2 = ~buffer; //將buffer內容反向送至P2 } }