单片机双机之间的串行通信设计

合集下载

单片机双机串口通信

单片机双机串口通信

单片机双机串口通信在现代电子技术领域,单片机的应用无处不在。

而单片机之间的通信则是实现复杂系统功能的关键之一。

其中,双机串口通信是一种常见且重要的通信方式。

什么是单片机双机串口通信呢?简单来说,就是让两个单片机能够通过串口相互交换数据和信息。

想象一下,两个单片机就像是两个小伙伴,它们需要交流分享彼此的“想法”和“知识”,串口通信就是它们交流的“语言”。

串口通信,顾名思义,是通过串行的方式来传输数据。

这和我们日常生活中并行传输数据有所不同。

在并行传输中,多个数据位同时传输;而在串行传输中,数据一位一位地按顺序传送。

虽然串行传输速度相对较慢,但它所需的硬件连线简单,成本较低,对于单片机这种资源有限的设备来说,是一种非常实用的通信方式。

在进行单片机双机串口通信时,我们首先要了解串口通信的一些基本参数。

比如波特率,它决定了数据传输的速度。

就像两个人说话的快慢,如果波特率设置得不一致,那么双方就无法正常理解对方的意思,数据传输就会出错。

常见的波特率有 9600、115200 等。

还有数据位、停止位和校验位。

数据位决定了每次传输的数据长度,常见的有 8 位;停止位表示一个数据帧的结束,通常是 1 位或 2 位;校验位则用于检验数据传输的正确性,有奇校验、偶校验和无校验等方式。

为了实现双机串口通信,我们需要在两个单片机上分别进行编程。

编程的主要任务包括初始化串口、设置通信参数、发送数据和接收数据。

初始化串口时,我们要配置好相关的寄存器,使其工作在我们期望的模式下。

比如设置波特率发生器的数值,以确定合适的波特率。

发送数据相对来说比较简单。

我们将要发送的数据放入特定的寄存器中,然后启动发送操作,单片机就会自动将数据一位一位地通过串口发送出去。

接收数据则需要我们不断地检查接收标志位,以确定是否有新的数据到来。

当有新数据时,从接收寄存器中读取数据,并进行相应的处理。

在实际应用中,单片机双机串口通信有着广泛的用途。

比如在一个温度监测系统中,一个单片机负责采集温度数据,另一个单片机则负责将数据显示在屏幕上或者上传到网络。

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信单片机课程设计双机串行通信在当今的电子信息领域,单片机的应用无处不在。

而双机串行通信作为单片机系统中的一个重要环节,为实现设备之间的数据交换和协同工作提供了关键的技术支持。

一、双机串行通信的基本原理双机串行通信是指两个单片机之间通过串行接口进行数据传输的过程。

串行通信相较于并行通信,具有线路简单、成本低、抗干扰能力强等优点。

在串行通信中,数据是一位一位地按顺序传输的。

常见的串行通信协议有 UART(通用异步收发器)、SPI(串行外设接口)和 I2C(内部集成电路)等。

在本次课程设计中,我们主要采用 UART 协议来实现双机串行通信。

UART 协议包括起始位、数据位、奇偶校验位和停止位。

起始位用于标识数据传输的开始,通常为逻辑 0;数据位可以是 5 位、6 位、7 位或 8 位,具体取决于通信双方的约定;奇偶校验位用于检验数据传输的正确性,可选择奇校验、偶校验或无校验;停止位用于标识数据传输的结束,通常为逻辑 1。

二、硬件设计为了实现双机串行通信,我们需要搭建相应的硬件电路。

首先,每个单片机都需要有一个串行通信接口,通常可以使用单片机自带的UART 模块。

在硬件连接方面,我们将两个单片机的发送端(TXD)和接收端(RXD)交叉连接。

即单片机 A 的 TXD 连接到单片机 B 的 RXD,单片机 B 的 TXD 连接到单片机 A 的 RXD。

同时,还需要共地以保证信号的参考电平一致。

此外,为了提高通信的稳定性和可靠性,我们可以在通信线路上添加一些滤波电容和上拉电阻。

三、软件设计软件设计是实现双机串行通信的核心部分。

在本次课程设计中,我们使用 C 语言来编写单片机的程序。

对于发送方单片机,首先需要对 UART 模块进行初始化,设置波特率、数据位、奇偶校验位和停止位等参数。

然后,将要发送的数据放入发送缓冲区,并通过 UART 发送函数将数据一位一位地发送出去。

对于接收方单片机,同样需要对 UART 模块进行初始化。

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。

2.掌握Keil与Proteus的联调技巧。

3.掌握串行通信在单片机系统中的使用。

4.掌握调度器设计的基础知识:函数指针。

二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。

b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。

i.甲机发送“A”,控制乙机LED1闪烁。

ii.甲机发送“B”,控制乙机LED2闪烁。

iii.甲机发送“C”,控制乙机LED1,LED2闪烁。

iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。

c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。

两机的程序要分别编写。

d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。

2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。

b.单片机把计算结果向PC机发送字符串。

c.PC机接收计算结果并显示出来。

d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。

基于51单片机的多机通信系统设计

基于51单片机的多机通信系统设计

基于51单片机的多机通信系统设计多机通信系统是指通过一台主机与多台从机之间进行数据交互和通信的系统。

在本设计中,我们将使用51单片机实现一个基于串行通信的多机通信系统。

系统硬件设计如下:1.主机:使用一个51单片机作为主机,负责发送数据和接收数据。

2.从机:使用多个51单片机作为从机,每个从机负责接收数据和发送数据给主机。

3.串口:主机和从机之间通过串口进行通信。

我们可以使用RS232标准通信协议。

系统软件设计如下:1.主机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。

b.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。

c.接收数据:接收从机发送的数据,并存储在接收缓冲区中。

2.从机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。

b.接收数据:接收主机发送的数据,并存储在接收缓冲区中。

c.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。

系统工作流程如下:1.主机启动,执行初始化操作,包括初始化串口。

2.从机启动,执行初始化操作,包括初始化串口。

3.主机发送数据给从机:主机将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。

4.从机接收并处理数据:从机接收主机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。

5.从机发送数据给主机:从机将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。

6.主机接收并处理数据:主机接收从机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。

7.主机和从机循环执行步骤3-6,实现多机之间的数据交互和通信。

多机通信系统的设计考虑到以下几个方面:1.硬件设计:需要合理选择单片机和串口的类型和参数,确保系统的稳定性和可靠性。

2.软件设计:需要设计适应系统需求的通信协议和数据处理提取方法,保证数据的准确性和完整性。

3.通信协议:需要定义主机和从机之间的通信协议,包括数据的格式、传输方式等,以便实现正确的数据交互。

双机通讯实验报告

双机通讯实验报告

单片机实验报告(自动化15级)实验名称:串行通讯实验一、实验目得1。

掌握单片机串行口工作方式;2。

掌握双机通讯得接口电路设计及程序设计。

二、实验设备1、PC机;2.单片机最小系统教学实验模块;3、数码管显示模块三、实验内容1.双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。

我们U1为甲机,U2为乙机。

甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上.电路如图1所示。

要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11、0592M。

图1 双机通信原理示意图附加要求:乙机接收完毕后,将本机(乙机)得学号后8位发送回甲机,甲机显示在数码管上。

2、单片机与PC机通信单片机向PC机发送数据。

单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11、0592M。

四、实验原理4.1串行通讯得方式在串行通讯中,有两种基本得通讯方式:异步通讯,同步通讯.异步串行通讯规定了字符数据得传送格式,既每个数据以相同得帧格式发送.每个帧信息由起始位、数据位、奇偶校验位与停止位组成。

本实验主要学习异步通讯得实现方法。

在异步通讯中,每一个字符要用起始位与停止位作为字符开始与结束得标志,以至占用了时间。

所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯.同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送与接受同步.而就是通过同步字符在每个数据块传送开始时使收/发双方同步.按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。

(1)单工方式在单工方式下,通讯线得一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定得方向传送。

(2)半双工方式在半双工方式下,系统中得每个通讯设备都由一个发送器与一个接收器组成,通过收发开关接到通讯线路上,如图33—1所示。

单片机的双机串口通信原理

单片机的双机串口通信原理

单片机的双机串口通信原理单片机的双机串口通信原理是通过串口连接两个单片机,使它们能够进行数据的传输和通信。

串口是一种常见的通信方式,它使用两条信号线进行数据的传输:一条是串行数据线(TXD),用于发送数据;另一条是串行接收线(RXD),用于接收数据。

通过串口通信,两个单片机可以进行双向的数据传输,实现信息的互相交流和共享。

在双机串口通信中,一台单片机充当主机(Master),另一台单片机充当从机(Slave)。

主机负责发起通信请求并发送数据,从机负责接收并响应主机发送的数据。

通信过程中,主机和从机需要遵守相同的协议和通信规则,以确保数据的正确和可靠传输。

双机串口通信的主要步骤如下:1. 端口初始化:在双机串口通信开始之前,两台单片机的串口端口需要初始化。

主机和从机需要设置相同的波特率(Baud Rate),数据位数(Data Bits)、停止位数(Stop Bits)和校验方式(Parity Bit),确保两台单片机之间的通信能够正常进行。

2. 数据发送:主机将要发送的数据写入到串口发送寄存器中,然后通过串口发送线路将数据位一位一位地发送给从机。

主机发送完所有数据位后,等待从机的响应。

3. 数据接收:从机通过串口接收线路接收主机发送的数据位,然后将接收到的数据位存放在串口接收寄存器中,等待从机的处理。

4. 数据处理:从机接收到主机发送的数据后,根据通信协议和通信规则进行数据处理。

从机可能需要对数据进行校验、解析和执行相应的操作,然后将处理结果写入到串口发送寄存器中,以供主机进行相应的处理。

5. 响应发送:从机将处理结果写入到串口发送寄存器中,然后通过串口发送线路将数据位一位一位地发送给主机。

从机发送完所有数据位后,等待主机的进一步操作。

6. 数据接收:主机通过串口接收线路接收从机发送的数据位,然后将接收到的数据位存放在串口接收寄存器中,等待主机的处理。

7. 数据处理:主机接收到从机发送的数据后,根据通信协议和通信规则进行数据处理。

单片机双机串行实验报告

单片机双机串行实验报告

单片机双机串行实验报告实验目的:通过单片机实现双机串行通信功能,掌握串行通信的原理、方法和程序设计技巧。

实验原理:双机串行通信是指通过串行口将两台单片机连接起来,实现数据的传输和互动。

常用的串行通信方式有同步串行通信和异步串行通信。

异步串行通信是指通过发送和接收数据时的起始位、停止位和校验位进行数据的传输。

而同步串行通信是指通过外部时钟信号进行数据的同步传输。

实验器材:1.两台单片机开发板(MCU7516)2.两个串口线3.两台计算机实验步骤:1.将两台单片机开发板连接起来,通过串口线连接它们的串行口。

2.在两台计算机上分别打开串口调试助手软件,将波特率设置为相同的数值(例如9600)。

3.在编程软件中,编写两个程序分别用于发送数据和接收数据。

4.在发送数据的程序中,首先要设置串口的波特率、数据位、停止位和校验位,并将数据存储在缓冲区中。

然后利用串口发送数据的指令将数据发送出去。

5.在接收数据的程序中,同样要设置串口的参数。

然后使用串口接收数据的指令将接收到的数据存储在缓冲区中,并将其打印出来。

实验结果与分析:经过实验,我们成功地实现了单片机之间的双机串行通信。

发送数据的单片机将数据发送出去后,接收数据的单片机能够正确地接收到数据,并将其打印出来。

实验中需要注意的是,串口的波特率、数据位、停止位和校验位必须设置为相同的数值。

否则,发送数据的单片机和接收数据的单片机无法正常进行通信。

同时,在实验之前,需要了解单片机开发板支持的串口通信相关的指令和函数。

实验总结:通过本次实验,我们深入了解了单片机之间的双机串行通信原理和方法。

掌握了串口的设置和使用方法,以及相关的指令和函数。

在实验中,我们学会了如何通过串行口实现数据的传输和互动,为今后的单片机应用和开发打下了基础。

同时,我们还发现,双机串行通信在实际应用中有着广泛的用途。

例如,可以通过串行通信实现两台计算机之间的数据传输,或者实现单片机与计算机之间的数据收发。

基于STC89C52RC单片机间的串口通信程序设计

基于STC89C52RC单片机间的串口通信程序设计

基于STC89C52RC 单片机间的串口通信程序设计叶林勇(三峡电力职业学院,湖北宜昌443000)1概述在工控系统和工程应用中,当需要实现主从节点间的控制时,常需要使用单片机的串口通信功能。

因而主从式分布式系统成为现代工业广泛应用的模式。

它们大多由MCS 原51单片机组成。

由于单片机具有功能强、体积小、价格低廉、开发应用方便,能实现全双工串行通讯的特点,在智能仪表、数据采集、工业控制等方面都有广泛的应用。

本文中两块实验板的R1与L2、R2与L1、两机的地线分别相连,如图1所示。

图1STC89C512MCS-51串口介绍2.1串行接口数据缓冲器(SBUF )SBUF 是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。

通过指令来区别读写的是接收缓冲器还是发送缓冲器。

串行口对外也有两条独立的收发信号线RxD(P3.0)、TxD (P3.1),可以同时发送、接收数据,实现全双工。

2.2串行口控制寄存器(PCON )SCON 寄存器用来控制串行口的工作方式和状态,它可以按位寻址。

在复位时所有位被清零,字节地址为98H 。

各位含义如下:SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。

串行接口工作方式特点见下表SM2:多机通信控制位。

REN :接收允许控制位。

软件置1允许接收;软件置0禁止接收。

TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。

RB8:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

TI :发送中断标志。

用于指示一帧数据发送是否发送完毕。

在方式0时,当串行发送第8位数据结束时,或在其他方式,串行发送停止位的开始时,由内部硬件使TI 置1,向CPU 发中断请求。

在中断服务程序中,必须用软件将其清0,取消此中断申请。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业方向课程设计报告
题目:单片机双机之间的串行通信设计
单片机双机之间的串行通信设计
一.设计要求:
两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。

二、方案论证:
方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。

方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。

两种方式从设计上来说各有特色,而且两种方式都应该是可行的。

方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。

主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。


码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。

另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。

三、理论设计:
采用AltiumDesigner绘制的原理图(整图)
本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。

本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、
设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一数据的发送过程,然后按照此过程不段循环,直到结束。

单片机最小系统:接上电源和地,
晶振电路提供脉冲,加上复位电路,将
EA接入高电电平选择片内程序存储器。

这是一个单片机能够工作的最低设置。

4*4矩阵键盘:将矩阵键盘接入
p1口通过按键扫描程序读写P1口从而
判断有无安键按下,通过查键值程序
确定其键值从而得到输入数据。

这是
整个系统的输入接口。

功能控制电路:控制键(图中为
K3)被按下时p0.0为低电平,否则为
高电平,这样就可以根据读入的p0.0
的电平差别控制通信系统的功能。


电平时让从机显示接收到的数据,低电平从机更改波特率。

数据显示模块:译码程序将获得的
数据译成可直接显示的段码输到p2
口,用数码管显示。

为防止单片机的带
负载能力不足,本设计中加了上拉电阻
使数码管显示更清晰。

波特率更改指示电路:在从机更改波特率之后同时给P1口写数是相应指示灯亮,指示此时两机之间通信的波特率为多少。

开始
开始
初始化,设置初始波特率及相应寄存器 发送呼叫信号0EH,并等待从机回答
调用发送程序准备发送数据 初始化,设置初始波特率及相应寄存器
键按下?
01H?
N Y
等待从机回答
对键值加校验位,发送
0FH?
P1.0==1?
Y
N
N N
Y
显示接收数据
回发0FH
回发F0H
回发
02H
回发01H
等待主机发送数据并校验
更改波特率,及相关处理
等待主机握手
等待从机回答
对键值加校验位,加标志位,等待发送
0FH? Y
N
Y
N
Acc.5==1?
无错?
收OEH ?
返回
N
Y
N
Y
四、电路仿真及仿真结果分析:
Y
返回
控制键未被按下
控制键未被按下时,从机显示
接收到到的数据
指示灯未亮表明此时从机未设置波特率,以初始波特率工作
指示灯亮表明通信系统此时以指定波特率工作
控制键被按下时,从机不显示数据
两机之间数字
信号的传输
用示波器观察两机之间的信息交流
下图是系统软件仿真的结果,以下现象表明系统能正常工作并实现预设结果。

五、作品功能和使用说明: 接上电源系统开始工作,功能件控制从机功能,键盘输入数据,主机发送数据,从机接收数据。

当控制键未
被按下时,从机显示接收到的数据;控制键被按下时从机不再显示数据,只更改波特率,同时点亮相应的指示灯。

指示灯会指示当前工作的波特率,灯不亮时单片机以默认波特率工作。

系统断电时结束通信。

控制键被按下
波特率指示灯
电源接口及开关
六、心得体会:
经过这几天的努力终于将设计完成了。

整个过程虽然遇到很多问题,但是确实感觉又学到了了不少东西。

整个系统的设计很快就决定下来了,但是在软件编写完之后进行软件仿真时,一直不能不能成功。

然后一步步的查错,从功能流程图开始,一步步检查,理清系统的时序逻辑关系。

确保逻辑功能没问题后,对软件进行调试,逐步调试、设置相关寄存器、查看相应的io 口,然后发现这里也没什么问题。

于是直接在程序中设置标志位,观察程序的运行情况。

后来发现问题主要出现在两个地方:一是软件不能自动返回,重复执行,于是在程序中增加了循环语句和返回语句;二是没有正确保存数据和取数据,主要体现在查键值后没有保护数据及进行校验后没有进行重取原数据,这是两个非常易错的问题。

另外功能上单片机之间的“握手”和等待通讯
从机只显示数据
从机更改波特率,不显示数据
过程也是非常重要的。

另外在硬件制作时也遇到了一些问题,主要是在制作PCB板时由于腐蚀过度导致出现了很多断路,以至调试时得检查电路,同时对整个系统的美观造成很大影响。

不过,这次设计确实让我对通信过程有更深的理解。

七、参考文献
[1]李建忠.单片机原理及应用(第二版.西安电子科技大学出版社)
[2]何小艇.电子系统设计(第四版.浙江大学出版社)
系统程序:
/*************************************************************************
* 约定:主机发送呼叫信号"0EH",咨询从机是否可以接受数据*
* 从机发送"01H"表示可以接受,否则发送"02H"表示暂时不能接受数据*
* 主机只有收到了应答信号"01H"才向从机发送数据,否则继续呼叫*
* 主机收到"0FH"表示发送正确,收到"F0H"表示发送错误*
* 设置:串口工作于方式1 ,定时器做波特率发生器工作于方式2,SMOD=1, *
* 波特率为1200时计数初值为D0, 2400--E8H, 4800-F4H, 9600-FAH *
* 两片单片机开始波特率设为4800 *
* 通过按键进行功能选择,按下P0.0=0设置波特率未按P0.0=1数据显示* *************************************************************************/
主机程序:
/*****************发送程序********************/
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
MOV TMOD, #20H ;置定时器/计数器1工作于方式2定时
MOV TL1, #0F4H ;置定时器/计数器1初值,初始波特率为4800
MOV TH1, #0F4H ;置重装值
MOV PCON,#80H ;SMOD=1
MOV SCON,#50H ;串行口工作于方式1
SETB TR1
/****************首先进行查键子程序***************/ BEGAIN: ACALL KEY
MOV R1,A
ACALL HUJIAO
AJMP BEGAIN
/************按键扫描****************/
KEY: ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下(A)=0,
AJMP KEY
LK1: ACALL DELAY
ACALL KS1
JNZ CKEY
AJMP KEY
CKEY: MOV R2,#7FH
MOV R4,#00H
CKEY1: MOV P1,R2
JB P1.0,LONE
MOV A,#00H
AJMP LPK ;转到键值计算子程序LONE: JB P1.1,LTWO
MOV A,#04H
AJMP LPK
LTWO: JB P1.2,LTHR
MOV A,#08H
AJMP LPK
LTHR: JB P1.3,NEXT0
MOV A,#0CH
LPK: ADD A,R4
PUSH ACC
LK3: ACALL KS1
JNZ LK3
ACALL DELAY
POP ACC。

相关文档
最新文档