» 您尚未 [登录 - 注册] ┆ 帮助 ┆ Archiver ┆ ┆ 
--> 标题: [已解决]问关于at89c51的c语言编程问题。急!!!
您是本帖第2400个阅读者。
性别:男<br>状态:离线<br>积时:2 小时 31 分 14 秒
snowman


小学生

头衔:未定义
等级:小学生
帖数: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
性别:男<br>状态:离线<br>积时:2 小时 31 分 14 秒
snowman


小学生

头衔:未定义
等级:小学生
帖数:5
金钱:29
S币:0
2F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页


重要问题是不能做到立即反应。帮忙指点改进







----签名档 --------------------------------------------------------
眼镜蛇论坛欢迎您!

Posted:2011-12-22 15:56:43
×
性别:男<br>状态:离线<br>积时:1 天 19 小时 10 分 50 秒
小涛涛


初中生

头衔:未定义
等级:初中生
帖数:44
金钱:246
S币:1
3F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页


楼主是用软件仿真来学习单片机吗?







----签名档 --------------------------------------------------------
XXX,你懂的....

Posted:2011-12-22 23:10:42
×
性别:男<br>状态:离线<br>积时:10 个月 0 天 2 小时 24 分 46 秒
aj8714523


管理员

头衔:眼镜蛇管理员
等级:管理员
帖数:1402
金钱:1017
S币:74

4F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页


程序应该要加个延时,我用你的程序仿真过,因为没有话筒,所以就用按钮来代替信号。

接收信号后,加个延时可以减少干扰,如果要灯亮一下灭掉的话,灯亮后延时一下,再加个P2=0xff 灭掉就可以了


上传的附件
  抱歉,您所在的组无权下载附件,请注册登陆.







----签名档 --------------------------------------------------------
世界上比毒品更容易成瘾的,是装逼时的感觉。。。。

Posted:2011-12-25 22:05:31
×
性别:男<br>状态:离线<br>积时:2 小时 31 分 14 秒
snowman


小学生

头衔:未定义
等级:小学生
帖数:5
金钱:29
S币:0
5F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页


问题解决了,谢谢。因为密码前些日子忘了,所以没有及时回帖,抱歉。







----签名档 --------------------------------------------------------
眼镜蛇论坛欢迎您!

Posted:2012-01-28 15:03:38
×
 每页10条,共1页,合计5条记录
9  1  :
转到  


Powered By:Discuz! 6.0 Processed in:3.250000s,29 queries.
眼镜蛇论坛|单片机论坛| 技术支持:【QQ】1522066584

免 责 声 明 本站提供网上自由讨论使用,所有个人言论并不代表本站立场,与本站立场无关,本站不会对其內容负上任何责任。
假若內容有涉及侵权,请立即联络我们。我们将立刻从网站上刪除,并向所有持版权者致最深的歉意。