切换到宽版
  • 1851阅读
  • 9回复

[C51]遥控器键值都不到,求大神指点 [复制链接]

上一主题 下一主题
离线mydust
 
发帖
93
M币
917
专家
1
粉丝
10
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-08-15



网上下载了一个参考程序,但是修改烧写进去后得不到用户码和键值,求大神指点。

STC11系列MCU

//M50560编码红外按键数值+用户码,11.0592M 设置19200

#include <STC_NEW_8051.H>
#define uchar unsigned char
#define uint  unsigned int
    
sbit IR=P3^2;   //遥控接收输入脚

unsigned int  CC_count= 0;  //连续码计数器

unsigned char IRcoding[6];  //用来保存红外遥控的码值

/*
    IRcoding[0]用户码,
    IRcoding[1]用户反码
    IRcoding[2]键值
    IRcoding[3]键值反码
    IRcoding[4]连发标志,1为连发
    IRcoding[5]上次键值
*/

void send_char(unsigned char c)
{
    TI=0;
    SBUF=c;
    while(TI==0);
    TI=0;
}

void Send_out_code(void)
{
    unsigned char i;

    TR0=0;//停止TC0
    ET0=0;//关定时器中断  
    EX0=0;//关外部中断0
    EX1=0;
    TMOD=0x21;
    SCON=0x58;
    TR1=0;
    TH1=0xfd;  //19200
    TL1=0xfd;
    PCON=0x80;
    TR1=1;//启动TC1
//    IE=0x90;
    send_char('U');
    send_char('s');
    send_char('e');
    send_char('r');
    send_char(':');
    i=(IRcoding[1])/16;
    if(i>9) i+=0x37; else i+=0x30;
    send_char(i);
    i=(IRcoding[1])%16;
    if(i>9) i+=0x37; else i+=0x30;
    send_char(i);
    send_char(0x0d);
    send_char(0x0a);
    TR1=0;
}  

void Send_out_codea(void)
{
    unsigned char i;

    TR0=0;//停止TC0
    ET0=0;//关定时器中断  
    EX0=0;//关外部中断0
    EX1=0;
    TMOD=0x21;
    SCON=0x58;
    TR1=0;
    TH1=0xfd;  //19200
    TL1=0xfd;
    PCON=0x80;
    TR1=1;//启动TC1
//    IE=0x90;        
    send_char('C');
    send_char('o');
    send_char('d');
    send_char('e');
    send_char(':');
    i=(IRcoding[2])/16;
    if(i>9) i+=0x37; else i+=0x30;
    send_char(i);
    i=(IRcoding[2])%16;
    if(i>9) i+=0x37; else i+=0x30;
    send_char(i);
    send_char(0x0d);
    send_char(0x0a);
    TR1=0;
}

void DelayA(void)
{
unsigned int TempCyc;
for(TempCyc=0;TempCyc<650;TempCyc++);//3.5
}

void DelayB(void)
{
unsigned int TempCyc;
for (TempCyc=0;TempCyc<93;TempCyc++);//0.75ms
}

void INT0_Routine(void) interrupt 0
{
// unsigned char IRCode[2],IROK;
unsigned char IROK;
unsigned int TempCyc,TempCycB,TempCycA;
    
EX0=0;//关闭中断0
IROK=0;
DelayA();//延时等待引导码的前半部结束
DelayA();
if(!IR)//检验前半部是否过早结束,仿干扰
{
  for(TempCycA=0;TempCycA<2;TempCycA++)
  {
   DelayA();
   if(IR)//检验前半部是否过早,防干扰
   {
        for(TempCyc=0;TempCyc<300;TempCyc++)
        if(!IR)break;//等待第一个位
        if(TempCyc<300)//超时检验
            {
             for(TempCyc=0;TempCyc<8;TempCyc++)
                 {
                    while(!IR);//等待P32拉高,开始位的下部分
                    DelayB();//这里没社超时,实际应用在多功能的设计时应设超时
                    IRcoding[TempCycA]=IRcoding[TempCycA]>>1;
                    if(IR)//当延时750us后P32仍为高则当前位为1
                        {
                         IRcoding[TempCycA]=IRcoding[TempCycA]|0x80;
                         for(TempCycB=0;TempCycB<100;TempCycB++)
                         if(!IR)break;
                         if(TempCycB>99)
                         goto endchk;
                        }
                 }
            }
        else
            goto endchk;
   }
   else
      goto endchk;
      IROK++;
  }
}
endchk:
   if(IROK==2)
   {
         Send_out_code();
         Send_out_codea();
         for(TempCyc=0;TempCyc<300;TempCyc++)
         DelayA();
   }
     EX0=1;
}

void main()
{
     while(1)
        {
            TMOD=0X01;      //定时器T0,T1设置为16位定时计数模式        TMOD=00010001.
            EA=1;           //打开总中断
            EX0=1;          //打开外部中断0
            IT0=1;          //IT0为下降沿触发中断
            TH0=0;
            TL0=0;          //定时器初值   1us
            TR0=0;
        }
}
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线qq177128496

发帖
2840
M币
5126
专家
1
粉丝
14
只看该作者 1楼 发表于: 2018-08-15
请登录后查看
离线bg4rff

发帖
1518
M币
1237
专家
8
粉丝
32
只看该作者 2楼 发表于: 2018-08-15
请登录后查看
离线skw168

发帖
423
M币
774
专家
2
粉丝
27
只看该作者 3楼 发表于: 2018-08-15
请登录后查看
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏 ,M币+8
owenql M币 +8 熱心助人,简单明了 2018-08-15
离线owenql

发帖
1019
M币
6030
专家
8
粉丝
87
只看该作者 4楼 发表于: 2018-08-15
请登录后查看
离线netbeetle

发帖
702
M币
1011
专家
3
粉丝
12
只看该作者 5楼 发表于: 2018-08-15
请登录后查看
离线cj8510

发帖
1922
M币
5502
专家
4
粉丝
128
只看该作者 6楼 发表于: 2018-08-15
请登录后查看
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线mydust
发帖
93
M币
917
专家
1
粉丝
10
只看该作者 7楼 发表于: 2018-08-15
请登录后查看
离线devcang

发帖
18104
M币
9149
专家
20
粉丝
97
只看该作者 8楼 发表于: 2018-08-15
请登录后查看
离线mydust
发帖
93
M币
917
专家
1
粉丝
10
只看该作者 9楼 发表于: 2018-08-18
请登录后查看
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个