單片機(jī)C語(yǔ)言程序設(shè)計(jì):報(bào)警與旋轉(zhuǎn)燈
/* 名稱(chēng):報(bào)警與旋轉(zhuǎn)燈
說(shuō)明:定時(shí)器控制報(bào)警燈
旋轉(zhuǎn)顯示,并發(fā)出仿真警報(bào)聲。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SPK=P3^7;
uchar FRQ=0x00;
//延時(shí)
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//INT0 中斷函數(shù)
void EX0_INT() interrupt 0
{
TR0=~TR0; //開(kāi)啟或停止兩定時(shí)器,分別控制報(bào)警器的聲音和 LED 旋轉(zhuǎn)
TR1=~TR1;
if(P2==0x00)
else P2=0xe0; //開(kāi) 3 個(gè)旋轉(zhuǎn)燈
}
//定時(shí)器 0 中斷
void T0_INT() interrupt 1
{
TH0=0xfe;
TL0=FRQ;
SPK=~SPK;
}
//定時(shí)器 1 中斷
void T1_INT() interrupt 3
{
TH1=-45000/256;
TL1=-45000%256;
P2=_crol_(P2,1);
}
//主程序
void main()
{
P2=0x00;
SPK=0x00;
TMOD=0x11; //T0、T1 方式 1
TH0=0x00;
TL0=0xff;
IT0=1;
IE=0x8b; //開(kāi)啟 0,1,3 號(hào)中斷
IP=0x01; //INT0 設(shè)為最高優(yōu)先
TR0=0;
TR1=0; //定時(shí)器啟停由 INT0 控制,初始關(guān)閉
while(1)
{
FRQ++;
DelayMS(1);
}
}
拓展閱讀:定時(shí)器控制交通指示燈程序
編輯:admin 最后修改時(shí)間:2018-05-18