EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教 #include "STC81.h"
5 ?3 d x/ G! _+ n1 n) q9 b% G, Q/ Q+ c#include "intrins.h"# b z9 O% J P& _6 s/ I5 `. P
#include "485.h"! O, }) X3 O$ w
#define FOSC 24000000UL
! d% v5 Z% K [( X9 A#define BRT (65536-FOSC/9600/4)
: O/ E, G" F' H" S1 q5 ^#define uchar unsigned char
! S8 e5 h) h8 L. A5 N Rbit busy;: n1 E# _; T' ~- B! m
char wptr;
3 {- D$ x! R- P4 `7 w+ Ychar rptr;: J9 q; a# K3 R5 m' c0 w) N
char buffer[16];
k; f& i: T9 l) B. Mvoid Uart3Isr()interrupt 17 using 10 g6 ?( D' ^, o
{$ O' @( n8 {9 J I
if(S3CON&0x02)' _( K. l5 L/ W- V/ s! Z. K+ i
{
: Z& a9 w1 @! E S3CON&=~0x02;
2 a" K0 y& D3 w9 R busy=0;7 U! ~( J& c1 D& e7 n( b# p
}
7 k b4 F5 z" }8 i" `3 S if(S3CON&0x01)! _. S5 H* K# T: c1 F5 t
{7 D! L! z2 ^0 t, `
S3CON&=~0x01;
# e" h# q6 P4 E* s; ~% n buffer[wptr++]=S3BUF;9 I$ X6 C# P& d+ |9 [1 b' I% ~
wptr&=0x0f;8 O# g8 K( ^4 k. i4 N
if((buffer[7]==0x00)&&(buffer[8]==0x00))% b$ I2 x/ _0 V( q6 z8 d
{0 c. @" \1 `8 C8 p% @
RUN11=RUN21=RUN31=RUN41=0;
# ^* K9 c* L& U9 d STOP11=STOP21=STOP31=STOP41=0;1 f1 m- W P( j. ] @' E
}3 v- j& }' t6 c2 n5 d! t7 m
}. `# b# Z, C/ q) M0 `$ r \
}; h% j$ ]# K. P0 p
void Uart3Init()) R. n" D7 ~$ [+ \" m! l
{
7 Q/ i: v/ \ [3 s RE485=0;//RS485设置为接收方向
" v" I' t# r& z: h/ ^- \" ] S3CON=0x50; : C Q8 C1 [* r: l0 h
T3L=BRT;
' V6 m i w# p: j9 u T3H=BRT>>8;# [6 P7 j0 F" W7 i
T4T3M=0x0a;
7 {9 G- Q; ^( h$ T) r! R wptr=0x00;
; p" j9 |7 {' q* m9 c/ k3 W8 I rptr=0x00;! p1 H) j% m+ t# E6 A Z* b' i2 K
busy=0;* l/ Q# f4 W! G9 [. M) B
}
& R: v" m8 v c1 t8 E- F0 N& c8 ]void Uart3Send(char dat)
% A4 m( F; k1 R' z{ d1 w) q6 j( Q: `1 x4 Y3 @ t
while(busy);
1 g( n3 A6 @7 _& @4 I busy=1;
" }9 }3 Z. [2 l( _/ t& C S3BUF=dat;( r, i3 G" a% i n! \+ O
}, G' b. a# f8 F7 S" O2 k
void main()
6 E5 l" x/ g( V{( q( L3 B: t0 c- u) P" B
P_SW2=0x02;
5 r' x1 d8 X6 V/ k7 v! z% J Uart3Init();
+ O4 s6 q2 v. `9 { IE2=0x08;) ^: l" v3 M* c0 Z, F" v( r
EA=1;
7 S- b8 B6 l2 u& \ while(1)
8 w& p% z2 `: B" ` {
- x' m7 k0 R/ H if(rptr!=wptr)3 e1 s% M& d' V6 q( r W
{
3 [. n8 s+ l, q0 f Uart3Send(buffer[rptr++]);
9 M, v* \5 F9 l5 S5 C rptr&=0x0f;
* s/ | F7 W, C5 C/ i5 h0 u8 y }
' r K; {: d" Y }
+ T* M1 Q9 n/ M ?}
7 u* b7 K( ^2 |( s W" H |