|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在研究用51单片机写蓝牙程序,但在最后还是出错了。7 P2 k+ {- l7 G$ _* B6 y
我想输入“1”时,第一个led灯会以2秒持续闪烁,但是事实是第一个led灯一直亮。
& g2 L7 |1 ~4 s G/ d; v求解。5 A. E/ e5 s5 h3 n
程序如下:# include <reg52.h># define uint unsigned int) P; X; E y" y% I
# define uchar unsigned char
1 r r/ q: t3 D3 f/ c/ M4 Suchar buf;
7 r( [, L a9 H$ X2 s) bsbit led1 = P2^0;
: V$ ]( ?; S! Z2 q q9 Xsbit led2 = P2^1;
1 c3 x- S1 H R8 j# vsbit led3 = P2^2;
/ _9 G6 z1 P, Wvoid delayms(uint xms)* Y: j3 c( E' _9 J( R) w1 y
{
/ o& ^7 Z6 W% D. luint i,j;
2 c( H4 Q7 m9 B9 R- F7 C( b$ d2 | for(i = xms; i > 0; i--)
! A# s1 s; G8 i+ t& k( s# d for(j = 110; j > 0; j--);
7 i$ K9 f- ~: I( p- D: T) p' s/ z}
. P+ N% y8 u: \' ^! u, [9 p' P" H9 d
void UARTinit()' K6 b7 s; W8 [- @0 D* l
{8 E8 \% _5 E* H/ x2 _
TMOD = 0x20;3 z' S0 W8 k7 c/ ^' O( g) x
SCON = 0x50;+ `( a7 U% D5 O1 e. s" d, B
TH1 = 0xfd;
i7 d* {0 _" g9 jTL1 = 0xfd;
2 l9 D S* b; S; rPCON = 0x00;0 D/ G: m& [7 E) o) l8 N
EA = 1;4 ?7 V' X' ]0 j4 W! r* P# R
ES = 1;+ L3 _9 {1 z/ r t$ k/ m
TR1 = 1;) r* B8 @/ ~7 x' ]0 m% C' [4 `7 v
}* k& X: O4 v: p% Y. X1 Y
+ \+ w( ~$ e" ]void send(uchar c)+ r5 c( V6 v3 l- N$ k( ~
{
* ~4 g' M8 t8 E9 A SBUF = c;
9 s, J1 g! s" Z* o while(!TI);4 @! i5 ~% }+ `* S5 D, O& d
TI = 0;* e& m; f/ X# q0 v& g$ x( Q
}
1 [) v- Z. G- T6 K' j4 j% n
# l: M3 l; i+ g/ avoid main()
' g. s6 \' ~9 W# [{
8 T! ?, d7 w9 b# p/ J+ a+ ~ led1 = 1;+ k0 R: i1 V6 ^$ ]# Z
led2 = 1;& e. y; _$ p: s$ s, v* z
led3 = 1;* P. P8 \* _8 T! Q+ w* v, A
while(1)8 l7 X4 N: e& }- H }$ U
{2 H' S8 S8 R+ O( \) M' n! l
UARTinit();
$ A" k4 h- ]+ u/ v2 K}
p% T* [8 N: X3 H9 T: V}- ~; v2 T& P- \# }# U/ x! A% \! H
. U2 P3 b) e* fvoid UARTinterrupt() interrupt 46 X; T2 l, K3 I" c1 t
{
* Z( i( @/ {' `if(RI==1)8 m+ G! c: G* E+ k+ X$ N
{3 M6 d* T; q' ^5 t- E: F
RI = 0;
5 [* [- w3 X: c$ N( r+ y: c buf = SBUF;4 j" I1 l* h7 d5 _5 G
switch(buf)+ A; |& S/ x" o- j
{8 K6 j- n: y9 J0 U9 d5 B: `/ @
while(1)
. r+ o! w! p8 ~9 J' E! o6 n {7 d5 `* c$ c) s3 Z0 G7 b: y
case '1':
7 y" p" o4 Q) x* c led1 = 0;
0 I; O0 |$ U5 x f; g) l/ [ delayms(2000);% D+ p6 R% R, Q
led1 = 1;
, F) U6 t8 e! P' ` send(buf);
6 C8 H# Z+ Q. k$ h6 U0 K* y, F" c }* N2 m/ u6 H. B" i6 b+ a |
break;
" ]7 y/ N% }: d, ~: P4 O" x9 Y5 z case '2': A6 C5 p8 T8 f) _/ ~7 f
led2 = 0;- j" H W+ K0 l! H* _# q
delayms(2000);, q+ c( a) V5 l
led2 = 1;
4 H: P: S2 H$ u: s send(buf);
& Q5 G, K; y2 r3 | break;
/ a- r) u0 i5 I2 Q0 U default:
+ }+ w3 \8 Q0 k. \ led1 = 0;3 H. x3 A5 c0 A6 ?
led2 = 0;8 L+ V) ]2 a0 J E8 ~
led3 = 0;
) r4 _1 a1 \8 G2 T send(buf);. S `: ~% u5 w& q8 x) t5 O
}
! [ m. w6 u& `! P! A$ n. b v( ~1 t}
, Y4 g5 m. f$ [}
8 G! K; X% l2 e; w
# v' V u3 F9 ~) l: { |
|