当前位置:首页 > 单片机 > 单片机
[导读]A、B两机之间串行通讯(方式1),用‘检验和’校验波特率为2400,发送缓冲区和接收缓冲区都为片内30H开始的16个字节单元。已知:fosc=11.0592MHz。设计A发送,B接收的双方协议如下:1、首先A发送‘AA’信号,B接收到

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: ,,,,,,, ;接收有错

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

8位单片机在嵌入式设计领域已经成为半个多世纪以来的主流选择。尽管嵌入式系统市场日益复杂,8位单片机依然不断发展,积极应对新的挑战和系统需求。如今,Microchip推出的8位PIC®和AVR®单片机系列,配备了先进的独立...

关键字: 单片机 嵌入式 CPU

在嵌入式系统开发中,程序烧录是连接软件设计与硬件实现的关键环节。当前主流的单片机烧录技术已形成ICP(在电路编程)、ISP(在系统编程)、IAP(在应用编程)三大技术体系,分别对应开发调试、量产烧录、远程升级等不同场景。...

关键字: 单片机 ISP ICP IAP 嵌入式系统开发

在嵌入式系统开发中,看门狗(Watchdog Timer, WDT)是保障系统可靠性的核心组件,其初始化时机的选择直接影响系统抗干扰能力和稳定性。本文从硬件架构、软件流程、安全规范三个维度,系统分析看门狗初始化的最佳实践...

关键字: 单片机 看门狗 嵌入式系统

本文中,小编将对单片机予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 单片机 开发板 Keil

随着单片机系统越来越广泛地应用于消费类电子、医疗、工业自动化、智能化仪器仪表、航空航天等各领域,单片机系统面临着电磁干扰(EMI)日益严重的威胁。电磁兼容性(EMC)包含系统的发射和敏感度两方面的问题。

关键字: 单片机 电磁兼容

以下内容中,小编将对单片机的相关内容进行着重介绍和阐述,希望本文能帮您增进对单片机的了解,和小编一起来看看吧。

关键字: 单片机 复位电路

在这篇文章中,小编将为大家带来单片机的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 单片机 异常复位

今天,小编将在这篇文章中为大家带来单片机的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 仿真器

单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 中断 boot

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 数字信号 模拟信号
关闭