新手51单片机程序求助大神!!!

2019-07-16 04:08发布

代码:
#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit beep = P2^3;    //蜂鸣器
sbit key = P3^4;    //按键

uchar num3 = 0, num4 = 0, num2000 = 0;

void init()    //T0方式1计时初始化
{
    TMOD = 0x01;
    TH0 = (65536 - 65305) / 256;
    TL0 = (65536 - 65305) % 256;
    EA = 1;
    ET0 = 1;
//    TR0 = 1;
}

void delay(uint z)    //延时z毫秒
{
    uint x, y;
    for(x=z; x>0; x--)
        for(y=110; y>0; y--);   
}

void main()
{
    init();
    while(1)
    {
        if (0 == key)
        {
            delay(10);
            if(0 == key)
            {
                TR0 = 1;    //T0开始计时
            }
            while(!key);    //松手检测
        }

        if (num2000 < 2000)    //头0.5秒
        {
            if (3 == num3)    //700HZ
            {
                num3 = 0;
                beep = ~beep;
            }
        }
        else if (num2000>2000 && num2000<4000)    //后0.5秒
        {
            if (4 == num4)    //500HZ
            {
                num4 = 0;
                beep = ~beep;
            }   
        }
        else if (num2000 > 4000)    //归零,并停止计时
        {
            num2000 = 0;
            TR0 = 0;   
        }
    }
}

void T0_time() interrupt 1
{
    TH0 = (65536 - 65305) / 256;
    TL0 = (65536 - 65305) % 256;
    ++ num3;
    ++ num4;
    ++ num2000;   
}
声音频率实现不出来,求助大神!!!(PS:我用的天翔的51单片机。)

要实现的内容!! 要实现的内容!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。