EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教 #include "STC81.h"
3 P9 T$ p9 {- N1 Q! B; Y#include "intrins.h"
: B7 g$ `# J. K#include "485.h"/ Z3 `4 h% j: L+ F
#define FOSC 24000000UL. P o. v! }% k' f o5 j
#define BRT (65536-FOSC/9600/4)
& t3 \* ^' u$ p+ H% c#define uchar unsigned char
% H* I& K1 v, G6 Q2 f4 b n g" Lbit busy;* @4 |8 I' q7 c6 @5 Z
char wptr;5 S" l- H& u& g+ f. s2 g
char rptr;4 [% M* \2 s) a" V: f
char buffer[16];
# C5 z3 v6 Q" o- z3 D" y5 T5 d3 Avoid Uart3Isr()interrupt 17 using 1
3 d% C6 e+ [& w& ^! u7 ~% M8 F{: K: g3 u% o# {* k; Y" Y, @
if(S3CON&0x02)* l- `$ \8 T3 g- U' l5 V) I
{" ^/ E. Q& ^# p K
S3CON&=~0x02;; V$ s2 S9 H; o
busy=0;( X1 V; I+ p+ R2 J
}8 x8 u6 c+ d1 b+ W/ r2 x0 n
if(S3CON&0x01)* B; K# d. O& J( E" s9 U" n: \3 f
{
: \* t! S$ P& { M* u' B" v' X S3CON&=~0x01;% F7 V4 O0 s% K. ]5 N( a/ M% }6 v
buffer[wptr++]=S3BUF;: i* g2 u0 `, K$ P. C7 [
wptr&=0x0f;
/ F( L5 v% a& g& D if((buffer[7]==0x00)&&(buffer[8]==0x00)) i5 _, G3 V, ^3 d9 S2 Y- |0 |
{
5 v1 n8 ^+ \ ]" w m2 K RUN11=RUN21=RUN31=RUN41=0;
) f& R4 ~+ \' _6 v7 a4 s STOP11=STOP21=STOP31=STOP41=0;
8 v& w& A/ g( K3 a& W9 L }
; |! o7 R8 X9 O; w, Z }
K' `1 J" M) x/ S( \! m# b- [}
( i5 G& w0 x$ y y6 v6 ]/ Avoid Uart3Init()& q: s5 a; ] j
{% V5 c" K# i2 l* d+ L$ F! M
RE485=0;//RS485设置为接收方向; u2 g5 q6 R6 J6 P$ P
S3CON=0x50;
! K1 g* u C, h( b" N- L. J T3L=BRT;8 z3 N, R# y# s# h/ y+ M! g3 O
T3H=BRT>>8;
1 o; \9 x4 _+ m. V: \ T4T3M=0x0a;
9 `7 _/ _/ w5 I: y$ @ wptr=0x00;% i* i+ I2 m; ~( U) u% t* p4 A7 x C
rptr=0x00;- C& Z% `# T3 E( t5 k, ^
busy=0;
: o2 U: k% h+ b* b& R1 [}/ T. R5 h$ ]& D! a
void Uart3Send(char dat)
( g: S# Y; z+ F/ L1 F' R{
# [, U; c' E$ p8 O" K( \ while(busy);0 i% M. C6 f! Q" [( H
busy=1;
1 w' K1 ?9 |# I H8 _ S3BUF=dat;* J' B4 |! x( b/ L& w7 z
}
9 q8 z) \3 B" [5 Y, _0 X# b* Mvoid main()3 |0 C7 f; Q1 U3 p9 G( T& J
{) G* c5 ]* A) W9 ~# I
P_SW2=0x02;+ F* N) [: C* @- ^. i
Uart3Init();& Q, [: Q# R9 r! k) U
IE2=0x08;) f1 U% x% P# P9 j! r& j
EA=1;3 g' H$ q, ?+ G
while(1)" c! p8 H. F3 }) `( C& m! `
{
: f Q( D5 F Z: z" X# o if(rptr!=wptr)
8 A% h2 ?) x" X" y# C. Z {
8 B% }8 v* @ _9 M: g3 o- ? Uart3Send(buffer[rptr++]);% \' J5 {0 o; T7 ] _
rptr&=0x0f;3 S5 r5 u! \) u
}( m& Z! b l" G, s7 E7 \
}5 N) b4 Y, i6 |' H
}
$ M8 \4 z1 ]6 V" F$ P8 L5 l |