1.54k likes | 1.69k Views
第 9 章 单片机的综合应用 9.1 实 训 概 要 在这一章中,我们介绍单片机系统的综合应用。使读者掌握单片机系统的总体设计过程,提高单片机系统设计能力。. 实训内容: 三相步进电机的控制 汉字液晶显示器的设计 多路温度巡检系统的设计 消防火灾自动报警控制系统. 9 . 2 单片机应用系统的开发与可靠性设计
E N D
第9章 单片机的综合应用 9.1 实 训 概 要 在这一章中,我们介绍单片机系统的综合应用。使读者掌握单片机系统的总体设计过程,提高单片机系统设计能力。
实训内容: 三相步进电机的控制 汉字液晶显示器的设计 多路温度巡检系统的设计 消防火灾自动报警控制系统
9.2 单片机应用系统的开发与可靠性设计 单片机应用系统是指以单片机为核心,加上一定的外围电路和软件程序,以实现一定功能的应用系统。它由硬件系统和软件系统两部分构成。因此,单片机应用系统设计应包含硬件设计和软件设计两部分。除此之外,为了保证单片机应用系统可靠工作,还要考虑系统的抗干扰能力,即在软件设计和硬件设计过程中还应包括系统的抗干扰设计。 9.2.1 单片机应用系统设计前的准备工作
1.可行性调研 可行性调研是分析、研究完成该项目的可能性。一方面要分析前人研究的成果,另一方面,要针对自己研究的情况,分析有哪些优点和不足,要从理论上分析其存在的可能性,还要看其客观条件是否具备,然后根据实际情况,确定能否立项。 2. 总体方案 立项后的工作就是应用系统总体方案设计。这时候可以根据系统的不同部分和要实现的功能,参考国内外同类产品的资料和性能,提出合理的、可行性的技术指标,编写设计任务书,完成系统总体方案设计。
9.2.2硬件设计 所谓硬件电路设计,是指为实现该项目所有功能所画出的全部硬件电气连线原理图。在进行硬件电路设计时,应在硬件电路总体方案上多下功夫,多花时间,不能急于求成。如果总体硬件电路方案不成熟,仓促制板、调试,往往事倍功半,得不偿失。因为整个硬件电路系统是一个协调统一的整体,如果哪一部分电路考虑不周,不能正常工作,都会给整机电路其它部分带来不利影响,甚至会影响整个硬件系统的正常工作。因此,一定要在硬件系统总体方案上花大力气。在设计电路总体方案时,可适当借鉴他人的有益经验。在此基础上,加入自己的设计思想,不失为一种便捷的做法,往往会收到好的效果。另外,借鉴别人的电路时,需要对借鉴的电路有深入透彻的理解,明确借鉴电路的适用范围,应根据自己的整机要求进行修改,以适应整机要求。
为使硬件电路设计更合理,一般应从以下几个方面考虑:为使硬件电路设计更合理,一般应从以下几个方面考虑: 可靠性要高单片机应用系统,特别是实时控制系统,最重 要的一个基本要求就是有较高的可靠性。因为一旦系统出现故障,将造成整个生产过程的混乱,指挥系统及监控系统失灵,从而导致严重后果。因此,提高电路的可靠性应贯穿于每一个环节。 提高电路可靠性可采用以下方法:采用双机系统用两台单片机做为控制系统的核心控制器,以提高系统的可靠性。 采用集散控制系统 集散控制系统是一种分级分布式控制方案。它采用多个单片机作为前置处理机,分别完成系统的某部分控制功能。整机系统可用一个主机对各个前置机进行管理。这样,可以使故障对整机系统影响达到最小。
加强系统自我诊断功能 在总体设计时,应考虑系统的故障自动检测和诊断功能。当系统正常工作时,定时地对系统各个部分自我检测,并对异常情况作出快速处理,对于无法解决的鼓掌,应及时切换备用设备,并报警。 设计时,尽可能采用标准化、模块化的典型电路,从而提高设计的成功率和结构的灵活性。 尽可能选用功能强、集成度高的电路,这样,可使元件数量和连线减少,电路可靠性提高,电路成本也降低。 选择通用性强、市场货源充足的元器件。一旦电路元器件 出现故障,能够方便地找到替代器件。
9.2.3 软件设计 软件设计是系统最重要的部分。设计的一般方法如下: 问题定义 问题的定义是明确软件承担的任务。问题定义首先要定义输入/输出。因为应用系统要通过I/O通道和外界发生联系。因此,必须确定信息交换的方式输入输出的数据速率及状态信息等。其次,要对输入数据进行哪些处理进行定义,把输入数据转变为输出结果的基本过程。
软件结构设计 在问题定义基础上,将总体任务分解为几个相对独立的子任务,设计出一个合理的软件结构,使单片机能够有条不紊地处理这些任务。 对于简单应用系统,可采用中断方式分配单片机的时间,指定哪些任务由主程序处理,哪些任务由中断服务子程序完成;对于复杂的实时控制系统,必须采用实时多任务操作系统,采用合理的调度策略。
单片机应用系统通常采用模块化程序设计方法。它采用化整为零的办法,把一个结构复杂、功能很强的程序分成若干个功能相对独立的小程序模块,对小模块分别设计,编程并调试,最后联调。小模块程序一般不宜太长、尽量采用现成的模块或子程序、各个模块力求逻辑上相对独立。单片机应用系统通常采用模块化程序设计方法。它采用化整为零的办法,把一个结构复杂、功能很强的程序分成若干个功能相对独立的小程序模块,对小模块分别设计,编程并调试,最后联调。小模块程序一般不宜太长、尽量采用现成的模块或子程序、各个模块力求逻辑上相对独立。
建立数学模型 建立数学模型,即根据问题的定义,描述出各个输入变量和输出变量之间的数学关系。 画出程序流程图 在编写程序前,应先根据建立的数学模型确定解决问题的算法,并把算法体现在程序流程图中。程序流程图的设计过程就是程序的逻辑设计过程。可以说流程图画得如何,直接影响编出程序的质量,甚至决定了程序设计的成败。因此,一定要重视程序流程图的设计。
程序流程图的画法一般应先粗后细。根据实际问题的复杂程度,决定画一张图、两张图还是三张图。通常,第一张图粗略地将总任务分解成多个子任务;第二张图则在第一张图基础上将各子任务细化,决定每一个子任务采用何种算法来实现;第三张图则进一步给出资源分配,对第二张图中的每个参数、各种指针、中间结果、计数器等分配工作单元,定义数据类型和数据结构。程序流程图的画法一般应先粗后细。根据实际问题的复杂程度,决定画一张图、两张图还是三张图。通常,第一张图粗略地将总任务分解成多个子任务;第二张图则在第一张图基础上将各子任务细化,决定每一个子任务采用何种算法来实现;第三张图则进一步给出资源分配,对第二张图中的每个参数、各种指针、中间结果、计数器等分配工作单元,定义数据类型和数据结构。 编写程序 根据画出的程序流程图,按照MCS-51汇编语言的符号和格式,书写指令,完成子模块中规定的任务,编写出汇编语言源程序。通常应加上注释。
汇编及在线仿真调试 将汇编语言源程序通过人工汇编或机器汇编,翻译成机器语言程序,输入单片机仿真系统中,进行调试、运行。如果程序有错误,要分段调试,直到找出错误所在,并进行纠正,直到程序符合设计要求。 程序的固化 将调试好的程序通过固化电路写入程序存储器EPROM中,从而完成整个软件的设计。
9.2.4应用系统的软硬件调试 单片机应用系统的调试包括硬件调试和软件调试两部分。硬件调试和软件调试不能完全分开。许多硬件电路设计、连接错误是在程序运行过程中被发现和纠正的。 整机联调前的静态调试 拿到设计好的印刷电路板,在未焊接各种元件或集成电路插座之前,应先观察印刷电路板是否有明显的断路、短路之处。尤其注意电源是否短路。或用万用表检测。如果存在上述故障,焊上元器件或集成电路后,非常难办;
焊接前,仔细检查元件参数、型号及耐压值是否正确;焊接前,仔细检查元件参数、型号及耐压值是否正确; 焊接后,要仔细检查元器件金属部分有无触碰现象,有无焊锡短路现象; 目测通过后,空载上电检查线路板各管脚电位是否正常,特别是电源正极(5V)和地线。一切正常后,插上集成电路芯片,再通电检测各点电位是否符合要求。 外部数据存储器的测试 单片机外部RAM的测试可通过程序测试法实现。可先向整个数据区全部写入同一数据,再一一读出比较,若不一致,则出错,说明外部RAM有问题。 程序存储器的调试 调试单片机的程序存储器,可把一个已知内容的EPROM芯片插到样机的EPROM插座上,插上仿真头,运行程序。
9.2.5 应用系统的抗干扰设计 应用于生产过程中的单片机控制系统,往往容易受到各种干扰的侵袭。特别是在各种工业环境下工作的单片机系统,恶劣的工业环境常常给单片机带来各种各样的干扰。因此,对单片机应用系统采取一定的抗干扰措施,已成为单片机应用系统整体设计中的一部分。干扰的来源不同,采取的抗干扰措施也不同。通常,这些干扰包括噪声干扰、电磁干扰、电源干扰、过程通道干扰等。在单片机应 用系统设计过程中,主要考虑以下几方面: 克服来自电源的干扰 电源的干扰是单片机应用系统中干扰的主要来源之一。由于任何电源及输电线路都存在分布参数,如分布电容,分布电感等。这些会引起电源的噪声干扰。可以采取隔离变压器双层屏蔽措施减少分布电容,提高系统抗干扰能力;采用交流稳压器稳定供电电压;采用分散独立功能块和干扰抑制器来消除或减小来自电源的干扰。
降低来自各功能模块的干扰 将模拟电路通过隔离放大器进行隔离;数字电路通过光电偶合器进行隔离;数字地和模拟地分开;采用差动放大器等措施提高电路的共模抑制比。 设计好地线 在单片机应用系统中,地线大致分为系统地、机壳地、模拟地、数字地等。要将各种地分开,屏蔽线采用多点接地。此外,要注意电平匹配、元器件的筛选、采用双绞线等措施来消除干扰。 软件的抗干扰设计 在程序设计中,对软件采取抗干扰设计,提高整机电路的抗干扰能力。通常采用数字滤波技术提高数据采集的可靠性。 数字滤波是指通过CPU的运算,控制完成模拟滤波器的相应功能,而不采用有源或无源RLC网络构成的模拟滤波器来实现滤波。
另外,使用控制状态失常的软件如软件冗余、软件保护、设置自检程序等也是提高系统抗干扰能力的常用措施。另外,使用控制状态失常的软件如软件冗余、软件保护、设置自检程序等也是提高系统抗干扰能力的常用措施。
9.3 三相步进电机的控制 步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出机械位移增量和输入数字脉冲对应的驱动器件。步进电机具有快速启停能力,只要电机的负荷不超过它所能提供的动态转矩,就能通过输入脉冲来控制它在一瞬间启动和停止,步进电机的步距角和转速只和输入的脉冲频率有关,和环境温度、气压、冲击以及振动无关,也不受电网电压的波动和负载变化的影响,它每转一周都有固定的参数。步进精确和步距误差不会长期积累。因此,步进电机在需要精确定位的场所应用广泛。
9.3.1 实训目的 通过本节实训,主要学习下面内容: 掌握三相步进电机的工作原理。 三相步进电机的单片机器控制。 9.3.2 实训要求 设计一个由单片机构成的步进电机控制和驱动电路。 要求单片要能控制步进电机的正反转,根据给定步长对步进电机进行控制。为提高步进电机运行时的平稳柔和性,电机采用三相六拍方式运行。
9.3.3 预备知识 步进电机的工作原理 三相反应式步进电机定子上均匀地分布有6个磁极,相邻两个磁极之间的夹角为600,线圈绕过相对的两个磁极构成一相(A-A,、B-B,以及C-C,)。此外各磁极上还有5个均匀分布的矩形小齿。电机转子上没有绕组,它上面有40个矩形小齿均匀分布在圆周上,相邻两个小齿之间的夹角为直角。 当某相绕组通电时,相应的两个磁极就分别形成N-S极,产生磁场,并与转子形成磁路。这时如果定子的小齿与转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子齿与定子齿对齐,从而使步进电机向前“走”一步。
2.步进电机的控制 根据步进电机的工作原理,若按顺序给步进电机的绕组施加有序的脉冲电流即可控制步进电机的转动,从而进行数字到角度的转换。转动的角度大小与施加的脉冲数成正比,转动的速度与脉冲频率成正比,而转动的方向则与脉冲的顺序有关。对于三反应式步进电机来说,电流脉冲的施加有三种方式: (1)单相三拍方式:按单相绕组施加电流脉冲。 正转:A→B→C→A 反转:A→C→B→A (2)双相三拍方式:按双向绕组施加电流脉冲。 正转:AB→BC→CA→AB 反转:AC→CB→BA→AC
(3)三相六拍方式:单相绕组和双相绕组交替施加电流脉冲。(3)三相六拍方式:单相绕组和双相绕组交替施加电流脉冲。 正转:A→AB→B→BC→C→CA→A 反转:A→AC→C→CB→B→BA→A 单相三拍方式的每一拍步进角为3。,三相六拍的步进角则为1.5。。因此在三相六拍方式下,步进电机的运行要平稳柔和一些,但在同样的运行角度与速度下,三相六拍驱动脉冲的频率需要提高一倍,对驱动开关管的开头特性要求较高。
步进电机的驱动方式 步进电机常用的驱动方式是全电压驱动,即在电机移步与锁步时都加载额定电压。为防止电机过流及改善驱动特性需要加限流电阻。由于步进电机锁步时,限流电阻要消耗掉大量的功率,因此,限流电阻要有较大功率容量,并且开关管也要有较高的负载能力。此外,为防止驱动开关管关断时步进电机绕组产生的感应电势击穿开关管,应在电机绕组两端并联续流二极管。三相反应式步进电机的全压驱动电路如图9-1所示。 驱动脉冲的分配也可以使用硬件方法,即使用脉冲分配器实现。但硬件方法不但结构复杂,而且成本也很高。
步进电机控制(包括控制脉冲的产生和分配)也可以使用软件方法,即使用单片机实现,这样不但简化了电路,而且也降低了成本。使用单片机以软件方式驱动步进电机,不但可以通过编程方法在一定范围之内自由地设定步进电机的转速、往返转动的角度以及转动次数等,而且还可以方便灵活地控制步进电机的运行状态,以满足不同用户的要求。因此常把单片机步进电机控制电路称为可编程步进电机控制驱动器。步进电机控制(包括控制脉冲的产生和分配)也可以使用软件方法,即使用单片机实现,这样不但简化了电路,而且也降低了成本。使用单片机以软件方式驱动步进电机,不但可以通过编程方法在一定范围之内自由地设定步进电机的转速、往返转动的角度以及转动次数等,而且还可以方便灵活地控制步进电机的运行状态,以满足不同用户的要求。因此常把单片机步进电机控制电路称为可编程步进电机控制驱动器。
功率放大电路中采用反相器N1将单片机P1.0口输出的脉冲信号进行驱动能力增强,并经三极管T11去控制光电耦合器。信号经过光电隔离后,再经过T12功率管放大,驱动步进电机的A相。功率放大电路中采用反相器N1将单片机P1.0口输出的脉冲信号进行驱动能力增强,并经三极管T11去控制光电耦合器。信号经过光电隔离后,再经过T12功率管放大,驱动步进电机的A相。 三相步进电机的B相、C相分别由单片机的P1.1、P1.2口进行控制,其功率放大和驱动电路与A相绕组相同。 三相步进电机双相六拍控制和模型见表9-1所示。
9.3.4硬件电路原理图 由单片机构成的步进电机控制系统的电路原理图如图9-2所示。
9.3.5 实训程序 实训程序入口参数:R0为步进电机步进数寄存器;PSW中F0为步进电机运转方向的方向标志位,F0=0正转,F0=1反转。步进电机控制程序流程图如图9-3所示。
开 始 N F0=0? F0=0? Y R1←POINT R1←POINT+6 A←@R1 Y A=0? N P1←A 延时 R1←R1+1 R0-1=0? N Y 返回
ORG 0000H AJMP MAIN ORG 0030H MAIN: JB F0,LOOP2 ;判断正反转 MOV R1,#POINT ;建立正转数据指针 LOOP1:MOV A,@R1 ;读控制字 JZ LOOP3 ;结束符转移 MOV P1,A ACALL DELAY ;延时 INC R1 ;数据指针加1 AJMP LOOP1 LOOP2:MOV A,#POINT ;建立反转数据指针 ADD A,#06H MOV R1,A AJMP LOOP1 LOOP3:DJNZ R0,ROUNT ;判断步数到否 RET DEPLAY:MOV R7,#M1 ;延时 DEPLAY1:MOV A,#M2 DEPLAY2:DEC A JNZ DEPLAY2 DJNZ R7,DEPLAY1 RET
POINT:DB 01H ;正转A DB 03H ;AB DB 02H ; B DB 06H ;BC DB 04H ;C DB 05H ;CA DB 00H ;循环标志 DB 01H ;反转A DB 05H ;AC DB 04H ;C DB 06H ;CB DB 02H ;B DB 03H ;BA DB 00H ;循环标志 END
9.4 汉字液晶显示器的设计 液晶显示器(LCD)由于体积小、质量轻、功耗低等特点,已成为各种便携式电子信息产品的理想显示器。点阵图形式的LCD除可以显示字符外,还可以显示各种图形信息汉字等,显示自由度大,特别适用于需要汉字显示的场所。 9.4.1 实训目的 通过本节实训,主要学习下面内容: 汉字液晶显示器的设计设计过程。 汉字液晶显示器的编程控制。
9.4.2 实训要求 设计一个汉字液晶显示器来显示汉字。 9.4.3 预备知识 HD61830是一种图形液晶显示控制器,它可以与8位微处理器接口,管理64KB显示RAM,内部时序发生器产生点阵液晶显示驱动信号。
HD61830的特点 HD61830图形液晶显示控制器可以与M6800系列MPU直接 接口,也可以与MCS-51单片机接口。 具有专用指令集。可以完成文本显示或图形显示的功能设置,可以实现画面滚动、光标、闪烁和位操作等功能。 HD61830可以管理64KB显示RAM。其中图形方式64KB,字符方式为4KB。内部字符发生器CGROM共有192种字符,其中5×7字体160种,5×11字体32种。HD61830还可以外接字符发生器使字符量达到256种。 HD61830可以静态方式显示至1/128占空比的动态方式显示。 当CS为低电平时,RS、R/W、E的各种组合所实现的功能如表9-2所示。
HD61830指令系统 HD61830有13条指令,指令由一个代码和一个功能参数组成。单片机向HD61830指令寄存器写入指令代码来选择参数寄存器,再通过数据寄存器向参数写入参数值,以实现功能的设置。HD61830给单片机提供一个忙(BF)标志柆。当BF=1,表示当前HD61830处于内部运行状态,不接受单片机的访问(读忙标志位除外)。当BF=0,表示当前HD61830允许单片机访问,单片机在访问HD61830时都要判断BF是否为0。 单片机可以在RS=1下从数据总线D7位上读出忙标志位。具体指令如下: 00D5D4D3D2D1D0方式控制,指令代码为00H.该指令参数定义了显示方式,其参数格式如下:
D0:字符发生器选择。0:GCROM;1:CGRAM。 D1:显示方式选择。0:文本方式;1:图形方式; D3和D2组合:00:光标禁止; 01:启动光标; 10:光标禁止; 11:光标闪烁。 D4:工作方式选择。0:从方式;1:主方式。 D5:显示方式选择。0:禁止显示;1:启动方式。 注意:使用图形方式(D1=1)时,只能使D0=D2=D3=0.在一般情况下,HD61830采用主方式(D4=0)。 字体设置,指令代码01H。该指令设置文本方式下字符的点阵大小,指令参数格式如下:
VP:字符点阵行数,取值范围1~16。 HP:字符方式下,表示字符点阵列数;图形方式下,表示一个字节显示数据的有效位数,HP的取值范围:6、7、8。 显示域设置,指令代码02H。该指令参数格式如下: D7 D6 D5 D4 D3 D2 D1 D0 0HN-1 HN为一行显示所占的字节数,其取值范围为2~128内的偶数值,由 HN 和 HP可以得到显示屏有效显示点列数N=HN×HP。 帧设置,指令代码03H。该指令参数格式如下:
NX为显示时的帧扫描行数,其倒数即为占空比。对单屏结构显示模块NX即为其有效显示行数;对双屏显示结构模块2NX为其有效显示行数。 光标位置设置,指令代码04H。 文本方式下的光标为一行(8×1)点阵显示,该指令用来指明光标在字符位中的第几行。指令参数格式如下: D7 D6 D5 D4 D3 D2 D1 D0 0CP-1 CP表示光标在字体中的地位置,CP的取值范围在1~VP之间。 SADL设置,指令代码08H。 SADH设置,指令代码09H。
上面两条指令设置显示缓冲区起始地址,指令参数分别是该地址的低位和高位字节。该地址对应显示屏上左上角的显示位。上面两条指令设置显示缓冲区起始地址,指令参数分别是该地址的低位和高位字节。该地址对应显示屏上左上角的显示位。 CACL设置,指令代码0AH。 CACH设置,指令代码0BH。 上面两条指令设置光标地址指针,指令参数即是该光标地址指针的低位和高位字节。其作用一是用来指示当前要读写显示缓冲区单元的地址;二是用在文本方式下,指出光标或闪烁字符在显示屏上的位置。 (10)数据写,指令代码0CH。 该指令代码随后写入数据寄存器的数据送入光标地址指针指向的显示RAM单元。光标地址指针将随着每次数据的写入而自动加1修改。
(11) 数据读,指令代码0DH。 该指令代码写入后,紧跟着一次“空读”操作,则可以连续读出光标地址指针所指向单元的内容。光标地址指针将随着每次数据的读出而自动加1修改。 (12) 位清零,指令代码0EH。 (13) 位置1,指令代码0FH。 以上两条指令的功能是将光标地址指针所指向的显示 RAM单元中的某一位清零或置1 。指令执行一次,光标地址指针自动加1 。该指令的参数格式如下: D7 D6 D5 D4 D3 D2 D1 D0 0NB-1 NB为清零或置1位值,取值为1~8,对应数据字节的LSB~MSB位。
3.HD61830液晶显示模块的应用 HD61830的管脚功能如下: DB0~DB7:数据总线,双向三态。 :片选信号,低电平有效。 R/W:读、写选择线,当R/W=1,MPU从HD61830读出数据;当R/W=0时MPU向HD61830写入数据。 RS:寄存器选择,RS=1选指令寄存器,RS=0选数据寄存器。 V0:负电源,液晶显示驱动和灰度调节,要求该电源右调节范围为12V~18V。 E:使能端,E下降沿写数据,E为高电平时,可以读数据。
9.4.4硬件电路原理图 在内藏控制器型的液晶显示模块上,已经完成了控制器与液晶驱动器显示缓冲区的接口工作,留给用户的仅仅是与微处理器的接口,如香港精电公司图形式液晶显示模块MGLS系列。因此只需要了解HD61830的指令系统及与微处理器接口的工作时序,无需对液晶显示驱动器及其与HD61830的接口作太多了解就可以使用内藏HD61830的液晶模块。 如图9-4所示为内藏HD61830的液晶显示模块与8031单片机的接口电路,液晶显示模块采用精电公司图形式液晶显示模块MGLS-240128。
9.4.5 实训程序 驱动子程序 写指令子程序。占有寄存器:A、R2及DPTR;输出寄存器:R2。指令代码如下: PR0: PUSH DPL PUSH DPH MOV DPTR,#7003H ;读指令地址 MOVX A,@DPTR ;读BF JB ACC.7,PR0 MOV DPTR,#7001H ;写指令地址 MOV A,R2 MOVX @DPTR,A POP DPH POP DPL RET
写数据及参数子程序。占用寄存器:A、DPTR及R2;输出寄存器:R2 ,写数据指令格式如下: PR1: PUSH DPL PUSH DPH MOV DPTR,#7003H ;读忙指令 MOVX A,@DPTR JB ACC.7,PR1 ;判断忙否 MOV DPTR,#7000H ;写数据地址 MOV A,R2 MOVX @DPTR POP DPH POP DPL RET
(3)读数据子程序。占用寄存器:A、DPTR;输出寄存器:A,存数据指令代码如下:(3)读数据子程序。占用寄存器:A、DPTR;输出寄存器:A,存数据指令代码如下: PR2: MOV DPTR,#7003H MOVX A,@DPTR JB ACC.7,PR0 MOV DPTR,#7002H MOVX A,@DPTR RET
(4) RAM子程序 占用寄存器:A、R2、R3及R4。 指令代码如下: PR3: MOV R3,#1FH MOV R4,#00H ;从RAM0地址开始 MOV R2,#OAH LCALL PR0 MOV R2,#00H LCALL R1 MOV R2,#OBH