找回密码
 注册
关于网站域名变更的通知
查看: 225|回复: 5
打印 上一主题 下一主题

哪位大神指导一下STC8单片机的485通讯程序?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-15 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2020-5-15 13:16 | 只看该作者
这个感觉有点难

该用户从未签到

4#
发表于 2020-5-15 15:51 | 只看该作者
虽然我也不懂,但是我觉得你应该从器件手册研究
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2020-5-18 20:18 | 只看该作者
    这个程序能用吗
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-26 00:27 , Processed in 0.171875 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表