找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 458|回复: 1
打印 上一主题 下一主题

遥控器解码

[复制链接]

6

主题

32

帖子

107

积分

二级会员(20)

Rank: 2Rank: 2

积分
107
跳转到指定楼层
1#
发表于 2012-8-19 21:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
#include <reg51.h>
" q( |! t/ O& Q" d# d4 Z1 W" \#include <intrins.h>  q. F' F2 u) @2 m! _( X1 `& B
void delay(unsigned char x);//x*0.14MS
! \6 ^3 A. ]0 k' |; w: Qvoid delay1(unsigned char ms);
0 O. v  D  F$ ^1 R( R5 y& `' R9 ]void send_char( char txd);
4 f* T/ A& x! ~; H* ?) k4 l1 qsbit IRIN = P3^2;//INT0(外部中断0输入口)
: `" T6 @4 e! L( c% N; dtypedef unsigned char uint8;
/ t2 x* o3 k  E+ \unsigned char IRCOM[8];
5 P! }$ l2 c* H$ }$ Xunsigned char code table[16] = 2 E; L3 ^, h' r$ _2 h
                    {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
6 T4 f8 j2 |5 a1 h! ]3 r* C9 Z7 e0 O                                        0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//16进制的0--F  T9 g8 m  f7 ~+ |" O3 @) `
/*波特率:9600*// f$ U0 q* K* g
void uart_init()
5 K& d4 l  z4 o4 n3 i, U* g{7 v& o. f+ ^6 r( P
        TMOD = 0x20;                        // 定时器1工作于8位自动重载模式, 用于产生波特率
8 f/ P, n; Y4 Z4 F" e        TH1 = 0xFD;                                // 波特率9600
' [0 _, r3 Q6 b# v        TL1 = 0xFD;
& L5 s; r# s) t' i8 w2 w9 j        0 B: z$ A+ J8 o& N0 N
        SCON = 0x50;                        // 设定串行口工作方式
$ Z& A$ q( b; R% E: Q$ D        PCON &= 0xef;                        // 波特率不倍增! J& u7 u- F7 X: H: b# o( K1 S% e
                % ?) Y$ V8 C& M( S
        TR1 = 1;                                // 启动定时器1* ^! `6 F8 N! w+ E# R
          C+ h4 u5 q6 a; ]* A
}# s' Z9 x6 k4 i) h6 Q# ?' j' R4 D
/*UART发送一字节*/
+ \1 r3 L8 j/ [% _* F0 o  `: |" [, g3 Q( s  q
void send_char(unsigned char txd)( u* s) |0 t: I% Y8 b# u) x# D
// 传送一个字符
1 ^& p# U/ ]3 ]( B# j) j{
% _8 p. [  Z2 h  
7 I+ ~+ e/ R( m# ~0 b$ m8 O3 `- e        SBUF = txd;* N9 k9 v3 E+ I# \/ F
        while(!TI);                                // 等特数据传送' ]/ f  S/ L1 i# Y0 O
        TI = 0;        , G9 r- s0 ?4 [5 W
                                // 清除数据传送标志
8 b, K# C0 s4 P5 m}
- \, n+ g  x; x/ `main()
; Q$ v& l" C9 H8 w{! W7 p) }& ~) K& W
          
3 A/ _9 m+ \  L- d, K IE = 0x81;    //允许总中断中断,使能 INT0 外部中断
$ X7 Q7 j7 I1 {5 M" J" l TCON = 0x1;   //触发方式为脉冲负边沿触发2 }! D! [5 d. ]
delay(1);- J, }' i: ]2 m

& v. C& V% O! b3 B& {& p0 E: J* g         IRIN=1;) |8 ?3 o2 i- h4 n
             //BEEP=1;
: D8 L% M; y) r: Q                 //RELAY=1;
3 X1 Q  S: d3 {$ n& ~/ v/ f                 for(;;)
6 k3 U- J+ c( j& F; w6 c                 {
- q' s1 F- T1 t0 A0 |% \, ^          uart_init();0 s' M7 i1 X- T6 U( `3 M8 Q! }- m
                $ x$ s- V# B/ z3 a* Q2 S
                  }0 z0 k$ P1 u" }+ Q  h, E  n- X
                                       
: u9 ~2 o4 y$ q9 s( u} //end main) U$ z7 p1 s# U9 m5 w+ }
//以下是中断服务程序/ i1 ~8 g7 k( C, F- k. B: E# {+ A9 G, ~
void IR_IN() interrupt 0 using 0
( B' N0 C% |1 x8 A7 M{
9 }8 N6 u) {; q3 K2 B unsigned char i,j,k,N=0;//无符号数据单字节整型数或字符型数据
, v3 Q3 q# y; ]& P* h& f; e7 ^: M  EA = 0;//禁止总中断
; a, N* N: C* {# O- l( ^. `I1://标号$ q' L0 O" y* N
  for (i=0;i<4;i++)* A  W3 o. A0 l$ o- q* Z2 ~
   {4 G: @. F. N% O/ \: H9 @
    if (IRIN==0) break;
$ w% G, g9 [" p3 \        if (i==3)
" n2 R# Q0 V3 P      {EA =1;return;}//如果i等于3就打开放中断
( p4 D5 o* C& e! k6 A. o( O   }
2 ^: b# q# \& k( |) N. Z8 J  u  delay(20);
+ s5 I" [, |0 j1 \1 P1 j    if (IRIN==1) goto I1;  //确认IR信号出现3 d9 u+ }9 I2 J) q$ t8 g
  while (!IRIN)            //等 IR 变为高电平
: x6 S: k& s! \1 A; ~. G4 C( I$ W$ w+ G    {delay(1);}
/ d' W5 U' q5 L7 R' H9 ~3 H3 n
  U  ^# t) h/ l4 j' C* j1 H for (j=0;j<4;j++)
6 D8 e5 |8 D  Z0 R# x' y { 0 Z! Z* G& s% b% J
  for (k=0;k<8;k++)! Y3 c8 z0 Q) o2 {" r% S9 \8 S3 T
  {7 X, u/ l! ~# h4 X3 d
         while (IRIN)            //等 IR 变为低电平
! s! X1 l6 \0 g3 a            {delay(1);}! x% O' j4 N/ Q) z! C% _
           while (!IRIN)          //等 IR 变为高电平
" s1 D7 d( K, C6 T            {delay(1);}* g& a* D; P5 p+ i) b6 N
     while (IRIN)           //计算IR高电平时长! B, n# u& Q2 M. R# }
      {                           //如果IRIN等于1的时候就计算delay的个数
5 r7 b1 p  p( n6 m9 [0 P) C           delay(1);0 ~5 l! w$ d, l$ D8 Q8 d
           N++;           
5 ~; Y# @- E. d           if (N>=30) {EA=1;return;}. B* z0 L. Y. [8 q: }* i
          }' m& E+ U& i% w4 `
     IRCOM[j]=IRCOM[j] >> 1;8 p* [  }4 r' P6 m% F
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}* e% `$ R" P) w/ J* c6 K$ Y# U& f4 X. p
     N=0;
, f" _0 D( S- D$ B  }//end for k' J# U2 Z: a8 Q; U
}//end for j
/ j1 t- m* ~, W6 d4 Z   
/ G9 M! a0 S: o4 H( e2 S, C   if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
5 w  I7 W) z) i' W- H) B   IRCOM[5]=IRCOM[2] & 0x0F;/ T) }0 D2 w' N" K# W4 t0 o
   IRCOM[6]=IRCOM[2] & 0xF0;7 I* `5 f# P) B% ]7 R& A; [( F
   IRCOM[6]=IRCOM[6] >> 4;2 |0 b) l! @2 x
  // beep();* B) O7 A! Q3 t. i% [
   EA = 1;% w2 }8 g9 ?, |, w$ E
' F4 ?# o1 Z$ y' C6 k
          send_char(IRCOM[2]);8 t& {9 s5 `( V( z9 l3 b

) q  t' U  p2 [' o7 {}//end interrupt4 M2 Q) W# M9 X) Z7 d3 |! m( q

' X, \, n5 X% r3 P2 A( d& O. H4 j//下面是延时程序( z/ k$ Q' ~) V  h
void delay(unsigned char x)//x*0.14MS,unsigned char x是参量
  ]. A  t9 r" E( Z{3 H  Z! V' e. c' R
unsigned char i;1 Z" \: H5 M! `3 j
        while(x--)
; @8 l+ J  o1 z# t8 Q        {# M) r, H! i  k! a% i( A" G
                for (i = 0; i<13; i++) {}
& j8 K; A9 {' e* A0 C        }/ C' S$ T& n! m' a
}2 P6 \# Z# ?% O: v( H

1 P/ Q! ]/ {, @; m//下面是延时程序( p/ E- S( j6 w  s
void delay1(unsigned char ms)//unsigned char ms是参量
4 `8 L7 L. W2 B' k3 z" T  j{/ ]$ j+ ?& c4 S0 A+ {7 t
unsigned char i;% t8 R3 h9 F' }0 D: \
        while(ms--)5 L$ I" ^5 X0 c1 x2 q3 f
        {* E3 q7 H# Z  u' _6 o3 @  p
                for(i = 0; i<120; i++)( O* |! [# e+ q1 R0 e6 B
                {0 `0 V% A) d8 |( @  v
                        _nop_();
' `2 u. e% p' a( O1 w                        _nop_();
6 A3 U$ t- f: Y4 U# Q                        _nop_();. K! l5 L. z" j2 Z+ I1 |, ?
                        _nop_();/ _: L3 K- ?/ f( z% t
                }
& W5 h1 G5 |* P! G( _. V& a" i5 E        }
6 k$ q/ \# c8 \) y7 x  t}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

16

主题

528

帖子

2401

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2401
2#
发表于 2014-7-18 13:56 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-19 06:59 , Processed in 0.056126 second(s), 31 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表