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