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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

使用串口3定时器3做波特率发生器写了一个小程序,但是通讯实现不了,求指教

#include "STC81.h"
! Y. @" I# @+ ]$ S. ~#include "intrins.h"
% {2 u1 [- M8 P/ [2 R8 h5 H# _#include "485.h"
& y4 T$ N8 H- V# x#define FOSC   24000000UL
  \5 U4 K) z# Z$ n7 H' l) G& W4 u; v#define BRT  (65536-FOSC/9600/4)# o: `) E4 }8 \
#define uchar unsigned char- ~( u2 i! }* F7 f* H
bit busy;
0 t4 X. k: j( E$ ~/ i. Gchar wptr;
5 ^3 V8 d7 ]7 r" ]2 uchar rptr;2 {/ c. b! C* g' f
char buffer[16];
, F6 O6 @) O; ]( x2 [void Uart3Isr()interrupt 17 using 1
. U. Z9 f% _" W/ k: Y1 L5 E{
/ J, a0 [9 J3 R if(S3CON&0x02)! g9 M6 Q; n, V! g. |
{
; s" S$ H( q$ l/ J  S3CON&=~0x02;
; f2 b- r0 @. H2 Z) G) T: N" h  busy=0;
+ j# O0 S% n9 y& n8 E' F }2 G% o+ S: l' y9 ]
if(S3CON&0x01)
+ u+ w$ @7 L5 q( K8 s" Y: X+ s' a {7 ]( i8 p8 h# d3 ~, F
  S3CON&=~0x01;; Z/ B' I1 a% t" c
  buffer[wptr++]=S3BUF;
: q+ k. |! `3 _' I) f' |. f$ b1 g  wptr&=0x0f;# U) k/ P' `8 f/ s
        if((buffer[7]==0x00)&&(buffer[8]==0x00))
$ A& ?& F% ?) ]   {
0 @! H7 C" v( j   RUN11=RUN21=RUN31=RUN41=0;/ c3 {, ~3 v7 c! x( D
        STOP11=STOP21=STOP31=STOP41=0;! b. E- S! a3 f0 n9 E0 ^1 c
   }" C1 F4 D! G6 j% E- Z
}. j1 d( x0 E1 z  m% o
}1 I5 L9 P( M6 Z7 {+ Y$ Z; r
void Uart3Init()
+ \" R, |4 C) A* a6 n) x{
- Q9 z/ `0 k0 G# {0 H( R RE485=0;//RS485设置为接收方向( v* m' T& q( \" p
S3CON=0x50;
2 n8 K# v" X. q; Q7 ` T3L=BRT;' T' I0 x. l. l0 U* w; q
T3H=BRT>>8;
  A7 k. M" z/ y$ r T4T3M=0x0a;
7 ]9 W5 f3 c" G1 q* O1 q wptr=0x00;, h5 {$ Z# N( D: f: G5 _9 j
rptr=0x00;% H8 v$ Q, I0 s3 a# L- i6 Z2 N
busy=0;
6 t' X7 B; \) W( [5 f}
" a' w9 I: D, O. X7 ?/ O* kvoid Uart3Send(char dat)
! O! z# i5 B# ~# i- [7 z{
! x( A: T1 V" k3 {, {# I while(busy);
# z+ X: T/ v8 Q  `% u4 t- o. O busy=1;8 p# Q& p2 M3 o/ R8 f. \+ W
S3BUF=dat;
# X6 H! `0 P8 F7 b3 H# t9 A0 ?' B}: n+ O1 S, \) A2 C9 Z' o
void main()
1 v- ^: z) }' L( E/ d0 F" s{+ e" ]8 ~! _% P* Q0 G4 T" g
P_SW2=0x02;
7 a: `8 n$ z$ r6 s) Y# [ Uart3Init();
6 L" v3 u1 n- p" X$ s+ t IE2=0x08;
' ?4 q) W5 B! I# n; \ EA=1;# y2 i. Q3 F  _9 l6 u
while(1)9 f3 v, S* [3 U( Y" e% s8 w( e4 {
{
- d5 d+ v3 d* b- G  if(rptr!=wptr)
% _! M6 n9 l$ w  h2 ?  {' c1 F3 n0 W9 ?/ b* y; F# b/ |; T
   Uart3Send(buffer[rptr++]);1 I+ E0 N) g' f# K
   rptr&=0x0f;
, E8 u' x, }' v1 @  }
, ~% w! d3 l4 h }- I) f& k2 B' `4 x* v  y0 R7 G
}


6 O6 u! h# g+ U8 v6 l5 |$ s( B

该用户从未签到

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-25 23:05 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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