刚开始学习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 |