8 H$ x7 {: a( u# C0 j
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。8 f0 A1 O; {% G- o, h9 l) R! r* V" e
#include<reg52.h>0 h" n; N9 n- u, y
sbit IN3=P1^4;
; n2 i! U+ A3 x: ~( xsbit OUT2=P2^4;
. W; q$ i8 ?4 {5 M! e& e7 `bit old_bit;' v5 p% H' X, a$ R
unsigned char flag;* i8 ?. F! a0 u$ g2 H) ^& D2 g
void io_rest()
0 O! S. f6 p/ D1 e }/ \{4 p! G7 u; t. v; I5 g( g* h& P9 P
if(old_bit!=IN3)( b' @1 u+ X2 N5 ~
{
% w$ U5 F1 J8 C) b3 }* p old_bit=IN3;
& ^; W: D' P9 B/ [ if(IN3!=1)
7 F3 q3 i) k0 |3 P, o# Q {2 f. y0 |3 j1 D3 T
flag=1;
, } K2 O- L& Q5 b9 K9 O. z }
) G+ ?# D4 p6 g% I6 Z, o! @; E8 e else4 i* o. E* K4 T: g0 E2 e5 |" x
{
9 w: q- H$ J+ e3 B, E8 j( [% t# A flag=2;
& Z5 J, a. S" ?: K0 | }$ m( c- x! R4 d
}
/ e$ j8 W0 C: j}
# S- t4 g1 R* \6 }7 [void main()
9 x) n9 f% E/ P! K% W c8 T{5 C/ V) P! E, O& o7 R5 s$ i
old_bit=IN3;
4 [+ g( R* U" K3 t1 F# `6 Q while(1)
8 O* x: d- Q g! t& d- ]" G {
9 K8 C3 [' A h q) d% I% }) K: _' c7 D$ @ int num=0;. Y9 k1 K, S& _/ L' ?
flag=0;0 {; X, Q, k0 q; r3 Z" W
io_rest(); B+ B3 F- x/ X: Q
if(flag=1)( {/ e$ f5 {. e/ b
num++;! e9 z" u3 U# U. ^
if(num==6)
# d, X' Z! Y y' m' p1 [ num=0;
1 Y. u& g1 a# o5 l- ?! i$ a0 r if(0<num<=3)6 d5 S. n' ^* |$ z% J
OUT2=1;2 q( D( U& ?+ X; m! k {7 Z
else
0 J0 {' e2 y3 x4 m6 m1 D OUT2=0;) Y8 I4 k R. M
}, B& ]" ?. @9 g' H2 P2 p
}" L( M. X' G" \8 b1 {
' F) g, o1 f9 ~7 \2 _: u) i% Z+ R$ i
9 ~5 u8 p( W5 ]6 D8 C* ?警告是由于少打了一个=,不过仿真并没有出现预期结果,输出端一直只会输出高电平,不知道程序哪里写错了?5 q7 M; a5 p! [0 m6 C9 N
|