导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[sifan1157]红外接收 程序



No.22325
作者:sifan1157
邮件:xingweijun123@126.com
ID:100865
登陆:2次
文章数:18篇
最后登陆IP:222.178.56.73
最后登陆:2008/3/13 22:35:55
注册:2008/2/25 16:57:25
财富:101
发帖时间:2008/2/25 17:08:24
发贴者IP:123.147.0.126
标题:sifan1157:红外接收 程序
摘要:No.22325红外接收 程序 /************************************************************************************
*  Copyright (c) 2007,重庆优易特电子
*            All rights reserved.
*
* 文件名称: main.c
* 文件标识: none
* 适用器件: STC89C51RC

* 摘 要:    红外接收

* 当前版本:1.0
* 作 者:李芳
* 完成日期:2007年12月10日
*
*************************************************************************************/
#include  <reg52.h>  

unsigned char code DUAN_TABLE[]={0X3F, 0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x77,0x7C,0x39,0x5E,0x79,0x71};    
unsigned char disp_buff[4]={1,2,3,4};
unsigned int tem[34]={0};


sbit IO_HW=P3^4; //红外检测IO口
sbit    d0=P2^3;
bit flag=0;

//返回:0,表示没有键按下;1,表示有键按下,按下的键码为*dat.
unsigned char HW_scan(unsigned  int *dat) //红外扫描,接收按键并进行解码
{
  unsigned char count=0;
  unsigned long int x=0,y=0;

   if(IO_HW==0)     //判断IO口状态,0表示有数据
   {  while(IO_HW==0);//等待
   
   while(IO_HW==1);    
      for(count=0;count  <32;count++)   //接收32个脉冲
    { 
    TH1=0;TL1=0;   
    while(IO_HW==0&&x  <5000)x++;   //等待低电平到,并延时退出,防止死在这里
    if(x>  4900)return 0;
    TR1=1;   
    while(IO_HW==1&&x  <10000)x++;   //低电平维持时间用定时器1计时,并长时间无响应退出
    if(x>  9900)return 0;
    TR1=0;  
    
    x=TH1*256+TL1; 
    if(x>  1000) y=y|0x01;   //553,>  0.6ms认为宽脉冲,位数据为1.
    y=y  <  <1;         //先读高位
    }
  y=y>  >  1;      //最后多余的一位退回去.
  *dat=y;   
 // if(*dat==0x00ff||*dat==0x807f||*dat==0x40bf||*dat==0x20df||*dat==0xa05f||*dat==0x609f||*dat==0x10ef||*dat==0x906f||*dat==0x50af||*dat==0xb04f||*dat==0xc03f||*dat==0xe01f||*dat==0xd02f||*dat==0x3ad6)return 1; 
// if(*dat==0xc03f||*dat==0x20df||*dat==0x906f||*dat==0x50af||*dat==0xd02f||*dat==0x2ad6||*dat==0x3ad6||*dat==0x40bf||*dat==0xe01f)return 1;
 if(*dat==0x40bf||*dat==0xc03f||*dat==0xe01f||*dat==0x50af||*dat==0xd02f||*dat==0x02fd||*dat==0x2ad5||*dat==0xe817||*dat==0x6897||*dat==0x0af5||*dat==0xc837||*dat==0x48b7||*dat==0x32cd||*dat==0xf00f||*dat==0x708f||*dat==0x12ed)return 1;
   //10个键的编码依次为:1234567890
  else return 0;  
  ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次