微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 看看我写的程序哪里不对啊!

看看我写的程序哪里不对啊!

时间:10-02 整理:3721RD 点击:
做的作业,题目如图:


下面是程序,想先写一个一种频率的,可写出来后发现蜂鸣器应该是常响的,然后停一会,再常响,可是在响的时候是很规律间歇性的响,求大神帮忙看看是哪里出错了
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uint aa,d2,d3;
uchar bb,d1,d4;
sbit P2_0=P2^0;
void main()
{
aa=0;
d3=0xfe;
P2_0=1;
d1=0;
TMOD=0x11;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
PT1=1;
PT0=0;
TR1=1;
TR0=1;
while(1)
  {
   if(aa==seg[d4])
   {
    P2_0=~P2_0;
    aa=0;
   }
     }      
}
void T0led()interrupt 1
{
TH0=(65536-50)/256;
TL0=(65536-50)%256;
aa++;   
}
void T1led()interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
bb++;
d1++;
  if(bb==20)
  {
     d4++;
  }
  if(d1==26)
   {
    if(d4==7)
    {
     d4=1;
    }
    d1=0;
    bb=0;
   }  
}  


变不了,你需要的是把不同频率对应的定时值在300MS定时器中断中装载到另一个定时器的定时初值,你没有改变定时器的定时值,只是变量在动,当然不管用了

1、seg[d4]在哪个地方定义;
2、TMR1中断初始化TMR0,写错了吧!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top