找回密码
 注册
关于网站域名变更的通知
查看: 508|回复: 2
打印 上一主题 下一主题

红外遥控接收程序

[复制链接]
  • TA的每日心情
    郁闷
    2021-10-11 15:26
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    1#
    发表于 2021-8-2 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    本帖最后由 QQ172165232 于 2021-8-2 16:36 编辑
    ( @6 x- C% V& v4 Q5 }9 `- h) `0 T5 D
    //=========================================================
    & ~8 q& N* p. j, ^1 m# y# g" u#include "main.h"
    & o( g. _6 u& H//=========================================================/ `/ Q% z* @0 A3 V* ]. J
    #define RXMAX 4
    0 \$ C0 R6 j2 m  R! U7 o* J0 s* Z//=========================================================: V; @8 l1 |( b% }) p( D
    u8 IRBuf[RXMAX];) k# U* h$ Z. N7 x* q+ h; ?
    u8 IRBit;& \! \/ u% E( X) _, t5 K
    u8 IRByte;9 v" F- {" o# q% n0 b* [; o
    u16 IRHTms;
    ! {9 q4 u% M8 g2 |0 nu8 IRLTms;1 q- T* J5 y4 |; @* ]7 r+ Z7 C
    u8 IRData;& k- r! Q7 U% r& p- n1 m% r
    //=========================================================, z1 E0 ]' j9 z/ r
    void IR_Rx_Drive(void) //10ms
    - |; z, r$ }  J2 r{
    : M1 Y$ ~; Z' m    if (IRByte < RXMAX)7 Q- S/ b  J) m0 N% l% X, a
            return;
    1 D5 I/ R& S; |6 H8 I    IRByte = 0;3 D5 ?% F& g  z* ^
        if (IRBuf[0] != IRAdd0)
    5 K) M+ S% I3 }3 E; z        return;
      b" |7 k* F; E8 p    if (IRBuf[1] != IRAdd1)
    / G6 x$ k  T5 d$ \4 B9 Q        return;, w9 i# _/ K8 Q
        if (IRBuf[2] != (0xff ^ IRBuf[3]))$ Q+ M0 B! H4 Z) X1 i
            return;
    $ n9 b. j( l5 V4 i+ g7 q) P    if (IRBuf[2] == IREFPOWER)
    4 d" m0 B1 B7 Z8 ~    {4 }" O8 ]& n; h% w
            FbDebug = 0;2 F# x, F% M+ B2 C
            FbShowVer = 0;' ^2 s( D& _8 M  e+ \* \0 c1 H
            if (ErrCode.Byte)' o, F) [9 k1 {+ \
            {0 e, s: G8 @# B6 D, w' C, F! |' q
                FbOnOff = 0;$ H1 T/ n* F7 p7 r" i* n; {9 M
                FbDispNG = !FbDispNG;
    + e* Q3 _. G* Y( @            Buz_In(1, 10, 10);. X4 _; j+ c6 v4 x
            }
    / C  c8 O3 ]2 o: l        else if (FbOnOff)" x5 X" \1 v+ m" c( ?
            {; ^, F: w( F( s& A6 F
                FbOnOff = 0;' E( h7 ], t& {
                Buz_In(1, 10, 10);
    # T& y8 q9 v- e4 q        }
    ( K- y* J; d/ Z' E6 c) @        else7 q2 L9 t! _+ h# Q3 d% o7 r
            {$ n2 S( i3 j' X( k* v
                FbOnOff = 1;
    # w1 I. {) r+ V2 G; d% C            FbSleep = 0;
    + Q# h4 f- }, f0 ?            if (HumMode == 0)$ Q  d3 ], c$ d/ f7 V- T
                    HumMode = 3;
    & [5 Q2 X1 X4 B  \9 G: ~            SetWork = SETMODE;
    % y* R& k5 @- n            SetTms = 0;, h) n0 @; [7 B$ C; A) E' ~5 B2 U1 q
                BlinkTms = 0;: I+ y# w  }& n  V0 y; _, @
                Buz_In(1, 10, 10);
    1 W3 W/ t$ Y* p& F, X# ^3 Q0 Q        }
    - S) H! U  w1 V) W2 |    }
    & H. }  Y/ x4 s3 N    if (FbOnOff == 0)
    ' j' H6 L+ l4 M1 }+ E        return;
    * @2 O+ E, D, g/ x% B- O* }/ a    if (FbSleep)
    ! \9 w+ R5 x) V* {    {
    : a7 I. [  N; T- G6 B8 d0 W0 ^. |        SetTms = 0;; c& p* ]* y# n, R% n+ y5 t
            FbSleep = 0;$ T. [: V: K/ B, H/ S0 }
            Buz_In(1, 10, 10);0 K6 d2 c6 z. O. `( F& Z/ e5 J0 `
            return;. g/ ~, Z8 G, @
        }5 y- u) e/ U' W
        if (IRBuf[2] == IREFUP)- e- S7 u! o4 @% X: _
        {; r, l' R' }5 ]/ B" ~4 N7 [/ Q: T
            if (SetWork == SETTIME)( S- M7 {( e; e8 M! \
            {- S: {9 Z9 E- n& j/ |
                SetTms = 0;( S& q) }  c6 m9 r& ^' t' _! G
                BlinkTms = 0;
    ' v9 ^4 [& q" l0 i            if (TimeSetH < 12)2 T7 @! [+ T! {" W! B
                {4 L2 u4 n6 y# |# ^$ M) q% g1 i% Y
                    TimeSetS = 0;$ B6 q9 q' i& {
                    TimeSetH++;5 s% D% X$ v, R- v3 F: S1 B. E
                    Buz_In(1, 10, 10);) T" ^  n) o4 q- [! ]; s6 T. S
                }
    8 Y6 W5 ^# S! P; {            else0 x( c( t1 \3 R9 [3 ^, ~) n
                    Buz_In(2, 10, 10);/ n2 j) M& Y8 Z" a( L
            }7 s5 W. C2 p* [* S! E# N
            else if (SetWork == SETHUM)
    - a, |5 O) [- w  O2 [        {' O  ?2 x* v9 c% l
                SetTms = 0;
    6 \  B! a2 q: r            BlinkTms = 0;( ^0 [! U% o' ?1 H
                if (HumSet < 80)% [$ l8 j) R4 l: Y3 D
                {
    , J* d! `# |5 j' U                if (HumSet < 50)! @; X& a' R+ q1 ~
                        HumSet = 50;% q1 u3 C( [/ E
                    else% ]! B1 I$ U: m+ ?* y, M
                        HumSet = HumSet + 5;+ g8 H# b  X* p0 p  m9 J% u
                    Buz_In(1, 10, 10);
      s7 i6 E( @" K$ N# `$ R            }, K0 C5 U! G9 Z' ]- \
                else
    0 Q: o- r2 f  t7 \, d0 M9 ^: p                Buz_In(2, 10, 10);
    / ?; {" w8 N) w( E" z4 L        }9 B$ c( Q* d+ }
            else. C5 h8 q9 Y7 ]+ g  W* u. F1 m
            {- a8 n; o( m# _! y) @- a
                SetWork = SETMODE;
    : x9 _% Z7 k- ~7 M            SetTms = 0;
    4 k, o  D3 ~. D9 c' u            BlinkTms = 0;' l0 k/ M# j# y
                if (HumMode < 3)6 X4 y3 K9 {  H8 N: I5 |
                {, O* a& H$ k' n" o: W4 [
                    HumMode++;
    " A! i0 C1 W9 q: `/ e                Buz_In(1, 10, 10);
    / r2 {$ w; ]) e3 s            }  p+ d1 y. ~3 l- `/ u
                else
    1 s( t& d9 r; }                Buz_In(2, 10, 10);" a( P5 F- F$ b1 r/ m5 W
            }
    & f" T" H+ N4 l" a    }" M# m9 u1 q3 Z/ w& _) z
        if (IRBuf[2] == IREFDO)9 F# I& }  r! ?4 Z6 A5 h- y0 P
        {  R, h6 `5 C4 e# s- B  Z
            if (SetWork == SETTIME)
    % s3 r! e4 T. I4 T: B; h" }, W- d( S        {
    4 K/ V/ ?- }% ]% B/ t            SetTms = 0;4 _$ l) C1 x* Z# G8 q+ W
                BlinkTms = 0;0 C, o- V- I( C1 w9 V* T7 l0 z
                if (TimeSetH)2 E+ ~, N, I3 M4 B3 k9 m
                {" T7 K/ T3 _* a* h
                    TimeSetS = 0;9 k' O0 U  ?. O# v0 ]. i: A
                    TimeSetH--;
    & i. L) B  ~$ z* Y7 g                Buz_In(1, 10, 10);
    8 z5 Y* j  D& W! s3 z" j( X6 q* l            }. I" I1 V1 c6 B
                else
      e" \& @3 R# \7 D1 m                Buz_In(2, 10, 10);) P4 \9 ~3 r7 o( b% z# r
            }
    / U1 m& Q  f" A: s7 X# D0 {        else if (SetWork == SETHUM)
    1 g5 F& k" D& }! P" _" R- A& g        {
    ' {2 @- z' V) ^$ e6 R) |            SetTms = 0;2 z9 L/ C+ _; ]; [. @/ V
                BlinkTms = 0;. x# M6 v$ }* g3 Q4 l2 B' v* a! n, h4 i
                if (HumSet >= 50)! c+ ~9 I; }' F2 n0 b
                {7 {/ A4 E. s, m
                    if (HumSet == 50)  g' f. B( h& _4 Z. {
                        HumSet = 0;
    ! {  p6 l; z: `8 Z                else
    5 s3 S  C3 {, V, x/ e( z! [$ |- D6 m                    HumSet = HumSet - 5;3 d/ |+ Y0 @- b- w% R) N; m
                    Buz_In(1, 10, 10);2 G/ N. o; J7 }6 D
                }
    + @4 ?% W. K3 X            else
    % x/ k  L1 s. z9 h  @' ]  O3 F                Buz_In(2, 10, 10);
    4 b3 s& o- ~3 B- y! J/ V( }  S        }
    ; T8 i) U. U' k  N9 r: r        else
    % _& V* s4 U; j8 j. I        {9 A7 f) X2 J2 F+ ?; O
                SetWork = SETMODE;3 Q7 p( f6 U2 I
                SetTms = 0;; N! ~/ @8 n+ s2 \
                BlinkTms = 0;+ Q0 n0 A! z/ M" J
                if (HumMode > 1)
    6 e8 m5 j; Z! q1 T; E            {
    6 e$ F* r* S# q                HumMode--;. Y" P4 L4 p+ q9 V" r8 S
                    Buz_In(1, 10, 10);3 i3 x9 g- F; R( l0 C$ {
                }
    & @6 P: N0 M/ Q# u+ |            else( k* S4 y/ K. S6 M5 |
                    Buz_In(2, 10, 10);
    - \2 g9 b: p; ~- y2 q        }
    9 x& g" L8 v) Q/ ^& n5 y8 W    }# y! Z' p) H+ W) f
        if (IRBuf[2] == IREFTIME)* o4 g/ q3 k5 Z7 v/ B9 }  u/ ~# R3 ?2 W9 u
        {- J" X0 V  ]5 k" j# a3 I( o
            if (SetWork != SETTIME)
      i2 |7 O/ d+ F            SetWork = SETTIME;0 v* k+ B1 G  e+ n9 ~1 X9 ^
            else
    9 D) N, e, w3 O3 c        {& G% H# C3 a- n  J
                TimeSetH = 0;
    0 g  d) r& C/ @7 v- ]8 P            SetWork = 0;8 F, J& d9 X1 p( I& w
            }
    ( U, N  D6 K+ S2 n        SetTms = 0;' M3 Q" d2 ~3 m+ `  ~. N+ [
            BlinkTms = 0;* X% F* F9 U* J; C6 n
            Buz_In(1, 10, 10);
    : y- v4 G! z" \% Z3 s. C' ^, J4 o. z    }
    ( h' E: E* U8 J" Q2 F% u    if (IRBuf[2] == IREFHUM)
    ; v6 g8 D( |! M9 a, y! a; B    {
    4 r+ H/ i9 g. @5 u, `3 n; o! U# Z        if (SetWork != SETHUM)
    & ?" v" c3 m' E: k4 |5 f            SetWork = SETHUM;8 G+ A! k2 M, y7 j( }, z3 P
            else7 D* G( Y: t" J5 e' l. p
            {+ O4 |* K7 S# S8 X- p6 m  ]3 t
                HumSet = 0;
    $ V- f; R: D( C/ U3 h            SetWork = 0;/ f6 y3 U! j4 r. {- j+ d
            }3 d" ^+ T. p3 D+ Y9 Q2 `5 \4 x( [
            SetTms = 0;  p+ J* e$ r' Y/ \3 \! N6 p& F8 \1 i
            BlinkTms = 0;8 J. O% a. }5 _6 e  l* l
            Buz_In(1, 10, 10);
    % n2 E0 O+ X6 W' [& U5 ^. B3 b; X# Y    }- F! E- f) @- M' {0 i
        if (IRBuf[2] == IRESLP)
    . p! i1 s  T/ P& A    {
    8 Y$ S9 R2 L4 M, G: H        FbSleep = 1;5 X0 ^! n+ I$ M6 f; h
            //HumSet = 0;
    ' U# d, Q# ~% e, f7 \        //HumMode = 1;
    % b% {1 g$ G! @  B$ |5 ]5 i        SetWork = 0;' A7 k6 K+ H( O1 R: Q8 V5 j7 O& i
            SetTms = 0;6 D. _. f/ H0 P8 n2 O0 l4 a
            BlinkTms = 0;
    # H! J' A; n% C- y        Buz_In(1, 10, 10);
    ; G0 n7 M) P; J' @. D) c! {* u8 a    }0 [, M7 P' ]4 v, N9 ^; y
        if (IRBuf[2] == IREUV)7 @0 ]6 f' E. u- y# i" x8 K9 a
        {0 v3 v) y- q; a7 {* C
            FbUVEn = !FbUVEn;- F7 U6 q5 _4 V! o9 m( t4 X$ N- X# B, {
            Buz_In(1, 10, 10);
    5 Y! b$ I! K# J  O# I9 Y% v7 A    }7 t+ l9 u; j; j; p
    }
    + X' Z+ Z: L2 i% J! n//=========================================================+ o5 x2 j0 W3 `' O4 V& b
    void IR_In_Drive(void)
    5 X; K  t. S& t9 z! p{) m) N1 a/ W# S" m
        P_IRMUP = 0xFF;" w" l+ \/ ^" @
        P_IRMC = 0xFF;1 x5 }; U) i) k
        if (P_IRM) //接收高电平3 S. N  G- x! k
        {2 X3 {7 n+ g/ H1 V' v2 X7 W
            if (IRHTms < 1000)3 ~2 {0 Q$ B# |% r* L
                IRHTms++;* Z( N& S  Z5 r4 A& k1 ]8 Z+ {' [+ y
            else: i- k5 r( j* Z0 |  k
                IRData = 0;
    % u/ |4 K  m/ `) U2 t& p1 @    }8 T+ q; z; W+ e5 A
        else/ c9 f5 O6 X3 t2 f1 I) h6 J
        {$ m# S4 h1 Y5 s
            if (IRHTms >= 20)
    4 j. g, F- O* `' }        {4 _9 N' k) ^( G8 ?
                IRHTms = 0;
    6 g1 X+ C( }# X( r; V, M" M/ X/ ~            IRLTms = 0;
    - z) C& i& k1 G& @            IRBit = 0x01;7 Y3 U- C: Z- h+ s& c
                IRByte = 0;$ u2 q  Y3 Q( o9 B# w
                IRBuf[0] = 0;
    5 G  R$ P6 r  e  l- u) l: L            IRBuf[1] = 0;
    6 U/ V- D2 l3 x% p/ J            IRBuf[2] = 0;
    6 L' P( T0 k$ T2 i! a' y: i  i            IRBuf[3] = 0;
    ; w7 r% C! B* x4 e; B/ s4 U6 W        }
    ( F7 _. e7 g% `        else if (IRHTms)
    ; x) G8 A& L9 B( N* p( A        {  x' p, G2 U; A9 l  i
                if (IRByte < RXMAX)' C, F; }0 F& C  b6 @7 i4 U
                {
    2 e( `4 X- C% H1 o1 E9 ?  H. e                if (IRHTms >= (IRLTms * 2))
      \5 O) |, y% {8 D$ [                    IRBuf[IRByte] |= IRBit;
    ! o) t! s  K# @9 j( r' C; l                else4 c' {# Q+ ~1 n" {$ a: a! N$ J
                        IRBuf[IRByte] &= ~IRBit;% s+ j" |( p  d! U0 o# O  H
                    IRLTms = 0;
      v$ Z1 Y/ q6 W) k                IRHTms = 0;
    . A5 \3 |: X4 {$ U0 \                IRBit = IRBit << 1;
    / L9 H. C: [" _* g$ S/ w6 ?3 Q  o& D1 y                if (IRBit == 0)
    / f3 q/ i0 s0 Y+ u                {% Q6 f; b8 v( Q) Z* p! a1 P: S/ [# ]
                        IRBit = 0x01;* Z; D4 j, f1 B) x- o
                        IRByte++;
    ; w! r& a" L+ Y$ h- i                }0 ~8 {! @' X$ |- O$ h- @
                }7 k' i# ]! ]6 D5 g
            }4 e' f4 Q* s4 U$ H
            if (IRLTms < 250)
    , \* A- K" b$ i0 ~# T  G6 o4 v            IRLTms++;
    ; n$ e/ [4 `  n+ V% Q) y3 I    }" p  m1 ?& p  \& p9 m
    }! Y# y! f2 ]' D2 t# w7 c8 m
    //=========================================================
      l2 e1 t  ?! d4 D! Z% f: P- X7 V0 }6 K* V4 D
    / D0 F9 u3 s# Z( @6 y

    该用户从未签到

    2#
    发表于 2021-8-2 18:49 | 只看该作者
    可以去掉那些乱码嘛 具体解释一下

    点评

    125us 中断,读接收高低电平计时。  详情 回复 发表于 2021-8-19 13:52
  • TA的每日心情
    郁闷
    2021-10-11 15:26
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    3#
     楼主| 发表于 2021-8-19 13:52 | 只看该作者
    land 发表于 2021-8-2 18:49
    : Z  B: c. A& _: L" U1 j1 M可以去掉那些乱码嘛 具体解释一下
    2 c$ W# [2 R. @. `% }# X& R4 }+ C
    125us 中断,读接收高低电平计时。
    0 @$ i" w  o) Z; r( f7 Q8 |8 x( _
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-5 10:24 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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