24小时热门版块排行榜    

查看: 649  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

a6726188

新虫 (初入文坛)

[求助] 求解答初学C51单片机的一个小程序

问题:
同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,
1k(hz)的方波。

#include<reg52.h>
sbit beep=P2^3;                        // 定义蜂鸣器
long int code table[]=                    // 定义发出不同频率的各个时间长度table表,因为定义晶振为12MHZ,所以一个周期也正好为1US。
{
1000000,100000,20000,10000,5000,2500,1250
};
long int num1,num2;
char num;
void main()
{                                                           
     TMOD=0x11;                                         //定义定时器0,1工作方式1
     EA=1;ET0=1;ET1=1;                    
         TH0=(65535-50000)/256;                 //装载定时器0初值,50ms为一次中断
     TL0=(65535-50000)%256;
         TH1=(65535-1)/256;                     //装载定时器1初值,1us为一次中断
     TL1=(65535-1)%256;
         TR0=1;                                                 //打开定时器0
         while(1)
         {
         if(num1==6)                                  //判断定时器0中断了6次,也就是300ms
         {
           TR0=0;                                          //关闭定时器0
           TR1=1;                                          //打开定时器1
           beep=0;                                          //蜂鸣器报警
           num1=0;                                              //让num1清零,以备再次计数
         }  
           if(num2==table[num])                  //判断当时间达到第num个秒数
           {
           TR1=0;                                      //关闭定时器1
           TR0=1;                                          //打开定时器0
           num2=0;                                          //让num2清零,以备再次计数
           beep=1;                                          //关闭蜂鸣器
           num++;                                          //让num循环计数
           }
          if(num==6)
          {
          num=0;
          }
          
         }                
}

void T0_time()interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num1++;
}
void T1_time()interrupt 3
{
TH1=(65535-1)/256;
TL1=(65535-1)%256;
num2++;
}
}
                运行后蜂鸣器一直在响,不间断,求解答指导
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

15212223817

铁杆木虫 (著名写手)

别学51了,学学TI的DSP或者飞思卡尔的吧

发自小木虫Android客户端
3楼2018-01-15 14:27:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

15212223817

铁杆木虫 (著名写手)

t1的中断可能是一直没进。

发自小木虫Android客户端
2楼2018-01-15 14:13:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见