|
用两个定时器控制蜂鸣器。思路如下:定时器1控制频率,定时器0控制时间。可是实际蜂鸣器只在一个频率上响。
#include<reg52.h>
sbit buzzer=P2^3;
int a[5]={220,550,1100,3300,5500};
int k=0,count=0;
void main()
{
TMOD=0x11;
TL1=(65536-a[k])%256;
TH1=(65536-a[k])/256;
TL0=(65536-45872)%256;
TH0=(65536-45872)/256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void adc() interrupt 1
{
count++;
TL0=(65536-45872)%256;
TH0=(65536-45872)/256;
if(count==20)
{
count=0;
k++;
if(k==5)
k=0;
}
}
void abc() interrupt 3
{
TL1=(65536-a[k])%256;
TH1=(65536-a[k])/256;
buzzer=~buzzer;
}
|
|