微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机实现的485通讯程序

51单片机实现的485通讯程序

时间:11-11 来源:互联网 点击:
串口调试助手V2.1"辅助完成,此程序可在http://www.51hei.com下载
//此程序首先发送测试数据55H,再通过中断实现数据的接收和发送
#include"p18f458.h"
voidInterruptHandlerHigh(void);
//初始化程序
voidinitial()
{
SPBRG=0X19;//选择传输波特率为9600bps
TXSTA=0X04;//选择异步高速方式传输8位数据
RCSTA=0X80;//允许同步串行口工作
TRISC=0X80;//将RC7,RC6设置为输入,断绝与外接电路的连接
TXSTAbits.TXEN=1;//发送允许
RCSTAbits.CREN=1;//接受数据允许
PIE1bits.RCIE=1;//接收中断使能
INTCON=0XC0;//总中断和外围中断允许
}
//高优先级中断向量
#pragmacodeInterruptVectorHigh=0x08
voidInterruptVectorHigh(void)
{
_asm
gotoInterruptHandlerHigh//跳到中断程
_endasm
}
//高优先级中断服务程序
#pragmacode
#pragmainterruptInterruptHandlerHigh
voidInterruptHandlerHigh()
{
while(PIR1bits.RCIF==1)//若接收中断标志不为1,则为误操作,返回
{
TXREG=RCREG;//将接收到的数据放入发送寄存器,并启动发送
}
}
//主程序
main()
{
initial();//系统初始化
TXREG=0X55;//发送数据55H进行测试
for(;;);
}

------------------------------------------汇编语言版本的RS-232接口实现计算机和单片机通信程序------------
;
此程序通过RS-232接口来完成计算机和单片机通讯(程序以在p18f458试验板上调通)
;
本单片机程序由http://www.51hei.com提供
;
此程序首先发送测试数据55H,再通过中断实现数据的接收和发送
;
程序的调试可以用"串口调试助手V2.1"辅助完成
LISTP=18f458
INCLUDE"P18f458.INC"
ORG0x00
GOTOMAIN
ORG0x08
GOTOINTSERVE
ORG0X30
;
**************中断服务子程序***************
INTSERVE
BTFSSPIR1,RCIF;
接收中断标志为1?
GOTOERR_RE;
误操作,返回
MOVFRCREG,0;
否则,将接收到的数据通过W寄存器
MOVWFTXREG;
放入发送寄存器,并启动发送
ERR_RENOP
RETFIE
;
****************初始化程序***************
INITIALNOP
MOVLW0X19;
选择传输波特率为9600bps
MOVWFSPBRG
MOVLW0X04;
选择异步高速方式传输8位数据
MOVWFTXSTA
MOVLW0X80;
允许同步串行口工作
MOVWFRCSTA
MOVLW0X80;
将RC7,RC6设置为输入,断绝与外接电路的连接
MOVWFTRISC
BSFTXSTA,TXEN;
发送允许
BSFRCSTA,CREN;
接受数据允许
BSFPIE1,RCIE;
接收中断使能
MOVLW0XC0;
总中断和外围中断允许
MOVWFINTCON
RETURN
;
**********************主程序*********************
MAINNOP
CLRWDT
CALLINITIAL
MOVLW0X55;
发送数据55H进行测试
MOVWFTXREG
LOOP
GOTOLOOP
END

两片51单片机互相通信的串行通信程序(一个发送程序,一个接收程序)
2007-05-2708:27
;
系统晶振是11.0592MHz
;
51单片机发送单片机程序
;
此程序用Proteus仿真通过
;
此程序在硬件上测试通过
;
2007-05-27
;
附有简化电路图
;
为了使初学者能看懂,程序与图尽可能的简单扼要
;
实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮
;
如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信
ORG0000H
AJMPSTART
ORG0040H
START:
MOVSP,#60H
MOVSCON,#50H;串口方式1
MOVTMOD,#20H;T1方式2
MOVTL1,#0FDH;波特率9600的常数
MOVTH1,#0FDH
SETBTR1
movr5,#00h
WAIT:
movp1,#0ffh
mova,p1
movr5,a
lcalldelay;
读键盘,这里去抖动,还要加几句话
mova,p1
nop
CJNEA,5,WAIT;
是否有键输入
MOVSBUF,a;
串口输出键盘输入的值
NOP
SS:
JBCTI,WAIT;
是否发送完毕
SJMPSS
DELAY:
;
延时子程序
PUSH0;
保存现场
PUSH1
MOV0,#06H
DELAY1:
MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;
恢复现场
POP0
RET
END

;
系统晶振是11.0592MHz
;
51单片机接收单片机程序
;
此程序用Proteus仿真通过
;
此程序在硬件上测试通过
;
2007-05-27
;
附有简化电路图
;
为了使初学者能看懂,程序与图尽可能的简单扼要
;
实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮
;
如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信
ORG0000H
AJMPSTART
ORG0040H
START:
MOVSCON,#50H;串口方式1
MOVTMOD,#20H;T1方式2
MOVTL1,#0FDH;波特率9600的常数
MOVTH1,#0FDH
SETBTR1
WAIT:
JBCRI,DIS_REC;
是否接收到数据
sjmpwait
DIS_REC:
MOVA,SBUF;
读串口接收到的数据
movp1,a
SJMPwait
end

51单片机串行口通信程序设计例子
时间:2009-03-0617:13来源:
未知作者:
牛牛点击:768次
串行口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。单片机串行口通信
程序设计硬件连接图例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管
  串行口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。

<单片机串行口通信程序设计硬件连接图>
例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top