51单片机求助~
时间:10-02
整理:3721RD
点击:
刚开始学习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'
同时用两个定时器控制蜂鸣器发声,定时器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是重定义错误,后面两个语法错误。重定义看是不是头文件的问题,语法错误那就看看是不是标点符号,括号啊什么的是不是错了。很好找的。
定时器0你定义的是500微秒一次,定时器定义的是50毫秒中断一次,是不是同你的要求不一样,我觉得应该得不到你要的结果,在好好研究下,这个不难的。
恩我看了下 头文件是正确的 并且可以定义 范例中的TR0 和TR1 语法错误的话我还没找到 我再找找看 然后不同的定时器定义 500微秒的定义产生方波(无法产生200 400 800 hz的方波,所以我去掉了200 400 800 hz的要求,想试下程序是否能够运行)