MAX485与51单片机的发送、接收程序
要实现电脑的串口通过MAX232转RS485工控数据转换器相连,输出485A、485B,AT89S52单片机与MAX485芯片相连,输出485A、485B,把两者输出相连...
要实现电脑的串口通过MAX232转RS485工控数据转换器相连,输出485A、485B,AT89S52单片机与MAX485芯片相连,输出485A、485B,把两者输出相连后实现对数据的发送、接收,目前碰到的问题是单片机程序怎么实现对MAX485发送、接收的RE、DE控制,才能使电脑对单片机的收发信息,可否请各位提供建议,或者C语言程序,不胜感激!
展开
展开全部
相信你的 RE 与 DE 是连接在一起的,如果不是,你的电路就成了另类.
与 RE/DE 连接在一起的那条单片机I/O, 我命名为 CTRL_PIN ,至于是哪条,你才知道.
其实发送与接收与普通的 232 有 99.9% 的相似, 只是多了两行,看下面
发送程序时:
CTRL_PIN = 1; // 输出高电平,允许MAX485输出差分信号.
UART232_SENDCHAR(); // 普通232发送函数
CTRL_PIN = 0; // 输出低电平,禁止发送,允许接收.
接收程序时: 只要保证 CTRL_PIN = 0 就可以了,无论你是采用中断,还是沦询的方式接收字符,与普通串口用法一样
与 RE/DE 连接在一起的那条单片机I/O, 我命名为 CTRL_PIN ,至于是哪条,你才知道.
其实发送与接收与普通的 232 有 99.9% 的相似, 只是多了两行,看下面
发送程序时:
CTRL_PIN = 1; // 输出高电平,允许MAX485输出差分信号.
UART232_SENDCHAR(); // 普通232发送函数
CTRL_PIN = 0; // 输出低电平,禁止发送,允许接收.
接收程序时: 只要保证 CTRL_PIN = 0 就可以了,无论你是采用中断,还是沦询的方式接收字符,与普通串口用法一样
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
org 0030h
s0:mov tmod,#20h
mov th1,#0f3h
mov tl1,#0f3h
setb tr1
mov scon,#0d0h
mov pcon,#7fh
mov r0,#40h
mov r1,#20h
mov p0,#0ffh
mov r2,#01h
mov r3,#02h
mov a,p0
anl a,#0fh
mov dptr,#tab
mov @r0,a
movc a,@a+dptr
mov p2,a
s2: mov a,r2
setb p1.0
mov sbuf, a
clr p1.0
jnb ri,$
clr ri
clr ti
mov a,sbuf
xrl a,r2
jz s1
sjmp s2
s1:setb p1.0
mov a,@r0
mov sbuf,a
jnb ti,$
clr ti
inc r2
djnz r3,s2
tab:DB 0c0H,0f9H,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh;
END
s0:mov tmod,#20h
mov th1,#0f3h
mov tl1,#0f3h
setb tr1
mov scon,#0d0h
mov pcon,#7fh
mov r0,#40h
mov r1,#20h
mov p0,#0ffh
mov r2,#01h
mov r3,#02h
mov a,p0
anl a,#0fh
mov dptr,#tab
mov @r0,a
movc a,@a+dptr
mov p2,a
s2: mov a,r2
setb p1.0
mov sbuf, a
clr p1.0
jnb ri,$
clr ri
clr ti
mov a,sbuf
xrl a,r2
jz s1
sjmp s2
s1:setb p1.0
mov a,@r0
mov sbuf,a
jnb ti,$
clr ti
inc r2
djnz r3,s2
tab:DB 0c0H,0f9H,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh;
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询