找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

遥控器解码

[复制链接]

6

主题

32

帖子

107

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
#include <reg51.h>
- `% U, ^- P; t#include <intrins.h>
7 D4 i( L9 M! U2 nvoid delay(unsigned char x);//x*0.14MS4 {! k) w9 I" O: @- t% U. |
void delay1(unsigned char ms);- v/ a( f, Q7 t9 n. h+ q7 m
void send_char( char txd);/ U% Z& {0 ~# b+ f: q) z4 F) ^
sbit IRIN = P3^2;//INT0(外部中断0输入口)# K! i0 D- q/ N% I0 E, X
typedef unsigned char uint8;" I' ?6 o6 \+ i
unsigned char IRCOM[8];. N( N  ~7 I& w' G2 B3 T
unsigned char code table[16] =
0 l& s+ H5 A* ~) b) r; s" W                    {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
5 K8 E6 ?* K& N' x- S" v2 s3 o                                        0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//16进制的0--F4 H+ _, ?3 x, B# \+ }' |
/*波特率:9600*/
3 e3 o; r- B  ~% I& n! P) B" ^; b: Xvoid uart_init()6 _9 [# f8 G3 Z3 p# k) ]
{
6 P( n. n& n7 I2 z! ?7 i4 d& k        TMOD = 0x20;                        // 定时器1工作于8位自动重载模式, 用于产生波特率5 T6 ?. r5 D( B; h& E
        TH1 = 0xFD;                                // 波特率9600, q; n: }7 R9 p7 r
        TL1 = 0xFD;& }- u# z1 d5 [  P
       
% C6 A& i$ Q8 l8 r  z  i0 ~        SCON = 0x50;                        // 设定串行口工作方式6 C" A2 u8 m6 ~& x* P
        PCON &= 0xef;                        // 波特率不倍增
0 \) W1 q8 Q# E( P               
9 b( g! P% T. I1 \* n$ E        TR1 = 1;                                // 启动定时器1
: S* C% Y8 ^- |1 T8 s        # E  {/ [' Y' U! Z
}
3 m( _8 l# ]- ?/*UART发送一字节*/1 k4 d1 N2 `; K
+ x# y; }5 {9 i! a# W
void send_char(unsigned char txd)
. N! A7 ]6 y. ^5 D/ C// 传送一个字符
1 l6 h2 M! E+ \3 P# E! f+ G{
: Y  w- ^1 H- Y9 L- Q1 Q  $ q0 v6 @( z- Z8 N
        SBUF = txd;7 T/ U( \% m) |- j
        while(!TI);                                // 等特数据传送
2 |9 e* b7 P& [2 `8 a  D        TI = 0;        / w: X4 M0 r6 T2 P
                                // 清除数据传送标志1 U# H9 a; d% a. ^
}
* B. r2 w- Y) ~) Bmain(): g7 f5 `) T' M6 c1 `% T) e, W
{
  N' K* d) t' k1 b; w* S, u           , q2 N0 W" x: N, S7 L
IE = 0x81;    //允许总中断中断,使能 INT0 外部中断
+ S$ e; }- p* M; P5 \" J- {; @! k TCON = 0x1;   //触发方式为脉冲负边沿触发
) Y, m1 `/ o8 G" l  v, j3 O delay(1);4 w, J6 K: g  J9 B" [& |
/ E4 E7 _! @: |6 l% j
         IRIN=1;
/ |5 C5 }9 {1 ]' q) k& K             //BEEP=1;- b- h; [! a2 A" w/ U
                 //RELAY=1;! E* L3 C, V& [
                 for(;;)
: [7 }' I, n) c$ ]                 {
' z4 k! L! D3 R8 }% b2 n' C          uart_init();
. y4 r2 G- o9 r6 F                * P& i6 J# j7 z! m! l
                  }9 s- r* y+ E/ C; }1 y
                                        ) X7 Y- g4 ]  F' u
} //end main* ^" c6 r5 E+ h4 u5 J+ D6 d
//以下是中断服务程序+ ]# R3 R# Z4 U; a  S+ Q
void IR_IN() interrupt 0 using 0
. }' Q$ B6 F( D" {& L{/ y) v  O/ T3 U2 t+ h$ f' D& U
unsigned char i,j,k,N=0;//无符号数据单字节整型数或字符型数据: i+ E+ z5 S4 N( o2 |( f
  EA = 0;//禁止总中断
: D! y; q. N. H5 L& J% y9 c0 ^6 S+ MI1://标号/ s* J2 c- T* R# B9 ]
  for (i=0;i<4;i++)! I/ v, o+ L$ T- x: |/ s: z$ f7 g7 k7 A
   {* \; z, {  n6 N- ]) ^
    if (IRIN==0) break;' ?+ W& v2 Q: R* E3 G; G
        if (i==3)" J# O! C4 P' s
      {EA =1;return;}//如果i等于3就打开放中断
! O. i( Z3 D* h/ S   }
! H8 {8 R1 @% u4 E; [' c; D& |  delay(20);7 C; d4 h4 A- I) c
    if (IRIN==1) goto I1;  //确认IR信号出现
8 P4 B; Z5 T; H. |  while (!IRIN)            //等 IR 变为高电平
- z, D1 U. Y- Z- R( ], p  `    {delay(1);}# E3 D9 k; t# V6 H
3 B4 L# l9 @, A+ j* x* a8 W
for (j=0;j<4;j++)
( z( \5 d' P/ F. F. m1 Z { . x( n) S3 x( }* e# M' o4 \: C5 |
  for (k=0;k<8;k++)! y* Z1 \) V) h9 s7 y5 y. S
  {5 C2 h# i! W- P2 K
         while (IRIN)            //等 IR 变为低电平' q+ Y$ T3 N' M2 z- ^+ [
            {delay(1);}& x( \6 e4 X2 G" A7 z/ ~
           while (!IRIN)          //等 IR 变为高电平
1 R; ?" p7 _* d( [. Q            {delay(1);}
  j# z5 I  H- P4 a; _     while (IRIN)           //计算IR高电平时长
9 F- @& x9 H2 s# w8 j      {                           //如果IRIN等于1的时候就计算delay的个数% `+ p0 |3 I" O8 g5 \# r9 u
           delay(1);9 ?* r9 b) z1 r3 d
           N++;           
& C: a. x# M* j( q/ F. \           if (N>=30) {EA=1;return;}
" x' M0 k: x" T8 W4 S7 n+ J5 Y          }
: f: R5 [+ b7 d( f     IRCOM[j]=IRCOM[j] >> 1;
0 j) `( g+ G% ?( q9 a$ `, I     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
, E" @6 J$ \. g# p$ ]; n, a- m     N=0;/ q* u  x  C% F- a# V
  }//end for k) F% }2 r: J5 I: x: N1 W$ m; n
}//end for j
0 Y$ B' g) h: V: n# Z   ; z5 U. i4 `8 ^7 h/ k
   if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
: P5 B6 G; S3 N& s! `: h4 L: L# N   IRCOM[5]=IRCOM[2] & 0x0F;- H0 q- o; N9 B
   IRCOM[6]=IRCOM[2] & 0xF0;* x0 G7 i6 W5 i7 L- C6 E
   IRCOM[6]=IRCOM[6] >> 4;
1 A; V0 `9 [( _6 D! j9 n, O  // beep();
( F6 V1 n* g1 i: Y- s   EA = 1;
' g. M: g+ o) e8 G% k0 @* d' c/ O8 [" I2 E: N( t) Q3 O: r
          send_char(IRCOM[2]);  c3 M) ]1 a3 ]" h! d1 l% |3 B

' F4 J3 b! r! F) H% ~2 q, [3 Q}//end interrupt8 Y' c8 n+ m3 w; W- T

$ t: b# Y5 w1 Z$ `4 d' q. Y7 m//下面是延时程序
1 X: H! ]; q$ E6 j; k% b2 Vvoid delay(unsigned char x)//x*0.14MS,unsigned char x是参量
& h, R5 q2 E* R9 s8 w# g: B{
* n1 v7 |: n  d8 a0 ?! ?0 ? unsigned char i;6 t( o5 j; a  w( |) u, h9 Z- \
        while(x--)
* {8 |5 @. j3 \( `6 l% v$ n2 Q        {+ w$ p' I8 t" k2 O4 T
                for (i = 0; i<13; i++) {}7 c( D* I" \4 p0 K5 b4 d5 f
        }
9 z% X5 `/ p5 ]1 _}" X! ~: P7 m, o
# ~9 b- P6 n/ [- m& ]( \
//下面是延时程序( b# t- M& b/ E9 F
void delay1(unsigned char ms)//unsigned char ms是参量1 l2 g  r$ Y, ?7 c7 K5 _
{0 ]+ n+ L; k% Z9 s# _8 v) G" W; I
unsigned char i;5 n- }, ?# X4 M, R- t: A/ E
        while(ms--)
$ G9 r: p( o% N        {
+ ~& T1 b& z5 l; R1 a9 T/ _                for(i = 0; i<120; i++)+ o7 E( r9 v& ]8 U
                {6 j* R- [& v6 T  R
                        _nop_();% [: g+ n! H5 I; H: J' f
                        _nop_();
+ L4 ~- E' K" K                        _nop_();
# b- D0 y( c$ s3 g: M                        _nop_();
8 `0 G7 d% b$ f5 R                }
( D0 q" y% J. T( p3 [. p" I        }- Y$ M! D( m9 ]- J+ 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, 2024-11-23 09:32 , Processed in 0.060694 second(s), 31 queries , Gzip On.

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

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

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