| 本帖最后由 乡村猎手 于 2018-10-10 22:20 编辑 - b/ ^1 \! h; E% t. c 
 ; ]6 o! m0 I' U; E" W3 l输入和输出的逻辑弄清楚了,写代码就是分分钟的事了。下面是这些功能的C源码。实现的功能就是快进、进退、停止、播放、录音的功能。代码当然有很多种写法,status变量暂时还没用到,可以用在进入某个一功能时判断用,如果机器已经是某个状态再按哪个按钮以不用响应,不过实际试的时候不判断好象也没什么问题。是不是其实很简单呢?
 8 x1 ^  w, S; r$ V9 K#include <reg51.h>
 " K6 Z2 e" N. r: _) V6 `$ p. k6 H9 n" u; T/ t. G8 f( @
 sbit key1 = P0^7;) |. |0 _; ]4 x! |! y/ t/ i% H
 
 4 X: N. I- g. ]7 Echar status=0; //1:play 0:stop  2:forw 3:rew 4:rec  9:off$ f+ R( K3 A1 _! D
 
 . S2 |7 v6 C$ s+ [2 tchar recflag = 0 ;
 " |/ }/ ^# h6 }0 D& ^" N6 s9 H8 i8 I/ [
 void Play(void)) L) X& R2 O/ I& _
 {6 |1 d% T& d9 T
 P1=0X48;- R" m* u) Y' O5 @- P1 B
 P2=0XF1;* }; m0 _; O+ j% p: s) J
 P3=0X01;8 B. _! a4 s& H7 z% }% D) v
 status=1;* `, V- o2 U8 D3 u' z
 }
 ' {  _7 c0 q$ Qvoid Rec(void)
 / v$ Q( t  P( |2 o{
 ( p( ]+ w$ b' t. _4 @# S# s$ g        P1=0X48;& \8 I2 z+ \+ F+ [- ~8 _4 A
 P2=0XF5;
 - m: t( g; T* F. X; }8 F        P3=0X01;
 & R0 z! C( X$ q3 J* ?' O$ R        status=1;5 t7 O8 a* a% N  J' ~% d; R
 }" Y* `9 c' x  C0 r
 
 1 l8 W: R7 Y" H5 `" c
 . Z( ]. B& M/ U, i4 G/ _void Stop(void), v' N) f" T+ Q
 {/ B1 _6 o$ Q0 R6 G; n  X
 P1=0X8E;! z" O! \. _/ Q6 b. ~
 P2=0XF3;! Q1 v3 _6 H) N  n: f8 {$ ?
 P3=0X48;
 1 L& h2 H) @( ]; I, f9 E        status=0;        ' A9 m# l' ]$ ?! a  p
 }
 2 o. q: U: W$ A" M+ ?$ `9 c: c" F
 
 - f9 Y% f2 Q$ L  W# D% F& ]4 m% X9 h7 g/ H  H3 w
 void Forw(void)+ r; T1 S/ n! ^
 {- _1 y1 s. J5 v+ a* v+ d
 P1=0X7C;
 ! A$ @. L0 ~6 `$ j" \2 n) C" r        P2=0XF3;: n; Z1 w. n" a' U5 P$ v: l
 P3=0X20;
 ! C! C4 \8 W5 b2 I( i; Y        status=0;
 9 h/ g; u- y4 z) E+ U, ]2 U}
 & _' x$ S, q! T4 {- E! O# M% F) s' p  h4 _1 N9 }
 void Rew(void)
 , `4 g6 @$ E- }8 ~: @{) g2 Q$ m6 `$ o9 t
 P1=0X0C;
 3 v# o( k' C% e$ d        P2=0XF3;4 d% ^, S4 l4 l& F- r5 h* ~; w' `: c
 P3=0X27;
 ( ^! s& v+ {& m) d% c        status=0;
 # R3 X5 |9 G, m% w! d* G9 M}
 ( E# B% \9 m$ v1 R3 V4 @2 j* N6 ?) c! v( k6 w% }
 * Z" J6 `8 p0 ]3 R
 
 # e$ e( m) B* [$ i  Bvoid main(void)5 n* P8 l: n  H" s$ w7 k+ p" i
 {
 ) Y- F& O$ ^0 y& ~
 ' L6 q! ^+ Q3 K5 _8 W        unsigned char i;# [* t- f* E! B4 N9 {1 E
 unsigned int k;
 ' V1 q% @5 Z2 D4 H* \% s+ e//        unsigned char j;
 + K; R  J; M4 Y6 e  `        P1=0;
 k3 {  O% E# o5 a9 j& i& _        Stop();& W! v7 i9 T" h4 U2 U
 key1=1;/ G% l, w8 m) k; a7 @! C. {  `
 while(1)
 ) b' A; B1 k+ E$ \8 c3 j        {4 I( `  O# S2 M
 
 % H1 L5 u  y' m: X2 E                recflag = 0 ;4 b6 d' G1 I! @; V$ K, d! D
 for (i=0;i<8;i++). h8 F; ~" X9 E+ H% F- Q
 {# y, f1 \, N0 O( N* |% k$ h
 P0= i<<4 ;
 5 m% O! @0 k- ?; O$ z                        for (k=0;k<1000;k++)
 $ z6 w! G- a/ h! u                        {2 m& C: C0 P1 ]1 H. r8 y
 //        for (j=0;j<10;j++);
 & W) X6 ^0 M9 l  `, O4 A' }                        }. U# m6 K9 J. c4 |& E$ h& X( a
 
 % u: e! i& ?" V; K+ R  F4 R                        key1=1;) w4 B% T( Z5 p
 
 5 ^) _1 g+ T$ O1 z: `1 W. h6 h* a9 P" Q; H" z5 a& H/ ]& B1 Z+ `( B8 e! H
 if (i==0&&key1==0)//play2 s+ W6 U4 P) h, _# b
 {! x9 P" ~( j( H! B! m
 recflag=1;/ h1 ~; ]6 y3 z1 h  j) n
 }; A! P. B- o& R/ r5 J: [
 
 8 e; `) L2 K9 T' d1 _. O2 B2 A- H; W                        if (i==1&&key1==0) //stop
 ( U& B( `4 {* V  \% l                        {
 ) ?" Y% H" j) ]                                Stop();
 ) d/ T& n+ U% K3 ~' ?8 I                        }
 # g9 ~( r$ _) C9 f, _+ p; _' P2 M. C
 if (i==2&&key1==0)//play  |- l: F) P- Q
 {) ?9 K$ o5 k- _8 N3 _5 }
 if (recflag==1)
 0 @+ c. x& X' M' q1 J                                {1 ?* H. x, M5 h) \7 U- }
 Rec();1 f( R6 t4 W! ^" I
 }9 r# X1 f+ o& n; p& C
 else' Y* K8 |9 f" P9 [% c/ V
 {
 7 G) C: x# Z; ^- R. ~2 j6 T$ ]                                        Play();
 ) y( I! R* b! Q- ~4 r$ E                                }
 ) u" e9 v, z$ H: M. I4 L  t
 ) p! F8 ^8 E( x  c                        }
 ! O5 o$ n# e9 I$ W# [! r- ?' f0 V+ Q6 @+ A- b4 R" ]; q; ]8 q
 if (i==3&&key1==0)//Forw# v; r; l4 u! M$ p4 @: N
 {4 |' l8 P7 m$ @
 Forw();2 `4 ^8 m2 T' O+ x4 M/ h1 Z# }% X
 }
 ( d) _  I, V6 ?% F) O" [9 J: ?( R( W; p# @- p$ {+ J  Q, F
 if (i==4&&key1==0)//Rew
 * \  `) R7 f* o/ R) \% P                        {# Y& H) j8 h& J: g
 Rew();/ Y- M# P; b7 N! E- k( A3 B1 Y
 }# X/ r! g* v" ^3 e5 e9 z7 n" @1 o! _) r
 }
 0 u0 b! _- W# c) Z  ~) D+ C# J- R1 n( |        }+ C  {  [- I, ~# |
 n) \  P3 T( J3 N7 U' o" k# Q" j
 }
 - a/ R! N3 O# Q6 S& u5 m# X$ H! l  m
 
 - I- y( c3 ?1 a: U* K- P. ?3 \
 " G/ i9 l" N1 m- y/ F
 / T4 @7 p2 v) c. B2 ~/ p/ X
 + H6 |- [: t! ?
 ( Q3 X% H1 {' L4 Y8 U
 2 j6 g+ N8 v- ^8 I, |* p% b) j' v  D: X% ~. S* F7 h
 
 + i6 o2 K, L, w/ ?( i$ ^
 9 T/ A1 n) S1 `! e. B6 O
 |