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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

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

#include "STC81.h"8 w) a! ]: y* |7 m) k, C0 `
#include "intrins.h"
( o' c; H! y/ S4 V#include "485.h"$ _- f" ?! J$ r2 Z1 Y5 E3 e5 r8 w
#define FOSC   24000000UL
! A) U, B+ {: F#define BRT  (65536-FOSC/9600/4). x! \; }* v' }: T
#define uchar unsigned char
5 Z" k0 w+ C! I; Sbit busy;6 b5 G6 E4 A& K% M( ~# q
char wptr;. O9 E+ t4 l! O) U8 |) Z0 t! G% \
char rptr;: r( j2 ~8 B5 K, K5 U
char buffer[16];3 e9 x% w- s# f' o3 U9 h9 P
void Uart3Isr()interrupt 17 using 1
7 N' q6 H$ S( w! a) a{# k" r8 y- d- v
if(S3CON&0x02)! A9 T, N% z: n3 T0 }6 X, @, B8 Q
{3 ^# L% ?6 s9 g  k+ E) e) i. O" j1 E, Q
  S3CON&=~0x02;) x! D7 C0 Q; _) [2 Y
  busy=0;
: Y  |7 _. e+ m$ R* q% @! g }
+ k& ?/ r" E$ q1 M if(S3CON&0x01)
: e8 v3 r, u* ?; p7 U5 C6 B {
: o$ D: ?8 \" A0 Q; p  S3CON&=~0x01;
8 i& `# C: j+ k, h/ J! u2 R! N  buffer[wptr++]=S3BUF;  t5 `0 ?: i7 q
  wptr&=0x0f;
# U. S! f  R7 q" D+ K        if((buffer[7]==0x00)&&(buffer[8]==0x00))
$ }! `5 h1 F  H; o   {" v+ _1 U6 W& s) M! j  U+ q
   RUN11=RUN21=RUN31=RUN41=0;7 A. h  K5 X: ^9 P7 g' C
        STOP11=STOP21=STOP31=STOP41=0;
/ c. n& D! k: p, q   }
: p, B0 N7 p. X# C9 w) \2 e }2 Y8 `* a- d1 M% F, `( k
}
7 o% q0 p& z0 L! ?$ n. L: rvoid Uart3Init()$ m/ ~+ {0 F/ r4 i
{
0 u6 O7 [8 c8 M0 }% c) n# ? RE485=0;//RS485设置为接收方向
. T8 N3 W& [# c1 K/ b7 B S3CON=0x50; , w+ y/ w& V3 a% V
T3L=BRT;) l* ?: O0 z# V8 b: O
T3H=BRT>>8;
" Z9 i6 k- q' B1 o+ _7 x2 K T4T3M=0x0a;0 s% M* o. }' \& X+ P
wptr=0x00;
  [7 a& P$ O( x% Y, @5 g4 C rptr=0x00;6 v& I# T2 E* b" M9 T
busy=0;6 X0 ~  ~: P/ W/ k0 V" H
}
- L1 j. K4 f: z) f9 R: m* Hvoid Uart3Send(char dat)
5 g9 Q/ Q2 o  u' Q6 y{
3 o; e+ `6 G1 x% C( P while(busy);+ X& u: j. s% W" n( v
busy=1;
: f2 s& ~8 p+ \ S3BUF=dat;- |" f3 Q2 Y5 b0 V
}# ]5 X! I% Y# p, g
void main()6 Y2 i, L5 _7 R8 L; t
{
0 j$ L& n" U* h! y. v- @7 d' v5 w9 c P_SW2=0x02;, v$ f5 P1 E: A$ P, r/ ?
Uart3Init();
4 a+ l0 C, B. J. }! f IE2=0x08;
# U) K# `& U7 f( w" t+ s6 k$ ^ EA=1;
4 H, e- ~7 S# p$ X" Z while(1)0 D9 r3 a  j- s/ H% J, Q3 @
{
% Q$ n$ f% R, ]& Q  if(rptr!=wptr)% `% g" D+ e' x9 X, ]
  {3 G6 ]4 \! O6 w2 }$ {
   Uart3Send(buffer[rptr++]);: Y% ]" m+ E  m; |4 r( {
   rptr&=0x0f;
5 |4 `$ ?" r7 ?* D2 o! _# ^  }
* }& E) S3 [2 P }
& s$ l! A! t0 c) O, k}


, C/ C* ?8 {- v$ ]/ y* v9 X
  • TA的每日心情

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

    [LV.1]初来乍到

    6#
    发表于 2020-5-18 20:18 | 只看该作者
    这个程序能用吗

    该用户从未签到

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

    该用户从未签到

    2#
    发表于 2020-5-15 13:16 | 只看该作者
    这个感觉有点难
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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