EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教 #include "STC81.h"
9 Y% x' N! o4 }" z# @- R$ E#include "intrins.h"
! g# S8 d8 t1 D) T5 w& Y#include "485.h"
8 m+ I" {7 {. R3 Y7 `#define FOSC 24000000UL
3 {2 @ D, y$ A#define BRT (65536-FOSC/9600/4)/ h& p/ m$ m1 F0 w
#define uchar unsigned char
, h# o" u7 i+ T$ Pbit busy;; g0 [+ w; z. @# }* }- c4 V: W
char wptr;
3 ?. v- Y6 G6 h: y$ w/ A% K$ vchar rptr;
5 I5 r- q9 @: s/ h9 Ychar buffer[16];' I( Q' p/ I9 p/ j! B8 W) t
void Uart3Isr()interrupt 17 using 1
2 f' R1 C& c2 Y& l{
, g. T% t! Q7 U8 Z7 P2 F! y if(S3CON&0x02)# ?; }! }7 }0 l+ y
{
3 H4 z4 ~6 I1 t1 [- L- {% y" S S3CON&=~0x02;
: ^5 }8 ^1 g' r5 h7 j0 t! ^" E busy=0;
& Z6 m: N5 Y/ C, T9 Q& J9 @ }
" r+ c3 G$ Z- c0 @' p if(S3CON&0x01)/ H7 D+ n; R4 ]
{! E0 G+ Q4 n( u. F, i
S3CON&=~0x01;
6 g) q* z# m* n* x buffer[wptr++]=S3BUF;* [1 m/ `% {3 ?; K$ |& i: b( y
wptr&=0x0f;, f. r' K6 L4 Z6 U# q
if((buffer[7]==0x00)&&(buffer[8]==0x00))
. f7 g% e, H6 ?4 r: A {3 \ w+ f8 y- f1 T+ ], ] w# H; f
RUN11=RUN21=RUN31=RUN41=0;
1 q$ _5 v* f( h; ]2 O" v# X STOP11=STOP21=STOP31=STOP41=0;/ p; x5 F' ?) r5 H0 r
}
7 i1 S! o: f7 t7 x! N }
# ~. d8 m- s7 M9 m8 L1 E* p}! R( U; P" L2 o! M$ T" [
void Uart3Init()
/ s* b$ Z' |6 I" I{
/ c$ D% _- c+ F/ m/ c- `8 h RE485=0;//RS485设置为接收方向. s5 J1 k2 e2 R( v: X
S3CON=0x50; 1 ^2 {6 h: g* G! B$ M2 ]+ g( S' U
T3L=BRT;; Z2 ?5 m7 H( q1 s
T3H=BRT>>8;
8 c; U2 K4 k8 _) H @, k- d* w+ F T4T3M=0x0a;. c" L5 B7 W* M+ V* U: `
wptr=0x00;' \+ l- ], M N3 d7 v" K
rptr=0x00;
( M- S% Z# ^. m( b& X- _ busy=0;
" H) ^/ H% W8 e9 b% y/ b' R}
7 i5 B/ ]. R0 G3 W/ i* z' Mvoid Uart3Send(char dat)3 a( `6 m/ p- H
{' h) F2 D6 H5 Z' |7 f' k8 L
while(busy);7 K! f2 a' _6 g' S( @6 ?
busy=1;! V1 C9 O2 J9 Z( T
S3BUF=dat;# N- L3 l8 k' ]# e
}/ s, X8 D2 Z* U! a: B7 P
void main()% X# K: D. ~* X: Q
{4 K5 Q r8 X1 f5 ~
P_SW2=0x02;! a" ]9 h0 H9 [. j9 Q
Uart3Init();
, t! e4 J+ ? k% P* k: ~7 l6 o IE2=0x08;5 Y1 R3 }2 D: l8 |9 l
EA=1;
/ s! W1 T6 z" j) T. x9 C while(1), a0 X2 f" t% S; A
{, }4 |. w0 S7 l5 u4 c2 ^3 A
if(rptr!=wptr)8 S, a$ Z# |0 T& Y$ v7 @* V
{
_$ Z% \ w7 K& t9 R* o- x( U2 Y Uart3Send(buffer[rptr++]);( s7 ` e2 b7 _ K$ G' t
rptr&=0x0f;
% b2 [; H" I1 R# D1 x, f }
& ]5 x; t1 b# N$ S4 X% k! u }
$ |+ e( o* R+ j7 q! k4 m$ I}
# E6 B' `6 b: ]) U |