EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教 #include "STC81.h"
- O+ |- O0 D2 v#include "intrins.h"
* {% T$ f+ D: R$ v#include "485.h", m( Q4 S* E7 S, p( z) Y; ~
#define FOSC 24000000UL
7 T! g2 p& s5 o5 x% t) d$ k#define BRT (65536-FOSC/9600/4)
8 b* G( k& q s2 U* g& ]7 b) d- {* N8 W. U#define uchar unsigned char1 u' p( G `/ i2 x3 A
bit busy;% z. e% D j! {
char wptr;% b: C0 G7 L% A! z$ L2 T7 V* \
char rptr;
! G5 m+ s+ T/ i# s, U! o$ O/ B# Cchar buffer[16];+ O4 l B* }2 L" g$ Z9 R' r3 M
void Uart3Isr()interrupt 17 using 1
9 w' X/ h9 ]7 [( G& s: c{; X) T1 s, }: u* v/ ^
if(S3CON&0x02)
9 j1 {& K& X: z y8 Z {) s( L( J9 X4 i" w, o- x( E) `
S3CON&=~0x02;
% R2 U; v' W8 ?* X) [# {) p) U3 y, _2 @ busy=0;
. h0 y: r- B# ?9 M }
- [ U8 U7 q- V8 M if(S3CON&0x01)( H3 z L' K9 A7 o
{- C# B M$ d' @5 x
S3CON&=~0x01;
: F, G. c, K( }+ v* Q6 {, q$ H; t buffer[wptr++]=S3BUF;8 B$ g! o! l# o% @
wptr&=0x0f;( y1 D* q3 F0 t7 `8 V
if((buffer[7]==0x00)&&(buffer[8]==0x00))
/ @6 _- [( K% V" I {: b% [# j$ @2 @( Y" W
RUN11=RUN21=RUN31=RUN41=0;
- w* s& M& |' }+ @* z STOP11=STOP21=STOP31=STOP41=0;
- _. x9 _# s9 x }! a& M |' [4 f- S+ b# j' v, E
}
! e& w) F: ~$ x2 x4 e" m" f}, M4 G; U" d/ B Y
void Uart3Init()$ F( H, c9 ~7 X# z- r0 v, H
{
8 c# [0 J$ ~! C! B RE485=0;//RS485设置为接收方向
% e* g7 P6 z4 Q# \0 a& J! X( T S3CON=0x50; ; i! T% @' v y: g5 r, A. d
T3L=BRT;
) K7 r. h8 q8 n1 k$ j T3H=BRT>>8;. Q) Q" {* ?5 T C7 X
T4T3M=0x0a;
4 R" j- L0 C" T8 B @' k wptr=0x00;
# w5 h& z; f8 W& ] rptr=0x00;
( B+ r( ?2 {4 M5 _- d1 U2 l busy=0;
, n d$ h, m# J5 y+ h; L}
6 b( j l# Y2 ^4 R7 |) z0 `& h2 Uvoid Uart3Send(char dat)
% W7 Y4 N' W; k8 C{
) ~" N6 V: H d" F: A while(busy);
, y" q; }+ i8 ]+ R3 q: }( M busy=1;
4 J5 H2 L$ V6 @3 W4 h' b' _ S3BUF=dat;
5 b6 C1 ~3 `( v% L0 e1 X) R& \+ ?}
3 [6 Q3 T4 ]( evoid main()2 u8 o; G+ N( M# Q# T& V
{
+ | l5 t! Y% d P_SW2=0x02;; k1 ^; x8 U$ O/ _; Z
Uart3Init();) A0 a1 I1 X, e
IE2=0x08;1 H. k) M8 w% E, X& p. ~) W* y
EA=1;
" M/ d8 x+ h9 H. V while(1)
- a3 |9 B* K- H* v' P& o$ \" | {
9 g" |; |% Q5 D, q) _8 M, a if(rptr!=wptr), I1 \4 d* @$ O, ?/ a
{( g! L0 S9 k5 r
Uart3Send(buffer[rptr++]);
0 P7 I8 J0 K! O# s. [& b( g3 p' ` rptr&=0x0f;
2 g8 ^) q) N0 C, D }
4 A2 C" E5 D7 B. I2 q4 N5 p' k" w }
2 R9 G$ A/ \8 ~4 G}
. H# m0 |+ ?) F! e |