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

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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 02:00 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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