EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教 #include "STC81.h"8 w) a! ]: y* |7 m) k, C0 `
#include "intrins.h"
( o' c; H! y/ S4 V#include "485.h"$ _- f" ?! J$ r2 Z1 Y5 E3 e5 r8 w
#define FOSC 24000000UL
! A) U, B+ {: F#define BRT (65536-FOSC/9600/4). x! \; }* v' }: T
#define uchar unsigned char
5 Z" k0 w+ C! I; Sbit busy;6 b5 G6 E4 A& K% M( ~# q
char wptr;. O9 E+ t4 l! O) U8 |) Z0 t! G% \
char rptr;: r( j2 ~8 B5 K, K5 U
char buffer[16];3 e9 x% w- s# f' o3 U9 h9 P
void Uart3Isr()interrupt 17 using 1
7 N' q6 H$ S( w! a) a{# k" r8 y- d- v
if(S3CON&0x02)! A9 T, N% z: n3 T0 }6 X, @, B8 Q
{3 ^# L% ?6 s9 g k+ E) e) i. O" j1 E, Q
S3CON&=~0x02;) x! D7 C0 Q; _) [2 Y
busy=0;
: Y |7 _. e+ m$ R* q% @! g }
+ k& ?/ r" E$ q1 M if(S3CON&0x01)
: e8 v3 r, u* ?; p7 U5 C6 B {
: o$ D: ?8 \" A0 Q; p S3CON&=~0x01;
8 i& `# C: j+ k, h/ J! u2 R! N buffer[wptr++]=S3BUF; t5 `0 ?: i7 q
wptr&=0x0f;
# U. S! f R7 q" D+ K if((buffer[7]==0x00)&&(buffer[8]==0x00))
$ }! `5 h1 F H; o {" v+ _1 U6 W& s) M! j U+ q
RUN11=RUN21=RUN31=RUN41=0;7 A. h K5 X: ^9 P7 g' C
STOP11=STOP21=STOP31=STOP41=0;
/ c. n& D! k: p, q }
: p, B0 N7 p. X# C9 w) \2 e }2 Y8 `* a- d1 M% F, `( k
}
7 o% q0 p& z0 L! ?$ n. L: rvoid Uart3Init()$ m/ ~+ {0 F/ r4 i
{
0 u6 O7 [8 c8 M0 }% c) n# ? RE485=0;//RS485设置为接收方向
. T8 N3 W& [# c1 K/ b7 B S3CON=0x50; , w+ y/ w& V3 a% V
T3L=BRT;) l* ?: O0 z# V8 b: O
T3H=BRT>>8;
" Z9 i6 k- q' B1 o+ _7 x2 K T4T3M=0x0a;0 s% M* o. }' \& X+ P
wptr=0x00;
[7 a& P$ O( x% Y, @5 g4 C rptr=0x00;6 v& I# T2 E* b" M9 T
busy=0;6 X0 ~ ~: P/ W/ k0 V" H
}
- L1 j. K4 f: z) f9 R: m* Hvoid Uart3Send(char dat)
5 g9 Q/ Q2 o u' Q6 y{
3 o; e+ `6 G1 x% C( P while(busy);+ X& u: j. s% W" n( v
busy=1;
: f2 s& ~8 p+ \ S3BUF=dat;- |" f3 Q2 Y5 b0 V
}# ]5 X! I% Y# p, g
void main()6 Y2 i, L5 _7 R8 L; t
{
0 j$ L& n" U* h! y. v- @7 d' v5 w9 c P_SW2=0x02;, v$ f5 P1 E: A$ P, r/ ?
Uart3Init();
4 a+ l0 C, B. J. }! f IE2=0x08;
# U) K# `& U7 f( w" t+ s6 k$ ^ EA=1;
4 H, e- ~7 S# p$ X" Z while(1)0 D9 r3 a j- s/ H% J, Q3 @
{
% Q$ n$ f% R, ]& Q if(rptr!=wptr)% `% g" D+ e' x9 X, ]
{3 G6 ]4 \! O6 w2 }$ {
Uart3Send(buffer[rptr++]);: Y% ]" m+ E m; |4 r( {
rptr&=0x0f;
5 |4 `$ ?" r7 ?* D2 o! _# ^ }
* }& E) S3 [2 P }
& s$ l! A! t0 c) O, k}
, C/ C* ?8 {- v$ ]/ y* v9 X |