{ }
tt=0; P1_0=~P1_0;
} 2 /*
利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 设晶振频率为12MHz。 */ /*********************************************************/ #include
#include
TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 a=0xfe;
while(1);//等待中断产生
//主函数
}
void timer0() interrupt 1 { }
TH0=(65536-50000)/256; TL0=(65536-50000)%6; tt++; if(tt==2) { }
tt=0; P1=a;
a=_crol_(a,1);
3 /* 同时用两个定时器控制蜂鸣器发声, 定时器0控制频率,定时器1控制同个 频率持续的时间,间隔2s依次输出 1,10,50,100,200,400,800, 1k(hz)的方波? 设晶振频率为12MHz。 */
/*********************************************************/ #include
#include
void main() { }
void timer0() interrupt 1 //定时器0中断 {
TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失 TH0=(65536-fre)/256; TL0=(65536-fre)%6; tt++;
if(flag<40) //以下几个if分别用来选取不同的频率
if(tt==10)
{
tt=0; fre=50000;
fre=50000; beep=0;
TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%6; TH1=(65536-50000)/256; TL1=(65536-50000)%6; EA=1;//开总中断 ET0=1;//开定时器0中断 ET1=1; TR1=1;
TR0=1;//启动定时器0 while(1);//等待中断产生
//主函数
}
beep=~beep;
if(flag>=40&&flag<80)
{ }
tt=0; fre=50000; beep=~beep;
if(flag>=80&&flag<120)
{ }
tt=0; fre=10000; beep=~beep;
if(flag>=120&&flag<160)
{ }
tt=0; fre=5000; beep=~beep;
if(flag>=160&&flag<200)
{ }
tt=0; fre=2500; beep=~beep;
if(flag>=200&&flag<240)
{
tt=0; fre=1250;
}
}
beep=~beep;
if(flag>=240&&flag<280)
{ }
tt=0; fre=625; beep=~beep;
if(flag>=280&&flag<320)
{ }
tt=0; fre=312; beep=~beep;
if(flag>=320&&flag<360)
{ }
tt=0; fre=156; beep=~beep;
TR0=1;
void timer1() interrupt 3 //定时器1中断用来产生2秒时间定时 {
TH1=(65536-50000)/256; TL1=(65536-50000)%6; flag++; if(flag==360) { flag=0;