51单片机求助~

[复制链接]
1903|4
 楼主| L的世界 发表于 2013-7-26 15:05 | 显示全部楼层 |阅读模式

刚开始学习51单片机  要求是
同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,
1k(hz)的方波。
我的蜂鸣器是p1.2口
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,b;
uint count;
sbit speak=P1^2;
uint code freq[]={1000,100,20,10,5,1}
void main()
{
        EA=1;
        ET0=1;
        ET1=1;
        TMOD=0x11;
        TH0=(65535-500)/256;
        TL0=(65535-500)%256;
        TH1=(65535-50000)/256;
        TL1=(65535-50000)%256;
        TR0=1;
        TR1=1;
        while(1);
}

void speak_ferq() interrupt 1
{
        TH0=(65535-500)/256;
        TL0=(65535-500)%256;
        count++;
        if(count==freq[num])
        {
                speak=!speak;
        }
}

void speak_kg() interrupt 3
{
        TH1=(65535-50000)/256;
        TL1=(65535-50000)%256;
        b++;
        if(b==6)
        {
                TR0=!TR0;
                num++;
                if(num==12);
                {
                        num=0;
                }
        }
}

提示信息
PROJECT2.C(19): error C231: 'TR0': redefinition
PROJECT2.C(20): error C231: 'TR1': redefinition
PROJECT2.C(20): error C231: 'TR1': redefinition
PROJECT2.C(21): error C141: syntax error near 'while'
PROJECT2.C(21): error C141: syntax error near '1'

我试着看了下 头文件 TR0 和TR1 的定义正确 while 附件的语法错误还没找到。。。。。。:L
yunan0808 发表于 2013-7-26 15:24 | 显示全部楼层
我帮你调试好了,是你这里少个分号uint code freq[]={1000,100,20,10,5,1}
南宫云明 发表于 2013-7-26 15:26 | 显示全部楼层
uint code freq[]={1000,100,20,10,5,1}
少一个分号!!!
 楼主| L的世界 发表于 2013-7-26 15:35 | 显示全部楼层
恩  解决了~谢谢 上面两位~。。 少了分号 我在while(1)附件找了半天:dizzy:
NE5532 发表于 2013-7-26 21:21 | 显示全部楼层
L的世界 发表于 2013-7-26 15:35
恩  解决了~谢谢 上面两位~。。 少了分号 我在while(1)附件找了半天

当编译器乱报的时候,就应该怀疑是不是掉分号了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部