
头衔:未定义
等级:小学生
帖数:5
金钱:29
S币:0
|
|
收藏 举报 1F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页
[已解决]问关于at89c51的c语言编程问题。急!!!
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay500us(uint);
void my_as(void);
sbit beep=P1^2;
sbit oby=P1^1;
uchar a,i=0;
uint th[9]={0xff,0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0xfc};
uint tl[9]={0xff,0x8b,0x5c,0x14,0x68,0x04,0x8f,0x0b,0x50};
void main()
{
beep=1;
IE=0x82;
TMOD=0x01;
a=0xfe;
while(1)
{
if(oby==1)
{
TR0=1;
TH0=0xff;
TL0=0xff;
i++;
P2=a;
delay500us(520);
TR0=0;
a=_crol_(a,1);
delay500us(5);
}
if(i==8)i=0;
}
}
void my_as(void)interrupt 1
{
TH0=th[i];
TL0=tl[i]; beep=~beep;
}
void delay500us(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<60;y++); }
这是我写的程序,觉得达不到效果,想请大家帮忙改进,提点一下。
我用的是AT89S51芯片,用到话筒、蜂鸣器、8个LED发光二级管。目的是:话筒一接收到信号(如拍手),最右小灯亮一下灭掉且蜂鸣器发出do的声音,再接收第二次信号右边第二个小灯亮一下灭掉且蜂鸣器发出re的声音…………一直循环。
需要用到:外部中断采集话筒信号、定时发音、收到信号立即反应。谢谢!
|
----签名档 --------------------------------------------------------
眼镜蛇论坛欢迎您!
Posted:2011-12-21 21:35:48
| |
|