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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

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

#include "STC81.h"
5 ?3 d  x/ G! _+ n1 n) q9 b% G, Q/ Q+ c#include "intrins.h"# b  z9 O% J  P& _6 s/ I5 `. P
#include "485.h"! O, }) X3 O$ w
#define FOSC   24000000UL
! d% v5 Z% K  [( X9 A#define BRT  (65536-FOSC/9600/4)
: O/ E, G" F' H" S1 q5 ^#define uchar unsigned char
! S8 e5 h) h8 L. A5 N  Rbit busy;: n1 E# _; T' ~- B! m
char wptr;
3 {- D$ x! R- P4 `7 w+ Ychar rptr;: J9 q; a# K3 R5 m' c0 w) N
char buffer[16];
  k; f& i: T9 l) B. Mvoid Uart3Isr()interrupt 17 using 10 g6 ?( D' ^, o
{$ O' @( n8 {9 J  I
if(S3CON&0x02)' _( K. l5 L/ W- V/ s! Z. K+ i
{
: Z& a9 w1 @! E  S3CON&=~0x02;
2 a" K0 y& D3 w9 R  busy=0;7 U! ~( J& c1 D& e7 n( b# p
}
7 k  b4 F5 z" }8 i" `3 S if(S3CON&0x01)! _. S5 H* K# T: c1 F5 t
{7 D! L! z2 ^0 t, `
  S3CON&=~0x01;
# e" h# q6 P4 E* s; ~% n  buffer[wptr++]=S3BUF;9 I$ X6 C# P& d+ |9 [1 b' I% ~
  wptr&=0x0f;8 O# g8 K( ^4 k. i4 N
        if((buffer[7]==0x00)&&(buffer[8]==0x00))% b$ I2 x/ _0 V( q6 z8 d
   {0 c. @" \1 `8 C8 p% @
   RUN11=RUN21=RUN31=RUN41=0;
# ^* K9 c* L& U9 d        STOP11=STOP21=STOP31=STOP41=0;1 f1 m- W  P( j. ]  @' E
   }3 v- j& }' t6 c2 n5 d! t7 m
}. `# b# Z, C/ q) M0 `$ r  \
}; h% j$ ]# K. P0 p
void Uart3Init()) R. n" D7 ~$ [+ \" m! l
{
7 Q/ i: v/ \  [3 s RE485=0;//RS485设置为接收方向
" v" I' t# r& z: h/ ^- \" ] S3CON=0x50; : C  Q8 C1 [* r: l0 h
T3L=BRT;
' V6 m  i  w# p: j9 u T3H=BRT>>8;# [6 P7 j0 F" W7 i
T4T3M=0x0a;
7 {9 G- Q; ^( h$ T) r! R wptr=0x00;
; p" j9 |7 {' q* m9 c/ k3 W8 I rptr=0x00;! p1 H) j% m+ t# E6 A  Z* b' i2 K
busy=0;* l/ Q# f4 W! G9 [. M) B
}
& R: v" m8 v  c1 t8 E- F0 N& c8 ]void Uart3Send(char dat)
% A4 m( F; k1 R' z{  d1 w) q6 j( Q: `1 x4 Y3 @  t
while(busy);
1 g( n3 A6 @7 _& @4 I busy=1;
" }9 }3 Z. [2 l( _/ t& C S3BUF=dat;( r, i3 G" a% i  n! \+ O
}, G' b. a# f8 F7 S" O2 k
void main()
6 E5 l" x/ g( V{( q( L3 B: t0 c- u) P" B
P_SW2=0x02;
5 r' x1 d8 X6 V/ k7 v! z% J Uart3Init();
+ O4 s6 q2 v. `9 { IE2=0x08;) ^: l" v3 M* c0 Z, F" v( r
EA=1;
7 S- b8 B6 l2 u& \ while(1)
8 w& p% z2 `: B" ` {
- x' m7 k0 R/ H  if(rptr!=wptr)3 e1 s% M& d' V6 q( r  W
  {
3 [. n8 s+ l, q0 f   Uart3Send(buffer[rptr++]);
9 M, v* \5 F9 l5 S5 C   rptr&=0x0f;
* s/ |  F7 W, C5 C/ i5 h0 u8 y  }
' r  K; {: d" Y }
+ T* M1 Q9 n/ M  ?}


7 u* b7 K( ^2 |( s  W" H

该用户从未签到

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-10-26 10:14 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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