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