4 V( K, z5 s0 l) q. W$ C, W
谢谢你的建议,下面是我编的程序,编译后不出错,不过有警告,位置是主函数里,调用子函数后,对于flag的判断哪里,显示方向控制.C(29): warning C276: constant in condition expression,然后就无法生成hex文件,麻烦看一下,不好意思,谢谢了。* v I' d! _% z
#include<reg52.h>
. S" ]3 _, b2 Asbit IN3=P1^4;
% ^9 h# Z; J2 h# Psbit OUT2=P2^4;
0 s5 j4 X* ^; t; Dbit old_bit;: m' T0 x2 {2 ~: l5 D+ O6 c
unsigned char flag;
8 e8 T7 n) L2 z, g4 @0 u8 Rvoid io_rest()
- L, G7 L# n) ?' t# e; |7 k8 S; u{
; K5 M1 U% C- @7 X if(old_bit!=IN3)
7 R% |' n4 w% I& F: R" N0 B2 ] {8 m8 B0 v" b- F Y4 A% P
old_bit=IN3;
* t; g) K h+ U( C if(IN3!=1)
, b! n: t- Z7 p4 |- z% q+ U {
4 g/ ~9 B) i1 p& y% C1 M F flag=1;
" {! P. e% J& T% X" G6 Q }
& m# s7 b& A; ~+ [" T else
6 ]2 c0 ]/ y: x0 R/ h {2 t7 s! Q+ D" d* F r
flag=2;
: g: J7 B5 Y: i" P# t% O }. c( A Q; X, x* x: i$ ]! f1 t
}; i. O4 T& A* X, ^9 P0 C
}
; N( S: B. g( E* \/ avoid main()' C4 }. c% u, G, U+ W
{
& z3 W ?0 A; Z7 U old_bit=IN3; L9 X5 K# Q' x! y
while(1)
! Z, a, O, E7 L' n$ x g {
' M' C1 g1 x, ]( C0 E int num=0;
8 e, d/ }# L0 p7 f7 y2 F flag=0;
/ l! G! o" ]3 V4 @, z io_rest();
% f% O1 w& Z( c if(flag=1)# t U3 d' g( L- f2 L8 q* y$ p
num++;
# i( d5 ^5 j& ^ if(num==6)0 u1 C) K$ U6 X& H2 A; D' W$ S
num=0;) f2 K# j- K8 g+ Z. e% ^( ^
if(0<num<=3)
, D" r. ?- V% n2 \ OUT2=1;
! ?" j* g: p( n# B* I7 q1 S; F else
5 a& Z. K l5 E OUT2=0;
$ y; @# h& R; _ ~6 b }
9 G- j. R/ P( y/ S$ N% @; U; ~$ Y( a}$ Z; |, \# ?' n! M: {, N
5 Y1 Z# {0 _$ }3 J& a5 B* z7 m
( O& t! L/ Q9 I7 H M& n
警告是由于少打了一个=,不过仿真并没有出现预期结果,输出端一直只会输出高电平,不知道程序哪里写错了?
' N/ C5 y) S5 k" g1 o, k6 q |