同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,
1k(hz)的方波。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1=P1^0;
uchar code table[]={
100000,10000,2000,
1000,500,250,125};
uchar aa,tt;
uint i;
void main()
{
TMOD=0x11;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
TH1=(65536-10)/256;
TL1=(65536-10)%256;
ET1=1;
TR1=1;
while(1)
{
for(i=0;i<7;i++)
{
if(tt==6)
{
tt=0;
if(aa==table[i])
{
//if(tt==6)
//{tt=0;led1=~led1;}
led1=~led1;
}
aa=0;
}
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
void time1() interrupt 3
{
TH1=(65536-10)/256;
TL1=(65536-10)%256;
aa++;
}
1k(hz)的方波。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1=P1^0;
uchar code table[]={
100000,10000,2000,
1000,500,250,125};
uchar aa,tt;
uint i;
void main()
{
TMOD=0x11;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
TH1=(65536-10)/256;
TL1=(65536-10)%256;
ET1=1;
TR1=1;
while(1)
{
for(i=0;i<7;i++)
{
if(tt==6)
{
tt=0;
if(aa==table[i])
{
//if(tt==6)
//{tt=0;led1=~led1;}
led1=~led1;
}
aa=0;
}
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
void time1() interrupt 3
{
TH1=(65536-10)/256;
TL1=(65536-10)%256;
aa++;
}