找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

遥控器解码

[复制链接]

6

主题

32

帖子

107

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
#include <reg51.h>
. Q7 a0 V+ f# Z2 y- q0 |) x#include <intrins.h>
7 F' o3 p( y/ I/ Q+ Q/ G- e4 dvoid delay(unsigned char x);//x*0.14MS
) G; x' k" M4 j7 a- X. }void delay1(unsigned char ms);
7 Y# Q7 y! Z4 [1 }" g, y& z( mvoid send_char( char txd);" A9 `( v8 }3 \. W% ]* l7 |
sbit IRIN = P3^2;//INT0(外部中断0输入口)
; _8 l7 V6 _7 W9 Wtypedef unsigned char uint8;
  L1 W# h# n  Y7 t7 Ounsigned char IRCOM[8];& t( K1 e7 g9 @* @8 f
unsigned char code table[16] = - n7 H, O6 \0 J7 A4 E2 t
                    {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
! J% s/ ~2 L! o, t0 f                                        0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//16进制的0--F, U/ K/ U7 M( i" @7 \! ~
/*波特率:9600*/
& H9 h- a0 ^( L& o' `* R& h3 Wvoid uart_init()
) |, C- y  ]" r4 ~  b{
2 B2 K# e, R& i0 z, b% d# J        TMOD = 0x20;                        // 定时器1工作于8位自动重载模式, 用于产生波特率3 K2 {4 c+ S' s
        TH1 = 0xFD;                                // 波特率96009 z: z; n0 C; E& `* K1 R! \
        TL1 = 0xFD;0 a/ T; m2 L4 m2 ?: P5 n
       
7 K3 b$ t: C, g& l) H6 k: B( `        SCON = 0x50;                        // 设定串行口工作方式
- Z+ d! Z" U% Y% e" n# }; x8 p        PCON &= 0xef;                        // 波特率不倍增+ o4 ?, E4 ?! \
               
3 n' p' n, H, Q+ ~        TR1 = 1;                                // 启动定时器1
1 g  \" n" O3 m5 j; S- ~        + \0 f3 G, J  N8 `
}
" ^( Q) u8 s1 E4 S5 c8 ]7 C+ K/*UART发送一字节*/, |  Q( R" E; O
- s8 m6 K. U* F8 @; n
void send_char(unsigned char txd)8 R( d" y! ~- h( J2 b1 y
// 传送一个字符" l& z: \9 @! N, v
{/ j* o8 n0 d, p( P* R- y
  
% I- I4 H/ B/ `' A& y( c1 Z        SBUF = txd;
/ L3 C# s4 R; ~& H        while(!TI);                                // 等特数据传送
/ |9 |* `1 B$ [2 I0 m        TI = 0;        ) n8 n* H# k& e/ A% B
                                // 清除数据传送标志  c+ v5 G5 R! W( s0 X0 P
}
9 w2 P+ h' |7 F" \  r5 J: Omain()
6 ]% J( D' ]7 |5 ~" B{
' T' d! j7 e6 L           $ T% K: O) k$ P8 {3 E2 B) f9 L
IE = 0x81;    //允许总中断中断,使能 INT0 外部中断
2 x! _( x7 g% \/ | TCON = 0x1;   //触发方式为脉冲负边沿触发/ T* P! q, ?: V8 |2 D, I. x! S
delay(1);
( e- |& E1 {+ W" w8 y7 c5 _ ' U) c8 K/ w% {4 ]4 r; g
         IRIN=1;
3 O7 {7 [5 V9 p1 D             //BEEP=1;; p/ S4 X/ G5 a2 ?5 u& ]
                 //RELAY=1;
+ ~3 V) Z2 M' I  L- o                 for(;;); t  h2 p+ B/ H9 ?
                 {5 o( U$ e7 a  ^, k. a* M6 Q
          uart_init();
" K9 I2 U) m5 p& `) M                ; F/ H- k; o& q
                  }
2 v, f' o( W  ^+ s( W$ K5 g+ ]                                        ( J9 a1 V  L& i9 s* H
} //end main" i& V5 P/ b) n, X& c1 w, A
//以下是中断服务程序
, U3 y( C  @8 H2 zvoid IR_IN() interrupt 0 using 0
2 N" @5 }0 [6 c, Z0 S/ f{6 R4 E# U/ J6 \0 n; A" R1 i
unsigned char i,j,k,N=0;//无符号数据单字节整型数或字符型数据
6 ^7 |4 q/ \0 `/ g  EA = 0;//禁止总中断- h: }6 Z! ~' @3 T3 v/ B
I1://标号1 H: n+ |& u! i5 g/ i. j" t, H4 K
  for (i=0;i<4;i++)
, B. \4 Y. j1 P2 c3 A   {
7 R% H/ X6 p: W& O    if (IRIN==0) break;
  o7 j! H5 A/ h+ [+ S, P        if (i==3)! S# I6 K5 s. p+ t) w9 A# V
      {EA =1;return;}//如果i等于3就打开放中断
/ F! w' S5 s% t% l/ }  F1 I$ j8 L   }
1 [8 D7 Y) O) Y  delay(20);7 o6 v4 H( V' t. s
    if (IRIN==1) goto I1;  //确认IR信号出现
- B9 c  i& E6 R* Z  while (!IRIN)            //等 IR 变为高电平
5 _3 Q% ]* X" j    {delay(1);}5 v2 f; V- \( f/ O7 m
8 R# q' a# o5 \, f3 W
for (j=0;j<4;j++)" l' ~: O7 g/ |: \
{
8 F" M( l5 _) {; n9 |  for (k=0;k<8;k++)
8 P6 m* }6 }* P5 C0 g  {8 r8 A4 x; L* ?
         while (IRIN)            //等 IR 变为低电平1 w% ]6 a; y% W& n/ f
            {delay(1);}' a9 n' ]" d9 ~9 _! x+ T
           while (!IRIN)          //等 IR 变为高电平
/ O8 Y. z" G9 I3 p) n6 B1 L8 P            {delay(1);}
- x1 |; C0 T) i- Y     while (IRIN)           //计算IR高电平时长& m* J# i& S& V; F. |
      {                           //如果IRIN等于1的时候就计算delay的个数
6 d- [6 T/ b3 l9 e           delay(1);1 [  Q  e$ x% i0 f& w+ c: j" s6 K
           N++;           
9 e4 E) l$ o* `           if (N>=30) {EA=1;return;}
- k; J/ b2 n% }* Y1 q3 U          }9 g$ `8 O* R9 Q* v( R
     IRCOM[j]=IRCOM[j] >> 1;3 F( l' N- o- x8 y
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}# `- w2 ]; e1 F  p
     N=0;
6 K6 }; B7 Y4 X$ v2 j. ~  }//end for k
9 K, Q4 @9 o5 X+ c4 o }//end for j
6 @5 q# D$ D$ O- N   ! `6 T9 p2 P' O) D/ A" z
   if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
* k* g. |7 f" |* D2 `8 o9 Q1 a1 T2 T   IRCOM[5]=IRCOM[2] & 0x0F;, H+ U3 K0 h, M
   IRCOM[6]=IRCOM[2] & 0xF0;
7 h. y7 J$ [: s: o- C2 W1 B) n   IRCOM[6]=IRCOM[6] >> 4;; R4 Y! Q% q, _6 h
  // beep();( H6 h& @. W9 C0 \5 J
   EA = 1;+ q9 L! ~' t  B' i( ~
8 j) }: k; V  N0 K# d* M
          send_char(IRCOM[2]);2 ], O: X$ T9 _5 {8 e7 X

% \, n) m& d$ k( b7 a" P}//end interrupt2 ^9 N- Z* g7 D5 ^, _) m2 q6 T
: _2 P3 I6 v0 k8 S2 h1 [
//下面是延时程序* L, a& C( j* c3 J0 D4 D. O; k
void delay(unsigned char x)//x*0.14MS,unsigned char x是参量
5 l; M! O7 N$ m) ~  P( O0 ~# N{
; G  d2 a4 J" i) }( a6 N/ [2 L7 t' G$ } unsigned char i;
* {5 D) E5 W. f( I! i         while(x--)
9 S3 x- Y- F8 c! U! L; g        {
0 ^5 Y" P" G0 P# i. \                for (i = 0; i<13; i++) {}2 w) i* @# |# C# t9 l6 |: ?9 u: D
        }5 |0 F, S" @* c
}
- }- J4 K3 C& f: b* b5 T4 a. g
: Z. A- I# C% ^8 A//下面是延时程序* {& B' i2 F! Y( Y  R( k
void delay1(unsigned char ms)//unsigned char ms是参量
8 L  m6 ^; W% h* n( L{
; s$ v' C# A3 _; K unsigned char i;7 L( E$ w: P0 m& V+ {  y
        while(ms--)
# E# v) i) S, t- {        {
3 T& h6 M1 I& y                for(i = 0; i<120; i++)+ C4 a. y4 k3 k$ l+ ~# l$ l3 N) x/ b
                {' w) K( A+ }& q1 r5 w2 _
                        _nop_();
3 ~4 |0 y- a  H* r5 w1 B                        _nop_();
" U6 ]# K- R3 @( x6 D) F                        _nop_();3 s0 D$ @" }9 m5 R8 f& m; J
                        _nop_();
, l. V# G* f% S                }( [( t$ y  `! o; Z: x$ e
        }* O) L/ H0 `3 S( V
}
分享到:  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, 2024-11-26 22:15 , Processed in 0.060369 second(s), 32 queries , Gzip On.

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

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

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