/************************************************ 跳線設置:J7拔掉,J5的23端插上選中喇叭
顯示效果:按一下T0鍵,因為設置的初值是ff和ff,再按一下等于又加了一個1, 這時候定時器溢出了,產生定時器0中斷,喇叭就響,這時候按下復位鍵可重復做此實驗。 ************************************************/
#include <reg52.h> //以下是延時函數 sbit laba=P2^2; void delay(unsigned int i) { unsigned int j; for(;i>0;i--) for(j=0;j<125;j++) {;} } //以下是主程序 void main() { TMOD=0x05;//定時計數器0為工作方式1-計數方式 TH0=0xff;//計數器初值 TL0=0xff;//更改此值,按鍵的次數就要變如改為0xfd就要按3次鍵才中斷,但是由于按鍵是直接接在P3.5的,中間沒有進行防抖處理,有可能會出現誤差請大家注意. //PX0=1; EA=1; //開中斷總開關 ET0=1;//開定時器1 TR0=1;//啟動 while(1);//循環 } //以下是定時器0中斷服務程序 void timer1_int(void)interrupt 1 { for(;;) { laba=0; //喇叭響 delay(500); //延時,保持喇叭響的狀態 laba=1; //關喇叭 delay(500); //延時,保持喇叭關的狀態 } }
[此貼子已經被作者于2009-11-4 13:13:56編輯過]
|