|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在研究用51单片机写蓝牙程序,但在最后还是出错了。- I9 O; g) M. y
我想输入“1”时,第一个led灯会以2秒持续闪烁,但是事实是第一个led灯一直亮。
7 U4 S9 ^+ I+ J2 U: S. f求解。- M$ N/ I2 X: k) C& A8 w. g! c
程序如下:# include <reg52.h># define uint unsigned int9 I( S- k) C. E( y- o/ Y4 X
# define uchar unsigned char
( Q# T) i$ h9 G6 J7 Luchar buf;
1 X+ h2 Q# k1 ysbit led1 = P2^0;2 j; U" b/ F) o% ~3 n z$ I! m2 |
sbit led2 = P2^1;
; J" p& J- M* a5 F; `! xsbit led3 = P2^2;8 h6 B2 W/ l/ q2 K2 M, N
void delayms(uint xms)
; C" h9 W. g, G$ e8 H) w{
( q* l* g& z+ W; G6 Auint i,j;
$ l1 Q8 x7 ~! x# x6 O6 R for(i = xms; i > 0; i--) T7 i( {' ^( g x; w8 w7 O: l
for(j = 110; j > 0; j--);$ \9 y4 A! G* @
}8 P: Y! t3 d; j3 e
" @! y; x7 s; w& D
void UARTinit()
2 B% f; v. x+ L: P0 K4 P1 O{
$ ? O# W$ B/ [/ f" L8 g" F. z4 Z9 |TMOD = 0x20;
+ v3 v' w7 i: @* t3 Y& W- C! USCON = 0x50;
$ L) Q' `, |6 k+ R" G" ?TH1 = 0xfd;- `6 a# |$ h) X9 Z
TL1 = 0xfd;% s- |& c0 J1 P8 \5 |
PCON = 0x00;) u9 V/ ]5 X% P* [6 H% g; m
EA = 1;7 w# T5 [& b' j% |- N
ES = 1;0 S# c0 U4 @# y$ H2 E% F8 T5 N
TR1 = 1;
, V* N* J6 C w$ K6 q" W6 |}% V( m3 J9 q5 T& |( C: L) M) Q1 d6 X
; ^% Q. ^9 Y1 n7 t, ~. N
void send(uchar c)
( [+ U, l- U7 `8 o( B$ O1 F{( G( f! |7 s! b6 D% _6 D
SBUF = c;
+ H+ w+ W1 D$ T8 k' y while(!TI);
! O3 j! ?5 M, M- B. Z# K TI = 0;( X# W6 a) g- U7 @
}
W; K. M" M( _; o
$ n+ G' J+ U# |8 V; C- y# Yvoid main()
& S& k3 t5 W5 a) M$ ~{, C" ? M& [" e3 _; k8 E1 [
led1 = 1;
8 W' i0 h7 O4 M* g' `: Q K/ V led2 = 1;
( n/ L- M8 g; \# K led3 = 1;
9 N) @+ L* H% i4 Y1 X! K& Qwhile(1)
4 f& E& e) G0 @7 v1 k{% z! i% ^3 L2 S
UARTinit();( F! y# K( E& y! O
}
( t4 G7 n! K8 q3 P C}) L' w, U$ y6 u0 C- h
7 U2 o! N$ y/ }& O" d- ]8 N
void UARTinterrupt() interrupt 4
' V0 T: A5 q: X{) d7 m4 |: p z
if(RI==1). R( }+ h* j: E
{
7 p% ^: E2 g8 J) sRI = 0;% b! a, r* j$ |) z* C
buf = SBUF;
1 x# ]8 J( f- x/ c3 {: G: F switch(buf)
, ~" B' x3 U1 O& Q" I7 c1 q; \* D& | {
- I: i4 e. ~0 L, f. S while(1)( G {2 ?! |5 ?" [7 j
{" G: G0 D1 @! K3 j
case '1':
B* ~" `7 W9 K/ V* ~8 u9 @ led1 = 0;' T0 N0 w( i3 X' h d
delayms(2000);$ s* S; m X7 \- B8 [
led1 = 1;6 `$ n5 E' s( _& B" w5 q9 S. V% f! T
send(buf);" r) P- \# ?- b8 [3 [/ x
}
+ R% X" I8 h7 L) B: L4 h) z! M break;
G0 W$ o! T* m case '2':, \, v1 A, \+ {. h% V" x
led2 = 0;
9 {% q }$ b! B" u delayms(2000);- G: ^+ Q- l5 k v: |7 ^2 e
led2 = 1;
6 _3 E+ C! U# w$ I" N, j7 |3 u4 s9 r send(buf);) L/ T; W6 ^, {( U0 R% A0 x6 ~; C
break;
: g' L" a5 n1 [5 Y' D$ G8 i7 ` default:
( x' ?. E9 p; `- c! z; z" f' `6 V led1 = 0;* t5 G ]# A( h' [1 t2 Z" E
led2 = 0;
7 N/ A9 `5 C4 n! N( j4 A led3 = 0;9 z" N% G% s/ F# w% m0 c5 h2 z7 q0 B
send(buf);9 W" j5 D1 E3 D4 H; ]% O
}
8 W- r6 z& A9 l}7 m+ [( z4 s: o/ }7 `
}
- k8 V0 l, d: J! j! t3 [( f
/ }- t+ N8 {, p$ i9 J5 H! L! e |
|