|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在研究用51单片机写蓝牙程序,但在最后还是出错了。
8 D+ E. x+ v! t. L/ Q) |我想输入“1”时,第一个led灯会以2秒持续闪烁,但是事实是第一个led灯一直亮。
: V0 W: O$ z8 [" U* p" @, I求解。+ n+ u4 j* Y$ U) D- I: L
程序如下:# include <reg52.h># define uint unsigned int q: c \: A$ d4 e2 ~
# define uchar unsigned char* m# e' p1 [) ]& Z. G1 V5 m
uchar buf;
( b5 y$ a2 `6 e7 ^9 G9 K0 d; jsbit led1 = P2^0;2 T$ J" p4 v! ^0 ?6 f1 {3 ~
sbit led2 = P2^1;
( X) y: s" k% n( vsbit led3 = P2^2;! `+ C# C a! A# t
void delayms(uint xms) E1 G6 s9 U% W* q( S1 ~
{0 `" ?) a0 J6 F4 t
uint i,j;5 L) P( n7 x O! Z' X( ^: O, D
for(i = xms; i > 0; i--)
) B9 |4 a5 S3 s0 f for(j = 110; j > 0; j--);9 J9 t* i, g& p. g+ C* T# D& M
}
6 _; i$ N' \# I% O& ]; ?0 v) j7 D+ ~8 [& X
void UARTinit()/ E0 t5 x3 s: C9 G, B7 ~
{, G/ B( v* j4 v. f6 f. |
TMOD = 0x20;$ r t2 x8 Z* ]9 b: `9 P! w( u
SCON = 0x50;; p; u4 @: B0 }5 h3 o2 l. u
TH1 = 0xfd;! ]' o) t. j1 x0 p5 A
TL1 = 0xfd;4 q" L! o* c2 x V
PCON = 0x00;
5 W4 A( w. w7 u* ^EA = 1;
5 l6 ]" C- i6 I9 P4 ]4 E) q+ LES = 1;
9 S Y8 w# Z l# eTR1 = 1;* Y9 N" q$ e( F3 f# b7 Y7 a3 L
}8 J7 S# I, s7 _; i1 ]
j6 Q8 G5 ], \' t6 J% K
void send(uchar c)
% D# \. V1 J3 C! V' p{
2 n1 X) v% d2 S) T+ V( f7 a2 b SBUF = c;
* _) C6 o+ @' x, T while(!TI);" d2 D! @$ g; K* Y* f
TI = 0;5 v% K6 l' f s# a0 a
}( U% T5 `2 T- z2 {! S L( r. \
`% P* R+ J6 l1 B( r& C
void main()) ^8 y- E$ t+ |, g% b+ C' O* h* a
{
1 e9 i. G( |: j9 \ led1 = 1;2 q( h% i( z- a
led2 = 1;
' m2 G, v+ W2 L2 ~3 J led3 = 1;
0 A& p: e# s3 t- I; Swhile(1)1 `( D4 H; K: l! ]! Q
{
) l! _( Q4 U2 aUARTinit();/ u2 V4 a! ?( _0 ~
}
9 ~" U9 t1 k( j& o( s7 d9 a- J}6 p# {: h& ~# K7 p/ ~) \$ n
% i( h! {7 N$ Zvoid UARTinterrupt() interrupt 4! w- B s. q2 r2 }! R% J0 B
{
8 W8 G) z8 X/ [+ hif(RI==1)
2 p' F9 G4 R: ?' [{ E; B6 d* `* K8 _5 l% x
RI = 0;
1 f7 y* ~ q/ G* i buf = SBUF;. K0 B& K" i* l3 v6 |
switch(buf)/ G3 Y+ v( O' q2 M) G+ m9 n3 L
{
; q0 s2 {1 ?' D while(1)4 Z$ \# c, K6 Y7 u5 P- h$ u/ D" V
{, v$ P) \7 h- b" L3 B( |, c7 ?9 B8 W P
case '1': 1 U/ V3 B0 A: c5 g7 s5 w
led1 = 0;
$ n0 j l% A% J: H* o delayms(2000);
' y) Z6 r9 L& y% j6 ` led1 = 1;
9 E7 ^0 a( j' B+ G4 B" E send(buf);+ m9 [$ y4 m" V* C
}' G+ c6 S/ M. D6 c1 J
break;/ s e8 |, U- T4 ~
case '2':6 d! v' @% k; O/ C- F4 V( {' Y
led2 = 0;
8 G% x+ J0 s/ e. `, X delayms(2000);* ^; X6 P7 j+ K3 F8 \4 ~, u
led2 = 1;
+ h) V5 O* e u8 [( L send(buf);
. M# T# ~' U) e$ |8 l break;
! A9 S" T. s6 t" l5 Y9 ]" | default:
; L% p3 S3 u" R W, D: e! M led1 = 0;
$ l; Z. V9 w# l' o led2 = 0;' x/ j/ F6 D6 C* P6 o9 k
led3 = 0;& k; q4 u: s) l* l+ h, X) B4 Y
send(buf);
- e. i, i/ m& l' Y8 u% U }
* b2 F# K! v7 Q}
; C T; H2 t# K$ S}) R0 z$ `$ k9 E6 ~/ X, W! t
3 P# ?2 ~8 ~9 i z; B" L |
|