|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在研究用51单片机写蓝牙程序,但在最后还是出错了。6 z* T% i# R# {5 Z
我想输入“1”时,第一个led灯会以2秒持续闪烁,但是事实是第一个led灯一直亮。
! w: Y" K+ @8 G+ p, \; I求解。
( m3 o% t& R* B( A9 s5 u程序如下:# include <reg52.h># define uint unsigned int0 r, R5 I* A4 B
# define uchar unsigned char4 ]5 ?* t) H( d& L2 j/ z
uchar buf;
2 H1 g6 }0 {) Vsbit led1 = P2^0;, [( h; W' k; `( n
sbit led2 = P2^1;* S$ |6 `/ T9 H3 r( J
sbit led3 = P2^2;
$ s# P; l/ Y+ \" W! @void delayms(uint xms)
1 G3 _! u) F# L1 E6 X) r2 L1 V/ O{ I% ^$ U! n; M" I( w
uint i,j;
8 V, q4 P: ?$ J: j" J& F3 T for(i = xms; i > 0; i--)
. O( H4 C1 h2 R- t6 R! P for(j = 110; j > 0; j--);: Y ]+ F0 ~- I) y
}
. o1 ]: E) S T
) O0 t) F+ q! B+ Vvoid UARTinit(); A3 [0 o: B7 a8 N' Q K
{. j7 b( u( \" A w& L% U
TMOD = 0x20;
/ p+ r! |7 @' n& gSCON = 0x50;
, C+ ?& ]3 a( a6 N, E* pTH1 = 0xfd;
: h- g* P, s0 v; ^TL1 = 0xfd; _3 A% M3 U5 a e/ v! r. U& ?
PCON = 0x00;. B S" y) l1 b% W3 L, V1 `
EA = 1;0 ?# S, Q5 W! u& _$ V7 G
ES = 1;# @. X6 [- m x, v7 p. j
TR1 = 1;
6 A" N4 A; x$ i7 D0 j( Y x}
) l- N% v/ S5 B; ^6 O0 ` |. o; R( Q. u- ~: C3 E
void send(uchar c)
3 @( `! {) }5 o6 n1 Y$ G# K2 w& z3 ~( B{1 \0 ^- N6 W V: p/ L
SBUF = c;0 X2 S' d3 f3 A% S' `- D" [
while(!TI);
$ M/ {8 [7 h0 [0 ~ TI = 0;
1 W& [; q+ V# |7 X4 t1 z; `0 L- Z}/ F3 X# {- |7 \; r3 c' Z/ |
+ T. q ~8 I; g' Gvoid main()0 I: ^0 N, u$ R9 V
{8 ~8 x( p$ a1 _/ t5 t: R j; X
led1 = 1;
$ F5 s' s) J& c. f) q5 T: G led2 = 1;( s }+ a: ~5 ^; [+ n
led3 = 1;2 t6 ]3 Q8 Y6 ~! e7 b h
while(1)
4 L4 V9 C2 t" i+ F& M{
! {4 s/ k& B* ]+ Q" aUARTinit();
$ R- X1 `/ y `% y9 t7 Y}
& a y4 G! M) N}) X. j8 @: M. Z5 x
- J0 @' J9 ?2 k/ ^7 c5 O! r) g
void UARTinterrupt() interrupt 4
% W8 O$ A ~4 t2 L/ J1 \$ W{- g$ M, Q; X$ V) v- B9 l/ ]& U! y
if(RI==1)
0 r1 S( u. S+ I{
+ U/ H! R! O( }) C* c9 vRI = 0;5 b( w; m: q9 n- R* r' w6 M$ P
buf = SBUF;
; e6 u4 m1 {" ^# o0 | switch(buf)
2 K! ~# ~/ n5 o1 Z" X {: A ? ~5 K# X7 s) T) v
while(1)# n1 x3 n4 c% f+ ?7 T- ~
{* u% p6 p' i! i
case '1': 0 |" ~, @$ O }; p' R
led1 = 0;
7 e# _; [2 m, U: V' w3 x delayms(2000);! ?! a" @, A$ K
led1 = 1;9 z* z K/ l- v4 t, G! ]
send(buf);
4 [. W w. U S. z }% @5 O- G2 |4 s: _' {, n
break;5 l+ B( f( l: D6 z5 U y |( i
case '2': R4 H. E: ]% }/ j( L. l
led2 = 0;0 ?7 z: C" p7 R* m& k. b
delayms(2000);
9 O0 T4 f) }6 K" _ led2 = 1;
5 ]- R1 W- e7 z send(buf);
( R# j, f" q8 l: r* K- U break;
" x: x+ B/ C8 \ d5 r, O; S default:: a1 u+ I* |8 n' z' q
led1 = 0;3 H" g T. |- [7 U* Z9 ?( w
led2 = 0;
# j* B* N; b+ r3 F6 L led3 = 0;
- O. j1 |( W6 v& b, H' T/ D send(buf);( v- e; b) _, @2 ]
}
6 [. r- S1 z* M) {6 f: M8 B5 p( q}
0 n6 D* e2 e& u% J# p: D}
) H+ P+ a* `: T) ?; a; h9 D0 g- n% D: h0 N+ P1 H* [
|
|