同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,



请问一下各位老铁,同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,我编写了一部分程序,但是不知道怎么在主程序里去实现功能。请各位老铁们帮帮忙看看,该怎么操作。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,sum,bee;
//uint flag;
int count;
sbit FM = P2^3;
void main()
{
 TMOD = 0x11;//ÉèÖö¨Ê±Æ÷1ºÍ0Ϊ¹¤×÷·½Ê½1
 TH0 = (65536-count)/256;
 TL0 = (65536-count)%256;
 TH1 = (65536-50000)/256;
 TL1 = (65536-50000)%256;
 EA = 1;//¿ª×ÜÖжÏ
 ET0 = 1;//¿ª¶¨Ê±Æ÷0ÖжÏ
 TR0 = 1;//Æô¶¯¶¨Ê±Æ÷0
 TF0 = 0;
 ET1 = 1;//¿ª¶¨Ê±Æ÷1ÖжÏ
 TR1 = 1;//Æô¶¯¶¨Ê±Æ÷1
 TF1 = 0;
 FM = bee;
 while(1)
 {   
  if(sum == 20)
  {
   sum = 0;
   if(count/10000 == 0)
   {
     count = 0; 
    bee = ~bee;
   }
  }
  TR0 = 1;
 }
}

void exter1() interrupt 3
{
 ET1 = 0; 
 TH1 = (65536-50000)/256;
 TL1 = (65536-50000)%256;
 TF1 = 0;
 sum++;
/* if(sum == 20)
 {
  sum = 0;
  if(count/10000 == 0)
  {
   count = 0;
   bee = 1;
  }
 }*/
 ET1 = 1;
}
void exter0() interrupt 1
{
 ET0 = 0;
 TH0 = (65536-count)/256;
 TL0 = (65536-count)%256;
 TF0 = 0;
 count++;
/* if(count/10000 == 0)
 {
  count = 0;
  bee = 1;
 }*/
 //if()
 ET0 = 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值