两机串行通讯单片机汇编语言编程举例

发布者:GoldenEclipse最新更新时间:2017-10-14 来源: eefocus关键字:串行通讯  单片机  汇编语言 手机看文章 扫描二维码
随时随地手机看文章

A、B两机之间串行通讯(方式1),用‘检验和’校验波特率为2400,发送缓冲区和接收缓冲区都为片内30H开始的16个字节单元。已知:fosc=11.0592MHz。 

设计A发送,B接收的双方协议如下: 

1、首先A发送‘AA’信号,B接收到后发送‘BB’应答; 

2、A方最多只发送20次‘AA’,若无应答,置错误标志,退出。 

3、A收到‘BB’后,开始发送缓冲区的数据,同时求检验和,共16个字节。 

4、B接收数据,存入缓冲区,并同时求检验和。 

5、当一个数据块发送完后,A再发送检验和(一个字节)。 

6、B接收到A的检验和后,再与本身的检验和比较。 

7、若接收正确,B方发送‘00’,否则发送‘EE‘,请求重发。 

8、若A方接收到‘00’,结束发送,接收到‘EE’则重发。 

A机的通讯程序: 

ASTA: MOV TMOD,#20H ;设T1方式2 

MOV TH1,#0F4H ;计数初值,波特率=2400 

MOV PCON,#0 ;SMOD=0 

SETB TR1 ;启动T1 

MOV SCON,#50H ;串口方式1,REN=1 

ATT0: MOV R6,#200 

MOV R7,#20 

CLR F0 ;线路故障标志=0 

ATT1:MOV SBUF,#0AAH ;发‘AA’联络 

AWA1:JBC TI,ARR1 ;查询发送中断标志位 

SJMP AWA1 

ARR1:JBC RI,ARR2 ;等待接收 

DJNZ R6,ARR1 

DJNZ R7,ATT1 ; 

SETB F0 ;线路故障 

QUIT: AJMP EXIT ;退出 

ARR2:MOV A,SBUF ;接收对方回应‘BB’ 

XRL A,#0BBH ;比较应答信号是否正确? 

JNZ QUIT ;不正确,退出 

ATT2:MOV R0,#30H ;准备发送数据 

MOV R7,#16 

MOV R6,#0 ;检验和单元 

ATT3:MOV SBUF,@R0 ;发送一个字节 

MOV A,R6 

ADD A,@R0 ;求检验和 

MOV R6,A 

INC R0 

AWA2:JBC TI,ATT4 

SJMP AWA2 ;查询发送中断标志 

ATT4:DJNZ R7,ATT3 ;计数循环 

MOV SBUF,R6 ;数据块发送完,发送检验和 

AWA3:JBC TI,ARR3 

SJMP AWA3 

ARR3:JBC RI,ARR4 ;等待接收对方回应 

SJMP ARR3 

ARR4:MOV A,SBUF ;接收到对方回应 

JNZ ATT2 ;若是‘00’则成功,否则重发。 

EXIT: RET 



B机通讯程序:(用中断方式开始) 

ORG 0000H 

LJMP MAIN 

ORG 0023H 

LJMP BRR1 ;串行中断入口 

ORG 0030H 

MAIN: 。。。。。 ;主程序 



BSTA: MOV TMOD,#20H ;设T2方式2 

MOV TH1,#0F4H ;计数初值,波特率=2400 

MOV PCON,#0 ;SMOD=0 

SETB TR1 ;启动T1 

MOV SCON,#50H ;串口方式1,REN=1 

SETB ES 

SETB EA ;允许中断 

。。。。。。。。 

BRR1: CLR ES ;串行口中断服务程序 

JBC RI,BRR2 ; 

SJMP BRR1 

BRR2: MOV A,SBUF ;接收A机联络信号 

XRL A,#0AAH 

JZ BTT1 ;正确 

AJMP EXIT ;错误,退出 

BTT1: MOV SBUF,#0BBH ;发送应答 

BWA1:JBC TI,BRR3 

SJMP BWA1 

BRR3: MOV R0,#30H ;准备接收数据 单片机 

MOV R7,#10H 

MOV R6,#0 

BRR4:JBC RI,BRR5 

SJMP BRR4 

BRR5:MOV A,SBUF ;接收一个字节 

MOV @R0,A ;存入缓冲区 

INC R0 

ADD A,R6 ; 

MOV R6,A ;求检验和 

DJNZ R7,BRR4 ;数据块计数 

BWA2:JBC RI,BRR6 

SJMP BWA2 

BRR6:MOV A,SBUF ;接收对方检验和 

XRL A,R6 ;与本机的比较 

JZ BTT2 

MOV SBUF,#0FFH ;不同,发送‘FF’ 

BWA3:JBC TI,BRR3 ;准备接收重发 

SJMP BWA3 

BTT2:MOV SBUF,#0 ;正确,发送‘00’ 

EXIT: SETB ES 

RETI 



例3、 两机通讯在方式2或3,用第9位作奇偶校验。 

发送方: 

,,,,,, 

TTT: MOV SCON,#80H ;方式2 

MOV A,#data ;data为一字节数据 

MOV C,PSW.0 ;取奇偶位 

MOV TB8,C ;奇偶位送到TB8位 

MOV SBUF,A ;发送一个字节 

LOOP:JBC TI,NEXT 内容来自单片机之家www.dpj100.com 

SJMP LOOP 

NEXT: ,,,, 



接收方: 

,,,,,, 

RRR: MOV SCON,#90H ;方式2,允许接收 

LOOP: JBC RI,RECE 

SJMP LOOP 

RECE: MOV A,SBUF ;取出接收到的字节 

JB PSW。0,ONE ;判断接收方的奇偶值 

JB RB8,ERR ;判断发送方的奇偶值 

SJMP RIGHT 

ONE : JNB RB8,ERR 

RIGHT: ,,,,,, ;接收正确 



ERR: ,,,,,,, ;接收有错 

关键字:串行通讯  单片机  汇编语言 引用地址:两机串行通讯单片机汇编语言编程举例

上一篇:一对多的通讯单片机汇编语言编程举例
下一篇:mcs-51单片机的中断源和中断向量

推荐阅读最新更新时间:2024-03-16 15:40

基于单片机系统采用DMA块传输方式实现高速数据采集
   摘 要: 介绍一种基于单片机系统设计的DMA硬件电路,以字块传输方式与高速A/D接口。结合在数字式磁通表设计中的应用给出其硬件软件设计方案实例。     关键词: 单片机系统 直接存储器存取(DMA)方式 高速A/D     PC机中外设与内存储器之间数据直接传输的DMA功能以其高效、高速、CPU资源占用少等特点已被广泛应用,这一功能通过安装在主板上的专用DMA控制器芯片或集成在外围控制芯片来实现。单片机的应用领域也常常需要有高速数据传输或数据采集,虽然近些年单片机速度有所提高,仍然无法应付类似单脉冲信号捕获、周期信号频谱分析等需要采用高速A/D的场合。对于速率在100ksps以上的数据采集或传输一般的中断查
[工业控制]
以C8051F020单片机为控制核心的人机交互系统设计
在现代各类仪器的开发中,人机交互功能正起着无可替代的作用。人机交互界面友好的仪器将更容易操作和使用,从而提高工作效率。液晶显示器(LCD)具有功耗低、价格低、寿命长、接口控制方便等特点,在科研与设计领域正发挥着越来越大的作用。FPGA 作为单片机外设的接口芯片,可以大大简化接口电路,通过对FPGA 进行编程,可以实现常用的译码、地址选通等功能。 本文以C8051F020 单片机与FPGA 互连系统为控制核心,以液晶显示控制器T6963C 为例,结合行扫描键盘,简述了一种人机交互功能的设计。 1 系统设计方案: FPGA 可在很大程度上扩展单片机的资源,然而人机交互功能仍应尽量减少对单片机及FPGA 的资源消耗, 以便将更多
[单片机]
以C8051F020<font color='red'>单片机</font>为控制核心的人机交互系统设计
STM8单片机——按键检测电路设计
硬件环境采用STM8SF103,电压为3.3V。电路需要注意的是STM8SF103这系列的IO作为输入口时只能是上拉输入和悬浮输入,虽然是弱上拉,在VCC为3.3V电压时,仍然能够被拉升至3.0V左右。 所以按键检测电路IO口一端需要接地,而不是外接上拉。悬浮方式下IO仍然会有0.89V左右电压,读取对应的IO寄存器IDR,仍然处于逻辑高电平状态。 软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下: //初始化只需要设置IO口模式即可。 GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT);//上拉输入,不产生中断 //按键检测部分 /* #def
[单片机]
STM8<font color='red'>单片机</font>——按键检测电路设计
51单片机模拟交通灯
利用51单片机的控制二极管及数码管的显示来模拟交通灯,系统晶振为11.0592MHZ,东西方向红灯设置为30秒,南北方向红灯设置为20 秒,P1.3接一个应急按钮,按下第一次放开,南北方向绿灯一直亮,东西方向红灯一直亮(目的是为了方便大领导通行),按下放开第二次,南北绿灯闪3秒黄灯亮2秒后变红灯,东西方向变为绿灯,之后沿着之前的设置一直循环,下面是仿真图、程序源代码 仿真图 程序源代码如下: 作者:胡琴 联系qq:1257394091 网站: http://www.51hei.com 本程序已经通过软件仿真以及在自己搭建的硬件上测试通过. org 0000h ajmp main org 000bh ajmp inti0 o
[单片机]
51<font color='red'>单片机</font>模拟交通灯
单片机与st188制作的心率测试仪全套设计
今天查阅了网上的资料,用用传统20引脚12864屏幕制作了一款心率测试仪。 传感器用的是检测血液上的脉搏转换成心率,在资料里面有C语言程序、板子所用的元器件的清单等。非常适合初学者买回来自己制作和练习。 运用的芯片是89C52单片机。 资料里面包含了AD教学、单片机基本原理教学、protel基础教学等。也可以说是一个学习资料库。 文档里面都是网上资料,在完成1602屏幕后,可以运用12864去尝试做。 资料里面是传统20引脚的12864,作为初学者的我,首先碰到的是普中开发板的16个引脚的12864,里面资料少之又少,仅有例程。。。 不过在其他帖子上也有介绍这块12864的,可以先在此资料里面学习传统的20引脚的使用,
[单片机]
<font color='red'>单片机</font>与st188制作的心率测试仪全套设计
基于MSP430F2274单片机对智能小车的应用设计
智能小车涉及到高级计算机控制、电子机械、自动化等诸多学科,随着科技的不断进步,智能电子产品发展步骤不断加快,各种应用层次的机器人等大量出现,目前应用在智能小车或机器人的微控制器主要是8/16单片机或ARM和数字信号处理器DSP等。本设计采用TI公司生产的功耗低运行速度快且价格便宜的MSP430F2274为核心,避障检测采用测距精准的超声波传感器,该传感器采集小车周围的环境信息并传递给MSP430进行程序判断处理,从而达到控制小车自动避障的目的。 1 系统的总体结构框图 该系统主要由MSP430控制器,超声波避障模块,电机驱动,测速,语音模块,温度模块,小车的机械运动部分采用四轮差速转向式结构,前2个轮是驱动轮,分别由电机控制其
[单片机]
基于MSP430F2274<font color='red'>单片机</font>对智能小车的应用设计
单片机在灯头红外遥控系统中的设计应用
  红外线是一种看不见的光线,因其在整个电磁波谱中处在可见光(红光)外侧而得名。他介于可见光和微波之间,既具有可见光的性质,如:直线传播、反射、折射等,又具有微波的某些特性,如:穿透力强,能穿过某些不透明物质等。   借助于红外线具有直线传播的特性,利用红外传感器具有灵敏度高、响应速度快和光谱范围窄的性能,同时也利用单片机具有结构紧凑、可靠性高、数据处理能力强、速度快、功耗小、成本低的特点,可以制作灵敏度高,抗干扰性能优良的红外遥控装置。   本设计将单片机与红外技术、电子技术 相结合,设计出的通用家用灯头遥控装置具有结构简单,操作方便,功能比较完善的特点。   1 红外遥控系统的原理   红外遥控电路的结构形式一般分为3
[单片机]
<font color='red'>单片机</font>在灯头红外遥控系统中的设计应用
从零开始51单片机教程——连载8 特殊功能寄存器
详细介绍什么是寄存器 寄存器能做什么 通过前面的学习,我们已知单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么,这些个零碎的东西怎么连在一起的,让我们来对单片机内部的寄存器作一个完整的功能分析吧! 下图中我们能看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。 单片机内部结构图 对上面的图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到对
[单片机]
从零开始51<font color='red'>单片机</font>教程——连载8 特殊功能寄存器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved