1 简易报警发生器的设计。编程实现从P1.5分别输出1KHz和500Hz的音频信号驱动其所接的蜂鸣器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行。用一开关或按键控制报警器的开和关。(出题时里面的参数可变动;可以用查询法或中断法检测定时时间到,但两种方法必须都会;会计算定时器定时初值,会初始化TMOD、TCON、IE)。 下面这个程序能实现此功能不? #include<reg51.h>
unsigned char a=0;
unsigned char i=0;
sbit P1_5=P1^5;
sbit P1_0=P1^0;//2úéú1KHZμÄÆμÂê
sbit P1_1=P1^1;//2úéú500HZμÄÆμÂê
void main()
{
TMOD=0x11;
TH1=(65536-1000)/256;//¶¨ê±1ms
TL1=(65536-1000)%256;
EA=1;
ET1=1;
TR1=1;
TH0=0xd8;//¶¨ê±10ms
TL0=0xf0;
ET0=1;
TR0=1;
while(1);
}
void int_1() interrupt 1
{
TH0=0xd8;//¶¨ê±10ms
TL0=0xf0;
i++;
if(i==1)
{
P1_5=P1_0;//¶¨ê±100ms
}
else if(i==11)
{
P1_5=P1_1;//¶¨ê±200ms
if(i==31) i=1;
}
}
void int_3() interrupt 3
{
TH1=(65536-1000)/256;//¶¨ê±1ms
TL1=(65536-1000)%256;
a++;
P1_0=~P1_0;
if(a==2)
{P1_1=~P1_1;a=0;}
}
|