执行指令 orl pcon,02h后,单片机pcon将会怎样

(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
&&|&&0次下载&&|&&总159页&&|
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
下载:50积分
相关分类推荐
0人评价2页
0人评价7页
0人评价2页
0人评价3页
0人评价3页
所需积分:(友情提示:大部分文档均可免费预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
文档内容侵权
已存在相同文档
不属于经济管理类文档
源文档损坏或加密
若此文档涉嫌侵害了您的权利,请参照说明。
我要评价:
价格:50积分VIP价:40积分《单片计算机及其应用》讲义_四川师范大学:单片计算机及其应用_ppt_大学课件预览_高等教育资讯网
四川师范大学:单片计算机及其应用:《单片计算机及其应用》讲义
分类: 格式: 日期:日
单片计算机及其应用梁 文 海EMAIL,sicnu_.cn四川师范大学物理与电子工程学院2005年 08月 28日单片计算机及其应用第一章 绪论第二章 MCS― 51单片机的结构和原理第三章 MCS51指令系统第四章 汇编语言程序设计第五章 MCS-51单片机内部定时 /计数器及其应用第六章 单片机系统扩展第七章 MCS-51系统的串行接口第八章 MCS-51 单片机的中断系统第九章 单片机应用系统的组成第章绪论本章内容Single Chip Microcomputer什么是单片机单片机特点及应用单片机的结构特点一、什么是单片机1、微型计算机硬件结构 ―― 常见的微机外形台式微机 便携式微机立式微机微型计算机硬件结构 ―― 微机硬件组成显示器主机键盘鼠标微型计算机硬件结构 ――运 算 器控 制 器CPU存 储 器输入接口电路输入设备输出设备输出接口电路硬件系统内部结构硬件系统 ―― 构成微机的实体和装置软件系统 ―― 微机系统所使用的各种程序的总称软件系统 与 硬件系统 共同构成实用的微机系统,两者是 相辅相成、缺一不可的。软件系统+微型计算机系统运 算 器控 制 器CPU存 储 器输入接口电路输入设备输出设备输出接口电路硬件系统微型计算机系统CPU输入设备输出设备软件系统+微型计算机系统硬件系统输入接口设备输出接口设备运 算 器控 制 器存 储 器单片微型计算机 是指集成在一个芯片上的微型计算机,简称单片机 ―― 单片机实质上就是一个 芯片2、单片微型计算机单片机内部结构示意图C P U存 储 器定 时 器 / 计 数 器 中 断 系 统P0-P3 TxDRxDT INT并行I/O口串行I/O口单片机应用系统单片机应用系统单片机 +接口电路及外设等+ 软件硬件单片机应用系统由 硬件 和 软件 组成硬件是 应用系统的基础软件是在硬件的基础上 对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可注:本课程的重点 1.掌握单片机应用系统硬件原理的分析方法。2.掌握软件设计与调试的基本技能。二,单片机的结构特点2、引脚采用分时复用技术。 由于芯片集成度高,而引脚又不宜过多,因此将部分引脚设计为多功能的,例如,地址总线和数据总线采用分时复用等。1、存储结构。 采用 ROM和 RAM严格分开的哈佛结构,可分为:内部 ROM、RAM,外部 ROM,RAM。3、特殊功能寄存器 (21个 ) 采用特殊功能寄存器来控制单片机的功能状态,如定时 /计数器、串行口和中断逻辑等。4、全双工串行接口 内部具有全双工串行接口,可实现单机或多机通讯,为实现分布式控制系统提供了可能。5、布尔处理器 内部具有布尔处理器,可十分方便的进行二进制位逻辑运算,进行组合逻辑设计三、单片机的特点及应用1,单片机的特点体积小, 重量轻电源单一,功耗低功能强,价格低运行速度快,抗干扰能力强,可靠性高可以嵌入到电子产品中 ―― 嵌入式应用系统2,单片机应用工业方面民用方面仪表方面电讯方面数据处理方面汽车方面A、单片机应用模式1、单机应用即在一个应用系统中仅使用了一个单片机,其主要应用领域有:智能产品、智能仪表、测控系统、数控控制机智能接口。2、多机应用多机应用是单片机在高科技领域中应用的主要模式,其高可靠性, 高控制功能 及 高运行速度 的,三高” 技术,在未来的高科技工程系统中采用单片机多机系统作为主要的发展方向。其应用模式可分为功能弥散系统、并行多机处理系统和局部网络系统。B、单片机的供应状态单片机通过执行指令流来完成预先设定的功能,其指令的存放方式取决于片内 ROM的配置情况:1、片内 ROM配置 即单片机片内带有 掩模ROM,其内容由厂家出厂时设定,因而其生产周期长,经济 风险大 但 成本较低 。征对以上特点,已有厂家推出了一次性(即 OTP型)用户可编程的单片机,因而兼具成本低、周期短、低风险等优点。2、片内 EPROM配置 适用于样机开发,可多次重写。3、片内 E2PROM配置 适用于样机开发,可多次重写,其重写比 EPROM更方便,目前使用最为广泛。4、片内无 ROM配置 由于片内无 ROM,因而需在片外扩展 ROM,其电路复杂,灵活性差,已逐渐被 淘汰。C、单片机的等级集成电路依据其使用环境可分为三个等级1、商用级 温度范围为 0~70OC,限用于机房及办公环境2、工业级 温度范围为 -45~85OC3、军用级 温度范围为 -50~125OC不同级别之间价格相差很大,如军用级为商用级的10倍乃至上百倍。单片机为工业级产品。3,单片机种类◆ 生产厂商:美国微芯片公司,PIC16C××系列,PIC17C××系列,PIC1400系列,美国英特尔公司的 MCS-48和 MCS-51系列,美国摩托罗拉公司的 MC68HC05系列和 MC68HC11系列,美国齐洛窆镜 Z8系列,日本电气公司的 μPD78 ××系列,美国莫斯特克公司和仙童公司合作生产的 F8( 3870)系列等。A、单片机的分类(按用途)( 1)通用型单片机 它可向开发者提供较多资源,具有较强的通用性,适应性较强,应用较为广泛,便于普及和推广,但有时会造成大量资源的浪费。( 2)专用型单片机 专门征对特殊使用场合的具体要求而设计,通常是微控制系统的集成产品,因而其抗干扰能力比通用型强,适用于各种恶劣环境,但由于其专用性强,其应用范围受到了很大的限制。B、按字长分类( 1) 4位机 主产于日本,如 SM系列,UPD系列等,其特点是价癖阋耍涫翟怂隳芰差。( 2) 8位机 目前市面上的主导机型,如 Intel,Motorola,Zilog等厂家的产品,由于其功能强大,价竦土分址倍啵荡砟芰σ般,应用范围较广。( 3) 16位机,32位机 具有强大的数值处理能力,且具有并行功能,适用于有大量数据处理的应用系统,由于其字长较长,运行速度较高,因而数据处理速度高。它的发展壮大直接推动了信息化时代的到来。如 TMS320C50,行一次乘法运算仅需60ns。◆ 单片机的发展经历了由 4位 机到 8位 机,再到16位 机的发展过程◆ 目前 8位 单片机仍是单片机的 主流 机型;? 2-1 关于 MCS-51系列? 2-2 MCS-51系列 单 片机的结构原理? 2-3 MCS-51单片机的引脚及其片外总线结构? 2-4 MCS-51单片机的工作方式? 2-5 MCS-51单片机的时序第二章 MCS― 51单片机的结构和原理一,MCS-51系列型号型 号 片内程序存储器 片内数据存储器8031 NO 128Bytes8051 4K ROM 128Bytes8751 4K EPROM 128Bytes8032 NO 256Bytes89C51 4K E2PROM 128Bytes89C52 8K E2PROM 256Bytes89C2051 2K E2PROM 128Bytes2-1 关于 MCS-51系列二,MCS-51的主要特点1、单 +5V供电,40引 脚封装2,8位字长 CPU3、片内有 振荡 电路和 时钟 电路4,32根 I/O线5,64K外部 RAM(不含内部 RAM)6,64K外部 ROM(含内部 ROM)7,2个 16位定时 /计数器( 8X52有 3个)8、具有 2个优先级别的 5个中断源( 8X52有 6个)9、可编程的全双工串行口,如工作方式、波特率等10、布尔处理器11,128个用户可寻址位单元12,128字节内部 RAM( 8X52有 256个字节)时钟电路CPUROM RAMT0 T1中断系统串行接口并行接口P0 P1 P2 P3 TXD RXD INT0 INT1定时计数器结构框图? 中央处理器CPU,8位,运算和控制功能? 内部 RAM,共256个 RAM单元,用户使用前 128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。? 内部 ROM:4KB掩膜 ROM,用于存放程序、原始数据和表格。? 定时 /计数器:两个 16位的定时 /计数器,实现定时或计数功能。? 并行 I/O口,4个8位的 I/O口 P0、P1,P2,P3。? 串行口,一个全双工串行口。? 中断控制系统:5个中断源(外中断 2个,定时/计数中断 2个,串行中断 1个)? 时钟电路,可产生时钟脉冲序列,允许晶振频率 6MHZ和12MHZ2-2 MCS-51系列 单 片机的结构原理一、基本组成1,8051单片机的基本组成1,中央处理器 CPU,8位,运算和控制功能2,内部 RAM,共 256个 RAM单元,用户使用前 128个单元,用于存放可读写数据,后 128个单元被专用寄存器占用。3,内部 ROM,4KB掩膜 ROM,用于存放程序、原始数据和表格。4,定时 /计数器,两个 16位的定时 /计数器,实现定时或计数功能。5,并行 I/O口,4个 8位的 I/O口 P0,P1,P2,P3。6,串行口,一个全双工串行口。7,中断控制系统,5个中断源(外中断 2个,定时 /计数中断 2个,串行中断 1个)8,时钟电路,可产生时钟脉冲序列,允许晶振频率 6MHZ和12MHZ12345678910111213142827262524232221201918171615EPROM276412345678910111213142827262524232221201918171615EPROM27641234567891011121314151617181920403938373635343332313029282726252424222112345678910111213142827262524232221201918171615RAM626412345678910111213142827262524232221201918171615RAM62642,存储器80318751805189C51片内RAM片内ROM256B(字节)4K64K64K(1)程序存储器程序 存储器内部 外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序执行的起始单元,在这三个单元存放一条无条件转移指令中断 5中断 4中断 3中断 2中断 10003H000BH0013H001BH0023H002BH外部中断 0定时器 0中断外部中断 1定时器 1中断串行口中断8位...0FFFH0FFEHEA=1 EA=0程序 存储器资源分布中断入口地址org 0000hljmp mainorg 002bhMain,mov sp,#60h……..0000HFFFFH(64K)内部外部(2)数据存储器数据 存储器00HFFH7FH80H(高 128B)(低 128B) RAM专用寄存器00H07H08H0FH10H17H18H1FH0区R0R7R0R7R0R7R0R71区2区3区工作寄存器区可作一般 RAM读写 也可位寻址区20H2FH 7F 7807 0030H7FH 数据缓冲区 /堆栈区内部 RAM存储器1 1 第 3 区 18H~1FH0 1 第 1 区 08H~0FHRS1 RS0 寄存器区 片内 RAM地址0 0 第 0 区 00H~07H1 0 第 2 区 10H~17H工作寄存器区 选择位 RS0,RS1注意, 一个单元地址对应有 8个位地址MSB―― Most Significant Bit (最高有效位)LSB ―― Least Significant Bit (最低有效位)单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07MSB 位地址 LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位寻址区位地址表 (P11)( 3)特殊功能寄存器(高 128个单元)MCS-51内部安排有 21个特殊功能寄存器各特殊功能寄存器的符号及地址见 表 2-2。分别由于以下各个功能单元:? CPU,ACC,B,PSW,SP,DPTR( 由两个 8位寄存器 DPL,DPH组成 )?并行口,P0,P1,P2,P3?中断系统,IE,IP?定时 /计数器, TMOD,TCON,TH1,TL1、TH0,TL0?串行口,SCON,SBUF,PCON3,CPU? 由运算器, 控制器 和 若干 SFR( ACC,B,PSW,SP,DPTR) 构成。( 1)运算器,实现数据的算术运算和逻辑运算。( 2)累加器 ACC,提供一个操作数并存放运算结果,其进位标志 CY同时也是布尔处理器的累加器。( 3)寄存器 B,用于乘法和除法操作,也用作暂存器。( 4) CPU标志寄存器? CY,进位标志,有进位或借位时为 1,否则为 0? AC,辅助进位标志当 D3向 D4有进位或借位时为 1,否则为 0? F0,用户标志? RS1,RS0,工作寄存器组? OV,溢出标志,结果超过 -128~+127时,OV=1,否则为 0CY AC F0 RS1 RS0 OV ― PPSW1 1 第 3 区 18H~1FH0 1 第 1 区 08H~0FHRS1 RS0 寄存器区 片内 RAM地址0 0 第 0 区 00H~07H1 0 第 2 区 10H~17H( 4) CPU标志寄存器? P,奇偶校验标志,当 ACC中,1”的个数为奇数个时,P=1? PSW.1,保留位,用户可使用。?椎栈指针 SP,先入后出的特殊存储器指针 。?数据指针 DPTR,用于存放 16位地址,可分为DPH和 DPL。MOV SP,#60HMOV DPL,#0FFHMOV DPH,#0FH4、并行 I/O口P0,0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1,0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2,0P3,0P3.1P3.2P3.3P3.4P3.5P3.6P3.7?4个 8位并行 I/O口,P0,P1,P2,P3;?均可作为双向 I/O端口使用。输入时可以缓冲,输出时可以锁存。(1)特点:P0,访问片外扩展存储器时,复用为低 8位地址线和数据线P2,高 8位地址线。P1,双向 I/O端口P3,第二功能1234567891011121314151617181920403938373635343332313029282726252424222180318051875189C51片外扩展存储器时 P0、P2口自动作为总线使用( 2) I/O口的字节地址和位地址( 3)下面分别介绍 4个 I/O口的结构B,P1口的位结构? P1口由于只能作为 I/O口使用,因而输出控制电路结构同 P0口不同。C,P2口位结构P2口既可用作 I/O口,也可用作高 8位地址总线。D,P3口位结构P3口既可用 I/O口,又分别具有第二功能,但二者不能混用,其 第二功能 如下表所示。ALEWRRDP1,0P1,1P1,2P1,3P1,4P1,5P1,6P1,7指令 1,MOV P1,#00H指令 2,MOV P1,#0FFH指令 3,MOV P1,#0AAH0000000011111111E 输出举例指令 4,CLR P1.0指令 5,SETB P1.0+5V11111111F 输入举例S0+5 V 4.7 k WALEWRRDP3,0P3,1P3,2P3,3P3,4P3,5P3,6P3,7读端口,MOV P3,#BMOV A,P3 89C51× × × × × × × ×寄存器 A注,当 I/O端口作为输入使用时,需先向端口写入, 1”,使内部的 FET截止,再读入引脚的状态。你知道 P3.4对应寄存器 A哪一位吗?P3.4你知道这是为什么吗?1 1 1 1 1 1 1 10一,MCS-51单片机信号引脚简介P3口线的第二功能VCCVSSXTAL2XTAL1RSTP0,0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1,0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2,0ALEP3,0P3.1P3.2P3.3P3.4P3.5P3.6P3.7(2)、振荡电路,XTAL1,XTAL2(3)、复位引脚,RST(4)、并行口,P0,P1,P2,P3(7),ALE:地址锁存控制信号(1)、电源线,VCC(+5V),VSS(地 )EAPSEN (5),EA:访问程序存储控制信号(6),PSEN:外部 ROM读选通信号RXD/TXD/INT0/INT1/T0/T1/WR/RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051875189C511、管脚图2-3 MCS-51单片机的引脚及其片外总线结构二、片外三总线结构1、地址总线( AB)由 P2,P0提供 16位地址2、数据总线( DB)由 P0口提供 8位数据3、控制总线( CB)由 P3口和 RST,EA,ALE,PSEN组成2-4 MCS-51单片机的工作方式一、复位方式在振荡电路工作时,在 RST引脚上加上一个至少保持 2个机器 周期的高电平,单片机完成复位。其 复位电路结构和内容 如图所示? 复位电路? 复位不影响 RAM内容。使 PC指向 0000H,重新执行程序。? 复位可分为上电自动复位和按键复位两种方式。复位方式、程序执行方式、单步执行方式、掉电方式、节电方式二、程序执行方式?本方式是单片机的 基本工作方式,复位后,程序自 0000H开始执行。?用户的程序一般不可能从 0000H开始存放。因此,需要从 0000H开始存放一条转移指令,以使执行转移到用户程序的入口地址。三、单步执行方式在外界脉冲的控制下,单片机每执行一条指令就暂停下来。四、掉电和节电方式用于低功耗系统设计PCON SMOD ― ― ― GF1 GF0 PD IDLD7 D0五、编程和校验方式对于内部含有 EPROM或 EEPROM的单片机,可用于对其 编程 或对其 校验 。2-5 MCS-51单片机的时序一、时序?在执行指令的过程中,CPU的控制器发出的一系列特定的控制信号在时间上的相互关系。?内部控制信号和外部控制信号。二、区别几个概念?1、振荡周期(时钟周期),振荡信号周期,fOSC?2,状态周期, 又叫 S周期,可分为 P1和 P2两拍,其中 P1通常完成逻辑操作,而 P2通常完成内部寄存器与寄存器间的数据传输,fosc/2。?3、机器周期,单片机的基本操作周期,fosc/12。(教材 P25)包含六个状态周期。?4、指令周期,执行一条指令的周期,分别有单、双和四机器周期指令。?5,ALE信号,可作为一种周期信号使用。三,MCS-51指令的取指 /执行时序指令的处理都包括 取指(取操作码或操作数) 和 执行 (指令的逻辑功能) 两个阶段,每出现一次 ALE信号,CPU就进行一次取指操作。指令寄存器译码地址译码程序计数器 地址寄存器累加器 A运算器①②存储器内部数据总线外部地址总线 AB数据缓冲器 外部数据总线 DB寄存器区外部控制总线 CB内部控制信号时钟及清零三,MCS-51指令的取指 /执行时序取指过程例, MOV A,#09H 74H 09H ;把 09H送到累加器 A中执行过程PC=0000H0001H0000H0002H0 1 1 1 0 1 0 00 0 0 0 1 0 0 1(PC)(PC)H 0000H外部控制总线取指过程(PC)执行过程指令的处理 都包括 取指 (取操作码或操作数) 和执行 (指令的逻辑功能) 两个阶段,每出现一次ALE信号,CPU就进行一次取指操作四、访问外部 ROM时序在 S1P2时刻ALE信号有效。2.P0口送出 ROM 的低 8位地址,P2口送出高 8位地址,A7-A0只持续到S2结束,故在外部要用锁存器,可用 ALE作为锁存信号,A15-A8在整个读指令过程中都有效3.在 S3P1时刻/PSEN开始有效,可以用它选通外部ROM的使能端,被选种的 ROM单元的内容,从 P0口读入CPU,然后 /PSEN失效。4.在 S4P2后开始第二次读入,其过程与第一次相同。五、访问外部 RAM时序本章作业,除 7题外在同一机器周期的 S5状态产生的 ALE信号的下降沿,将P0总线上出现的低 8位地址锁存在外部的锁存器中。读数据寻址方式数据传送类指令算术运算类指令逻辑操作类指令控制转移类指令位操作指令常用伪指令第章MCS51指令系统本章内容Single Chip Microcomputer概 述? MCS-51系列单片机的指令系统 专用于 51系列单片机,共有 111条指令,具在丰富灵活的寻址方式,其指令格式与 8086的指令系统相同,甚至某些指令还完全相同。使用时应注意区别。? 在 111条指令中,从存储空间的占用上看,单字节指令占 49条,双字节指令占 45条,三字节指令占 17条 ;从执行时间上看,在 111条指令中,单机器周期指令占 64条,双机器周期指令占 45条,仅乘法和除法两条指令为四机器周期指令 。因而无论是存储空间的利用率,还是时间的执行效率都是较高的,再加上灵活的寻址方式,特别适合于实时测量和控制场合。因而,单片机又常被称为 微控制器 。§ 3-1 指令的格式及标识操作码7 0数据或寻址方式7 0双字节指令:标号,操作码 操作数或操作数地址 ;注释单字节指令,操作码7 0三字节指令,操作码7 0数据或寻址方式7 0数据或寻址方式7 0指令按字节长度可以分为三种:指令的格式:例如,MOV A,R0例如,MOV A,30H例如,MOV DPTR,#2010H操作码助记符、目的操作数、源操作数是指令的核心部分。方号中内容为可选项,其有无视具体的指令而异。一、指令的格式二、关于标号标号不允许只用数字,而应 以字母打头,后面跟数字,不可使用运算符号,不能同十六进制数发生混淆,较好的取名原则 是见名知义。便于程序员在调试程序时更加顺利,往往一个标号就是一个功能入口,因而在使用标号时应特别小心,用并非每句指令都需要标号。三、关于指令中的符号标识符 号 含 义Rn 表示当前选定寄存器组的工作寄存器 R0~ R7Ri 表示作为间接寻址的地址指针 R0~ R1#data 表示 8位立即数, 即 00H~ FFH#data16 表示 16位立即数, 即 0000H~ FFFFHaddr16 表示 16位地址, 用于 64K范围内寻址addr11 表示 11位地址, 用于 2K范围内寻址direct 8位直接地址, 可以是内部 RAM区的某一单元或某一专用功能寄存器的地址Rel 带符号的 8位偏移量 ( -128~ +127)Bit 位寻址区的直接寻址位( X) X地址单元中的内容, 或 X作为间接寻址寄存器时所指单元的内容← 将 ← 后面的内容传送到前面去四、关于注释为了增强程序的可读性, 使别人易读, 或防止日久遗忘, 可适当加些注释 。 注释由,;, 开始 。§3-2 寻址方式在程序行中,操作码 代表了该句指令的功能,而功能的对象却由操作数决定,由操作数指出参与运算的数或该数所在的地址。 取得操作数的地址的方法叫做 寻址方式 。寻址方式与计算机的存储空间结构是密切相关的。灵活运用各种寻址方式,可以大大的提高程序的运行效率。MCS-51基本七种寻址方式寻址方式 寻址空间R0~R 7寄存器寻址A, B, AB, D PT R内部 RA M 的低 128 字节SFR位地址 0 0 ~ 7 FH直接寻址SFR 中的位寻址空间立即寻址 RO M内部 RA M ( Ri, SP )寄存器间接寻址外部 RA M ( Ri, D P T R )变址寻址 RO M ( A +PC, A + D PT R )相对寻址 RO M位地址 0 0 ~ 7 FH位寻址SFR 中位寻址区一、寻址方式 (找信 方式 )我的信在他那 !找信 去 !②①注,找信是寻找 信的, 地址, !你能说出第二封信的“地址”吗?目的地#XXH操作数MOV P1,#55HMOV A,#01H55H目的地 信寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址目的地寄存器寻址 P31直接寻址 P32立即数寻址 P32寄存器间接寻址 P33变址寻址 P33相对寻址 P34位寻址 P35内部 RAM或 SFR区操作数XXHMOV P1,20H20H目的地注,寻址是寻 操作数 的, 地址, !直接给出地址20H―― 直接寻址目的地寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器目的地操作数XXHMOV P1,AR0-R7ABDPTR你能说出为什么叫寄存器寻址吗?寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址MOV P1,@R0目的地寄存器操作数3AH内部 RAM3AH 65HR0R1DPTR寄存器间接寻址寄存器目的地你能说出 1号箱子和 2号箱子分别对应内存中哪一部分吗?寻址比较MOV P1,R0③ 地址是寄存器 R0MOV P1,@R0 ② 地址在寄存器 R0里MOV P1,20H④ 地址是内存 20HMOV P1,#20H① 直接将 20H这个数送 P1口错 !错 !错 !,对 !寻址比较MOV P1,R0③ 地址是寄存器 R0MOV P1,@R0 ② 地址在寄存器 R0里面MOV P1,20H④ 地址是内存 20HMOV P1,#20H① 直接将 20H这个数送 P1口错 !错 !错 !,对 !寻址比较MOV P1,R0③ 地址是寄存器 R0MOV P1,@R0 ② 地址在寄存器 R0里面MOV P1,20HMOV P1,#20H① 直接将 20H这个数送 P1口错 !错 !错 !,对 !④ 地址是内存 20H寻址比较MOV P1,R0③ 地址是寄存器 R0MOV P1,@R0 ② 地址在寄存器 R0里MOV P1,20H④ 地址是内存 20HMOV P1,#20H① 直接将 20H这个数送 P1口错 !错 !错 !,对 !寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址MOVC A,@A+DPTR目的地寄存器操作数内部 RAM3AH 65H3AH基址 寄存器12H变址 寄存器34H内部 RAM46HADPTRPC46H目的地寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址 XXH位寻址操作数SJMP 54HPC + 54HPC 2002H······2002H =2056HPC 2056H寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址20H······27H21H28H10 0 0 0 0 0 0 0想一想,如果想使 27H单元的 第 3位 置 1,该怎么办呢?单元地址2FH2EH2DH2CH2BH2AH29H28H26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07MSB 位地址LSB 7E766E665E564E46362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44342C241C140C047B736B635B534B43332B231B130B037A726A625A524A42322A221A120A02797169615951494131292119110901787068605850484030282018100800位寻址地址表例,SETB 3DH3D 3C 3B3F 3E 3A 39 3827H寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址SETB 3DH20H······27H21H28H0 0 0 0 0 0 010§3-3 MCS― 51指令系统的分类2.1 数据传送指令( 29条)2.2 算术运算指令( 24条)2.3 逻辑运算指令( 24条)2.4 控制转移指令( 17条)2.5 位操作指令( 17条)2.6 常用伪指令( 17条)目的地址 源地址数 据MOV &目的操作数 &,&源操作数 &MOV A,#20H,ARndirect1@RiARndirect2@Ri#dataMOV20HA2.1 数据传送指令( 29条 不影响标志位 CY AC OV)―― 8位 数据传送指令 (15条 )2.1 数据传送指令( 29条)―― 16位 数据传送指令( 1条)MOV DPTR,#data16―― 外部 数据传送指令 (4条 )MOVX &目的操作数 &,&源操作数 &,A@DPTR@RiMOVXA@DPTR@Ri―― 交换和查表类 指令 (9条 ),AXCHdirect@DPTR@Ri1)字节交换指令 (3条 )2)低半字节交换指令 (1条 )XCHD A,@Ri3)累加器 A中高 4位和低 4位交换 (1条 )SWAP A4)查表指令 (2条 )MOVC A,@A+PCMOVC A,@A+DPTR5)堆栈操作指令 (2条 )PUSH directPOP direct举例例 3-1 将片内 RAM30H单元的内容送到片外 60H;将片外 4312H单元的内容送到片内 31H单元:MOV A,30HMOV R0,#60HMOV @R0,AMOV DPTR,#4312HMOV A,@DPTRMOV 31H,Adirect2.2算术运算类指令( 24条)―― 普通 加法 指令( 4条)A,Rn@Ri#dataADDADD A,RnADD A,directADD A,@RiADD A,#data注意,1.本指令影响 Cy,AC,Ov,P等标志。2.求和操作既可看成是有符号数运算,也可看成是无符号数运算,完全由程序员编程时自行设定。3.计算机运算时的规定参见教材 P38。2.2算术运算类指令( 24条)―― 带进位 加法 指令( 4条)directA,Rn@Ri#dataADDCADDC A,RnADDC A,directADDC A,@ RiADDC A,#data除相加时要考虑进位外,其余操作与前面相同。2.2算术运算类指令( 24条)―― 减法 指令 (4条 )directA,Rn@Ri#dataSUBBSUBB A,RnSUBB A,directSUBB A,@RiSUBB A,#data减法指令是带借位的,若不需要带借位减,则在作减法指令前清除借位位,即 CLR C减法指令影响 OV,CY,AC标志位助记符格式 机器码 (B) 相应操作 指令说明 机器周期INC A
A?A+1 影响 PSW的 P标志 1INC Rn 00001rrr Rn?Rn+1 n=0~7,rrr=000~1111INC direct 0101 direct (direct)?(direct)+1 1INC @Ri 0000011i (Ri)?(Ri)+1 i=0,1 1INC DPTR
DPTR?DPTR+1 2DEC A
A?A-1 影响 PSW的 P标志 1DEC Rn 00011rrr Rn?Rn-1 n=0~7,rrr=000~111 1DEC direct direct (direct)?(direct)+1 1DEC @Ri 0001011i (Ri)?(Ri)-1 i=0,1 1―― 加 1减 1指令―― 乘法 指令 (1条 )MUL A B―― 除法 指令 (1条 )DIV A B两个 8位操作数相乘,形成 16位的积,其中 A为积的低位而 B为积的高位。需要进行更多位的乘法运算,需另外编程方能实现。举例见教材 P40两个 8位操作数相除,其中 A为被除数而 B为除数;运算后,结果仍然在 AB中,其中 A为商而 B为余数。同乘法指令相同,需要进行更多位的除法运算,需另外编程方能实现。十制调整指令DA A ;实现 BCD码加法BCD码相加后,根据 Ac和 Cy的状态对 A中的数作适当调整,使运算结果为 BCD码。这条指令对加法结果的调整规则是:(1)若累加器 A低 4位大于 9或辅助进位标志 AC=1.则低 4位加 6;(2)若累加器 A高 4位大于 9或 CY= 1,则高 4位加 6;(3)若 1,2条件都满足时,则 A加 66H;(4)若 1,2条件都不满足时,则 A加 00H;(5)若果加器 A的最高位因调整而产生进位时,将 CY置 1,若不产生进位整前的状态而并不清零。DA指令只影响进位标志 CY。例 3-3 设 ACC中为压缩 BCD码 56H,R3中为压缩 BCD码 67H,且 Cy=1,求 ACC与 R3的压缩 BCD码之和MOV A,#56HMOV R3,#67HADDC A,R3DA A ; A=?(A) =(R3)=+)(Cy)=和 =调整 +) 1 BCD码为 1242.3逻辑及移位类指令―― 逻辑与 指令( 6条)助记符格式 机器码 (B) 相应操作 指令说明 机器周期ANL A,direct directA?A∧ direct 按位相与 1ANL A,Rn 01011rrr A?A∧ Rn n=0~7,rrr=000~1111ANL A,@Ri 0101011i A?A∧ (Ri) i=0,1 1ANL A,#data
data A?A∧ #data 1ANL direct,A direct (direct)?(direct)∧ A 不影响 PSW的 P标志 1ANLdirect,#datadirect data(direct)?(direct)∧ #data 不影响 PSW的 P标志 2―― 逻辑或 指令( 6条)direct data助记符格式 机器码 (B) 相应操作 指令说明 机器周期ORL A,direct directA?A∨ direct 按位相或 1ORL A,Rn 01001rrr A?A∨ Rn n=0~7,rrr=000~111 1ORL A,@Ri 0100011i A?A∨ (Ri) i=0,1 1ORL A,#data data A?A∨ #data 1ORL direct,A direct(direct)?(direct)∨A不影响 PSW的 P标志1ORLdirect,#data (direct)?(direct)∨ #data 不影响 PSW的 P标志 2―― 逻辑 异或 指令( 6条)助记符格式 机器码 (B) 相应操作 指令说明 机器周期XRL A,direct directA?A?(direct) 按位相异或 1XRL A,Rn 01101rrr A?A?Rn n=0~7,rrr=000~111 1XRL A,@Ri 0110011i A?A?(Ri) i=0,1 1XRL A,#data
data A?A?#data 1XRL direct,A direct(direct)?(direct)?A 不影响 PSW的 P标志 1XRLdirect,#datadirect data(direct)?(direct)?#data 不影响 PSW的 P标志 2―― 累加器 A清 0和取反 指令助记符格式机器码 (B) 相应操作 指令说明 机器周期CLR A
A?00H A中内容清 0,影响 P标志 1CPL A
A中内容按位取反, 影响 P标志 1A?AA.0A.7A.0A.7A.0A.7A.0A.7CYCYRL ARR ARLC ARRC A注意,执行带进位的循环移位指令之前,必须给 CY置位或清零。―― 循环移位 指令例 3-4 设 (20H)=(X7X6X5X4X3X2X1X0)(21H)=(Y7Y6Y5Y4Y3Y2Y1Y0)试编程使 (30H)=Y2Y1Y0X4X3X2X1X0程序清单,MOV 30H,20HANL 30H,#B; B:二进制O:八进制D:十进制H:十六进制MOV A,21HRL ASWAPAANL A,#HORL 30H,A例 3-5 若 ACC=X7X6X5X4X3X2X1X0,试编程将 A中的低 5位送至 P1口,但不能影响 P1口的高 3位。程序清单:MOV A,#0AAHANL P1,#BORL P1,A2.4 控制转移类指令―― 无条件转移 指令 (4条 )1) 长转移指令,LJMP AAAAH ; AAAAH?PCPC=0000HPC=AAAAH0000H0001H······AAA9HAAAAH0002H假设执行该指令前,PC的值为 0000H。注意,该指令可以转移到 64 KB程序存储器中的任意位置。PC高 5位(保持不变 )PC低 11位A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0操作码 (第一字节 ) 操作数 (第二字节 )11位转移地址的形成示意图程序计数器 PC2)绝对转移指令AJMP addr11 ; PC+2?PC,addr11 ?PC.10~PC.0PC2002H2003H0000H0001H······2004H2005H2006HPCPCPCPC0002HPC3)相对转移指令例,SJMP 03H03H03H就是当前 PC值与目的 PC值 相对差PC―― 条件转移 指令 (8条 )1)累加器 A判 0指令 (2条 )助记符格式 机器码 (B) 相应操作 机器周期JZ rel 0110000 若 A=0,则 PC?PC+rel,否则程序顺序执行 2JNZ rel
若 A≠0,则 PC?PC+rel,否则程序顺序执行 22)减 1非零转移 指令 (2条 )助记符格式 机器码 (B) 相应操作 机器周期DJNZRn,rel11011rrrrelRn?Rn-1,若 Rn≠0,则 PC?PC+rel,否则顺序执行 2DJNZdirect,reldirect rel( direct) ?( direct) -1,若 ( direct)≠0,则 PC?PC+rel,否则顺序执行 23)比较转移 指令 (4条 )助记符格式 机器码 (B) 相应操作 机器周期CJNEA,#data,reldata rel若 A≠#data,则 PC?PC+rel,否则顺序执行;若 A&#data,则 CY=1,否则CY=02CJNERn,#data,rel10111rrrdata rel若 Rn≠#data, 则 PC?PC+rel,否则顺序执行;若 Rn&#data,则 CY=1,否则 CY=02CJNE@Ri,#data,rel1011011idata rel若 (Ri)≠#data, 则 PC?PC+rel,否则顺序执行;若 (Ri)&#data,则 CY=1,否则 CY=02CJNEA,direct,reldirectrel若 A≠(direct), 则 PC?PC+rel,否则顺序执行;若 A&(direct),则 CY=1,否则 CY=02―― 调用和返回 指令 (8条 )1)绝对调用 指令( 1条)助记符格式 机器码 (B) 相应操作 机器周期ACALLaddr11a10a9a810001addr7~0PC?PC+2SP? SP+1,(SP)?PC0~ 7SP? SP+1,(SP)?PC8~15PC0~10 ? addr1122)长调用 指令( 1条)助记符格式 机器码 (B) 相应操作 机器周期LCALLaddr16addr15~8addr7~0PC?PC+3SP?SP+1,SP?PC0~7SP?SP+1,SP?PC8~15PC?addr1623)返回 指令助记符格式 机器码 (B) 相应操作 机器周期RET PC8~15 ? (SP),SP ?SP-1PC0~7 ? (SP),SP ?SP-1子程序返回指令2RETI
PC8~15 ? SP,SP ?SP-1PC0~7 ? SP,SP ?SP-1中断返回指令2助记符格式 机器码 (B) 相应操作 指令说明NOP
空操作 消耗 1个机器周期4)空操作举例例 3-6根据累加器 A命令键键值,设计命令键操作程序入口跳转表。程序如下:CLR CRLC A ;乘 2,若用 LJMP指令则乘 3MOV DPTR,#JPTABJMP @A+DPTRJPTAB,AJMP CCS0AJMP CCS1AJMP CCS2例 3-7 测试 P1口输入的 100个数中 0~9各数的概率分布程序MOV 40H,#100READ,MOV A,P1CHK0,CJNE A,#0,CHK1INC 30HDJNZ 40H,READSJMP EENDCHK1,CJNE A,#1,CHK2INC 31HDJNZ 40H,READSJMP EENDCHK2,CJNE A,#2,CHK3INC 32HDJNZ 40H,READSJMP EENDCHK3,CJNE A,#3,CHK4INC 33HDJNZ 40H,READSJMP EENDCHK4,CJNE A,#4,CHK5INC 34HDJNZ 40H,READSJMP EENDCHK5,CJNE A,#5,CHK6INC 35HDJNZ 40H,READSJMP EENDCHK6,CJNE A,#6,CHK7INC 36HDJNZ 40H,READSJMP EENDCHK7,CJNE A,#7,CHK8INC 37HDJNZ 40H,READSJMP EENDCHK8,CJNE A,#8,CHK9INC 38HDJNZ 40H,READSJMP EENDCHK9,INC 39HDJNZ 40H,READEEND,SJMP $2.5 位操作类指令单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07MSB 位地址 LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM 位寻址区位地址表助记符格式 机器码 (B) 相应操作 指令说明 机器周期MOV C,bit
CY? bit 位传送指令, 结果影响 CY标志 2MOV bit,C
bit? CY 位传送指令, 结果不影响 PSW 22.位置位和位清零指令助记符格式 机器码 (B) 相应操作 指令说明 机器周期CLR C
CY? 0 位清 0指令, 结果影响 CY标志 1CLR bit bitbit? 0 位清 0指令, 结果不影响 PSW 1SETB C
CY?1 位置 1指令, 结果影响 CY标志 1SETB bit bit? 1 位置 1指令, 结果不影响 PSW bit1.位传送指令3.位运算指令助记符格式 机器码 (B) 相应操作 指令说明 机器周期ANL C,bit
bit CY? CY∧ bit 位与指令 2ANL C/bit
bit 位与指令 2ORL,bit
bit CY? CY∨ bit 位或指令 2ORL C/bit
bit 位或指令 2CPL C
位取反指令 2CPL bit
位取反指令, 结果不影响 CY2CY? CY∧ bitCY? CY∨ bitCY?CYbit?bit例 3-8 设 A,B,D代表位地址,试编程实现 D为 A与 B 之异或,即 D=AB+AB 。MOV C,BMOC D,CMOV C,AANL C,/BORL C,DMOV D,CANL C,/A ; C与 A相与助记符格式 机器码 (B) 相应操作 机器周期JB bit,rel bit rel 若 bit=1,则 PC?PC+3+rel,否则顺序执行2JNB bit,rel
bit rel 若 bit=0,则 PC?PC+3+rel,否则顺序执行2JBC bit,rel
bit rel 若 bit=1,则 PC?PC+3+rel,bit?0,否则顺序执行24.位转移指令5.判 CY标志指令助记符格式 机器码 (B) 相应操作 机器周期JC rel
若 CY=0,则 PC?PC+2+rel,否则顺序执行2JNC rel
若 CY≠0,则 PC?PC+2+rel,否则顺序执行2常用伪指令? 定位伪指令 ORG? 定义字节数据伪指令 DB? 定义字数据伪指令 DW? 定义空间伪指令 DS? 符号定义伪指令 EQU或=? 数据赋值伪指令 DATA? 数据地址赋值伪指令 XDATA? 汇编结束伪指令 END++(P1.1) U(P2.2) V(TF0) W(IE1) X(20H.0) Y(21H.1) ZU(V+W)Q (P3.3)Q=U(V+W)(X+Y)ZMOV C,P2.2ORL C,TCON.5ANL C,P1.1MOV F0,CMOV C,TCON.3ORL C,/00HANL C,F0ANL C,/09HMOV P3.3,C例 3-9 编程实现下图所示的逻辑功能补例, 条件转移类指令范例 ―― 方案一还有什么方法实现循环的终止?将 00H~0FH这 16个数顺序地置入片内RAM20H~2FH单元中。MOV R0,#20HMOV R7,#16CLR ALOOP,MOV @R0,AINC AINC R0DJNZ R7,LOOPSJMP $JMP1.ASM条件转移类指令范例 ―― 方案二MOV R0,#20HMOV R7,#0FHCLR ALOOP,MOV @R0,AINC AINC R0CJNE A,#0FH,LOOPSJMP $JMP2.ASM条件转移类指令范例 ―― 方案三MOV R0,#20HMOV A,#0FH ;MOV 30H,#00HLOOP,MOV @R0,30HINC 30HINC R0DEC AJNZ LOOPSJMP $JMP3.ASM条件转移类指令范例 ―― 方案四MOV R0,#20HMOV A,#0FHMOV 30H,#00HLOOP,MOV @R0,30HINC 30HINC R0SUBB A,#01HJNC LOOPSJMP $JMP4.ASM练习 1设内部 RAM中 33H单元中内容为 44H,34H单元中内容为 0AFH,R0中内容为 33H,R1中内容为 00H,给出以下每一条指令执行后 A中的值和 PSW中 P的值。MOV A,#34HMOV A,34HMOV A,R1MOV A,@R0注意:对 PSW中 P标志的影响。练 习 2设内部 RAM30H单元中内容为 52H,请给出以下程序结果:MOV A,#30HMOV A,30HMOV R0,#30HMOV A,@R0MOV 30H,#30H设 P1口内容为 0AAH( P1口地址为 90H),请给出以下程序结果:MOV R0,#30HMOV 10H,P1MOV A,10HMOV @R0,AMOV 40H,@R0本章主要知识点? 指令的七种寻址方式。?难点:寄存器间接寻址? 各类指令的主要功能。?难点:查表指令?难点:条件转移指令? 作业,2.2 2.4 2.6第章汇编语言程序设计本章内容Single Chip Microcomputer§4-0概述§4-2 运算程序设计§4-3 数据的拆拼和转换§4-1 循环程序设计§4-5 查表程序§4-6 散转程序设计§4-7 I/O端口控制程序§4-8 子程序调用时的参数传递概 述? 最早人们只能用 机器语言 (二进制)编写程序;? 为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为 低级语言 。然后再用汇编系统将其翻译成机器语言,该过程称为 汇编 ;? 为了用更接近人的语言编写程序,程序设计师们发明了高级语言,如,BASIC,FORTRAN,PASCAL、? C,JAVA然后再用编译系统将其翻译成机器语言,该过程称为 编译 ;? 机器只能识别机器语言。所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将用汇编语言编写的源程序汇编成机器语言;? 由低级或高级语言构成的程序称为 源程序,由机器语言构成的程序称作 目标程序 ;一、设计语言源程序 目标程序低级语言 机器语言汇编高级语言 机器语言编译二、程序设计方法一、程序设计利用计算机能够接受的语言把解决问题的方法和步骤描述出来,也就是编制计算机的程序,人们常说的软件设计。 对于单片机应用程序,我们可以把它看成是操作系统和应用软件的集合。二、程序设计步骤用汇编语言编写一个程序的过程大致可分为以下几个步骤:1、分析问题,明确所要解决问题的具体要求。2、确定算法。根据实际问题的要求和指令系统的特点,决定所要采用的计算公式和计算方法,这就是常说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的质量。3、制定程序框图。根据算法,制定出运算步骤的顺序,再把运算过程画成流程图。4、确定数据格式,分配工作单元,将程序框图进一步细化。5、根据流程图和指令系统,编写出汇编语言源程序。6、程序测试。由于单片机没有自开发功能,因而必须借助仿真器,以单步、断点、连续方式调试程序,直到完全正确为止。特别地,对于有硬件的应用系统,必须将软件和硬件结合起来调试,直到软件、硬件能协调一致,浑然一体为止。7、程序优化。 这一环节很容易被广大设计人员所忽略。它是指从程序结构上对程序加以调整,精减一些冗余指令,以加快程序的执行速度,节省程序存储空间,从而提高系统的可靠性。三、程序设计实例引入? 实例假设一个班有 50个人,共有 3门选修课:? 计算机算法? 服装 CAD设计? 德语请找出:? 同时选了三门课的同学;问题的解决?第一步如何在计算机中表示选修某门课的所有同学5122325225392939412252939计算机算法 服装 CAD设计 德语选修这门人数学生的学号这个过程实际上是设计数据结构的问题问题的解决?第二步设计思路:找出同时选了三门课的同学这个过程实际上是设计算法的过程,既构建模型。计算机算法 CAD设计德语重复该过 程第三步:设计流程找出第一个学生他选了德语吗?他选了 CAD吗?记录要找的人还有学生吗?下一个学生NNYNYY结束他选计算机吗?NY几点启示?整体构思;?构建整体流程框图;?结构合理,流程清晰,简单明了;?局部模块化;为什么要用流程图?? 符合人进行逻辑思考的习惯? 计算机从根本上来说,没有任何逻辑性,所以,你必须告诉它,先做什么,后做什么,遇到什么情况又该做什么,等等? 流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器指令实现的小模块§ 4-1 循环程序设计一、循环程序结构 开 始N结 束Y循环结束控制修改控制变量循环工作部分置初值在单片机应用程序设计中,循环程序的使用非常广泛。单循环的结构如下图所示:其主体为循环体,由循环工作部分和修改控制变量构成。同其他语言一样,循环程序可以实现嵌套,构成多重循环。但切不可形成交叉。只能将整个循环程序作为外循环的循环体。二、循环程序设计举例例 1、延时程序设计DELAY,MOV R7,#200 ; 1个机器周期DE1,MOV R6,#123 ; 1NOP ; 1DE2,DJNZ R6,DE2 ; 2DJNZ R7,DE1 ; 2RET ; 2如晶体振荡器频率为 12MHz,则其延时时间为:1+( 1+1+2*123+2) *200+2=50.003ms这是一个 50ms的精确延时程序。DELAY.ASM在 RAM中,从 50H开始连续存放 N个单字节无符号数,N存放的 R2中,试编程求这 N个数的和,结果放在 R4R3中。程序清单如下:NSUM,MOV R0,#50HLOOP,MOV A,R3ADD A,@R0MOV R3,ACLR AADDC A,R4MOV R4,AINC R0DJNZ R2,LOOPRET例 2、数据求和§4-2 运算程序设计一、多字节加法例 4-3-1 设有两个 4字节的二进制数 2F5BA7C3H和14DF35B8H,分别放在以 40H和 50H为起始地址的单元中(低位在低地址),试编程求这个数之和,结果放在以 40H为起始地址的单元中。ORG 0000HLJMP JAFAORG 0100HJAFA,MOV R0,#40HMOV R1,#50HMOV R2,#04HLCALL JASUBLJMP $以上为主程序JASUB,CLR CJASUB1,MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R2,JASUB1RETEND MULADD.ASMADDC A,RnADDC A,directADDC A,@RiADDC A,#data本程序适合于 N个字节的两数求和,但并不严密,当最后一次加法有位时并没有相应处理,实际应用时应根据实际情晟宰餍薷摹例 2,有两组 BCD码分别存放在 23H,22H单元和 33H,32H单元,求它们的和并送入 43H,42H单元中去。 (高位在前,低位在后 )分析,·········32H33H42HA22H23H43H···BCD码 83HBCD码 11H补,多字节 BCD码加法例 2,有两 组 BCD码(如,1183H和5678H),分别存放在 23H,22H单元和33H,32H单元,求它们的和,并送入43H,42H单元中去。 (高位在前,低位在后 )解:流程图 (框图 )如何?请同学们自己绘制流程图。开始(22H)?A(32H)+A?A十进制调整(33H)+A?AA?(43H)结束A?(42H)(23H)?A十进制调整ORG 0000HMOV A,22HADD A,32HDA AMOV 42H,AMOV A,23HADDC A,33HDA AMOV 43H,ASJMP $END此条加法指令可否改用带进位的 (ADDC)?开始(22H)?A(32H)+A?A十进制调整(33H)+A?AA?(43H)结束A?(42H)(23H)?A十进制调整ORG 2000HCLR CMOV A,22HADD A,32HDA AMOV 42H,AMOV A,23HADDC A,33HDA AMOV 43H,AEND·········32H33H42HA22H23H43H···+PCPCPCPCPCPCPCPCPC0 0001PC1000PC10 011多字节 BCD码加法 (P53)与多字节加法程序类似,但需在加法指令后加一条十制加法调整指令。 主程序与前面相同。DADD:CLR CJAD1,MOV A,@R0ADDC A,@R1DA AMOV @R0,AINC R0INC R1DJNZ R2,JAD1RETORG 0000HLJMP JABCDORG 0100HJABCD:MOV R0,#40HMOV R1,#50HMOV R2,#04HLCALL DADDLJMP $以上为主程序 BCDADD.ASM二、多字节减法多字节减法程序和多字节加法程序类似,只需将加法指令换为减法指令即可。例 4-3-2 在 43H~40H依次存放被减数443ADD7BH;在 53H~50H中依次存放减数14DF35B8H,试编程求二者之差ORG 0000HLJMP JIANORG 0100HJIAN,MOV R0,#40HMOV R1,#50HMOV R2,#04HLCALL JIANSUBLJMP $以上为主程序JIANSUB,CLR CJIAN1,MOV A,@R0SUBB A,@R1MOV @R0,AINC R0INC R1DJNZ R2,JIAN1RETEND此程序也可以推广到 N个字节的情况。四、多字节数乘法MCS-51系列单片机指令系统仅能提供 8位乘法指令若需行 8位以上的乘法运算,则需通过编程实现。设 (R4)(R3)中为十六位被乘数,R2中为 8位乘数,其积存放在 R7R6R5中。由于 (R4)(R3)*(R2)=[(R4)*256+(R3)]*(R2)=(R4)*(R2)*256+(R3)*R2R4 R3B AR6 R5R7B A+R2×(R4)*(R2)*256(R3)*(R2)CHENFA,MOV A,R2MOV B,R3MUL AB ;(R3)*(R2)MOV R5,AMOV R6,BMOV A,R2MOV B,R4MUL AB ;(R2)*(R4)ADD A,R6MOV R6,AMOV A,BADDC A,#00HMOV R7,ARET五、多字节除法51指令系统提供一条 8位的除法指令,但要想用于多位除法运算则较为困难。因此,在进行多字节除法运算时,多采用手工算法相同的思路。被除数除数商数― 除数余数― 除数余数― 除数…...;够减则商 1,否则商 0;够减则商 1,否则商 0并恢复余数;够减则商 1,否则商 0并恢复余数以上为右移对齐的手工算法,计算机的算法仍采用这种方法,只不过是采用左移对齐的办法,称为“恢复余数法。R6 R5CyR2―被除数除数商数,够减则商 1,否则商 0并恢复余数R5除法次数 --&R7清进位,(R6)(R5)左移一位移出一位 --&标志位(R6)-(R2)标志位 =1?保存余数(R7)-1=0?商 1YN商 0并恢复余数Y进位位 =1?NN返回Y程序清单,DSUB:MOV R7,#08HDV1,CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC A ;被除数左移 1位MOV 07H,CCLR CSUBB A,R2JB 07H,GOU ;07H=1,则够减JNC GOU ;C=0,则够减ADD A,R2 ;恢复余数AJMP DV2GOU,INC R5 ;商 1DV2,MOV R6,A ;保存余数DJNZ R7,DV1RET本程序仅适用于商小于 255的情辏R6&R2,若商大于 255,必须加以适当调整。本程序关键在于商只有, 0”或, 1”两种情辏虼耍看紊, 1”均采用左移后加 1的方法来实现。§4-3 数据的拆拼和转换在实际应用中,经常会遇到实际需要的数据格式同得到的数据格式不完全相符的情况,如采集到的数据、运算的结果、输出的数据等,这就需要对其进行适当的转换,以符合实际情况的要求。这就是通常所说的数据拆拼和转换。一、数据的拆拼BBCD:MOV A,7CHANL A,#0FHMOV R5,AMOV A,7CHANL A,#0F0HSWAP AMOV R6,ARET例 4-4-1 转换前 7CH中为压缩 BCD码 XY程序清单:0Y0X转换后 R6R5中为非压缩 BCD码例 4-4-2 拆拼前 (20H)=X7X6X5X4X3X2X1X0拆拼后 (21H)= X0X1X2X3X4X5X6X7DESORT,MOV A,20HMOV R6,AMOV R7,#08HRESO,CLR CMOV A,R6RLC AMOV R6,AMOV A,21HRRC AMOV 21H,ADJNZ R7,RESORETA5 A0 0A2 A1A4 A3A60 0 00 00 0A7A7A4 0 0A1 A0A3 A2A5A7 0 00 00 0A6A6补充内容例 1,将 20H单元的两个压缩 BCD码拆开变成 ASCII码,存入 21H,22H单元。 (假设 20H中的 BCD码为 )什么是 BCD码?什么是 ASII码?BCD码与 ASII码关系·········20H21H22HAB0011 压缩 BCD码001100110100低四位 ASII码高四位 ASII码压缩 BCD码拆开变成 ASCII码方法 1,将 BCD码除以 10H,恰好是将 BCD码分别移到了 A,B的低 4位。然后再各自与 30H相 或,即成为 ASCII码。方法 2,利用半字节交换指令来实现。二、数据的转换在计算机内部,问荻际且远制的形式存储,但是,当我们在作 I/O操作时,往往需要其它形式的数据袷剑 ASCII码,BCD码、八制数等,这就需要做一些数据袷降幕セ徊僮鳌1,ASCII码到二进制数的相互转换二进制与 ASCII码的相互关系为:数字 0~9对应的 ASCII码为 30H~39H,即加 30H字母 A~F对应的 ASCII码为 41H~46H,即加 37H(1)ASCII到二进制的转换通过以上介绍的二者之间的关系,不难画出流程图:开始取操作数清进位标志减 30H差 &9?转换正确结束减 07HY转换正确NASCTOHEX:MOV A,R2CLR CSUBB A,#30HMOV R2,ACJNEA,#0AH,NEXTNEXT,JC TOKSUBB A,#07HTOK,MOV R2,ARET例 4-4-3 转换前 R2为 ASCII码,转换后 R2为二进制(2)二进制到 ASCII码HEXTOASCII:MOV A,R2ANL A,#0FHADD A,#90HDA A ;若 R2&9,则加 66H,且产生 CyADDC A,#40HDA AMOV R2,ARET例 4-4-4 转换前 R2为二制,转换后 R2为 ASCII码当二制数 &0AH时,加 30H即得相应的 ASCII,当二制数介于 0AH、0FH之间(包 0AH,0FH),则加 37H即得到相应的 ASCII。下例为另一算法。2,BCD码与二制的相互转换(1)BCD到二进制的转换+6*102+1*10+5=[(3*10+6)*10+1]*10+5由压缩 BCD码到非压缩 BCD码的转换较为简单,在前面我们已经涉及,在此不再重复。例 4-4-5 如下图所示15H36H41H40H压缩 BCD码3H6H1H5H43H42H41H40H非压缩 BCD码1FH0EHR3R2二进制数高位 BCD码的地址 -&(R0)计数初值 3-&(R7)初值送结果单元 0-&(R3)((R0))-&(R2)(R3R2)*10-&(R3R2)(R0)-1-&(R0)(R3R2)+((R0))+(Cy)-&(R3R2)(R7)-1=0?结束YN+6*102+1*10+5=[(3*10+6)*10+1]*10+5R3R23H6H1H5H43H42H41H40HR0MOV R0,#43H ;指向高位MOV R3,#00H ;结果单元清零MOV A,@R0MOV R2,A ;转换初值送 R2ML10,MOV A,R2MOV B,#0AHMUL AB ;R2乘 10MOV R2,A ;暂存 R2*10低位MOV A,BXCH A,R3 ;暂存 R2*10高位MOV B,#0AHMUL AB ;R3*10ADD A,R3 ;R3*10低位加MOV R3,A ;为什么不处理 BBCDHEX,MOV R7,#03H ;计数初值MOV A,@R0ADD A,R2 ;结果与低单元相加MOV R2,AMOV A,R3ADDC A,#00H;加低位位位MOV R3,A ;保存结果DJNZ R7,ML10RET由于二位压缩 BCD码的表示范围为 0~9999,其对应二制为 0~270H,不会超过两个字节,因而不必考虑 R3*10的高位。JAFA,DEC R0 ;指向下一位例 4-4-6 如下图所示(2) 二进制到 BCD的转换15H36HR3R2二进制数3H8H4H5H43H42H41H40H非压缩 BCD码1H44H如上图所示,双字节二进制数的表示范围为0~65535,因而需要 5个 BCD码位来表示。从二进制到BCD码,我们采用连减的办法,其原理如下:待转换的二进制数 -104够减,万位加 1,再减不够减,恢复余数,再减 103以此类推,直到得到个位为止。104=E8H 102=AHBBCD:MOV R0,#44H ;数据指针MOV R7,#04H ;计数初值MOV DPTR,#PWTABMOV R6,#00H ;偏移量BBC1:MOV A,R6MOVC A,@A+DPTRMOV R4,A ;查幂值表低位INC R6MOV A,R6MOVC A,@A+DPTRMOV R5,A ;查幂值高位INC R6MOV @R0,#00HMOV A,R2SUBB A,R4 ;减低位MOV R2,AMOV A,R3SUBB A,R5 ;减高位MOV R3,AJC BBC3 ;不够减则恢复余数INC @R0 ;够减则结果单元加 1SJMP BBC2BBC3:MOV A,R2ADD A,R4 ;恢复余数低位MOV R2,AMOV A,R3ADDCA,R5 ;恢复余数高位MOV R3,ABBC2:CLR CDJNZ R7,BBC1 ;未减完则继续MOV A,R2MOV @R0,A ;保存个位RETPWTAB:DB 10H,27H ;10000DB 0E8H,03H ;1000DB 64H,00H ;100DB 0AH,00H ;10DEC R0 ;指向下一单元§ 4-5 查表程序查表程序中一种常用的非数值运算程序,应用非常广泛。使用查表程序可以完成数据的补偿、计算、转换等各种功能,具有程序简单、执行速度快、精度高等优点,而这正是单片机在测控场合或智能化仪表中所需要的。一、以 DPTR为基地址的查表程序MOVC A,@A+DPTR1、其操作步骤如下:? 初始化 DPTR,将表格的首地址放入 DPTR中,作为基地址。? 初始化 ACC,A中应该放所要查询的数据在表格中的顺序号。? 执行结果, 在执行该指令后,A中存放的是在表格中查到的数据。注意事项? 在查询表格时,若所要查询的数据是双字节的,则在初始化 A中的数应为顺序号的 2倍,且应执行两次本指令。? 对于单字节表格而言,表项的个数应不大于 256个,若大于 256时,则应适当修改DPTR的值。? 表格的存放位置。二、以 PC为基地址的查表指令? MOVC A,@A+PC表格存放地址 =PC+偏移量 +X(表项 )1、操作步骤? (1) 将待查表的项数送给 ACC。? (2) 叠加偏移量,表头和当前 PC的地址偏移量加到表项上。? (3) 执行结果。2、注意事项? (1) 对于双字节表格,其处理方法与以 DPTR为基地址的情况相同。? (2) 对于单字节表格而言,其项数应不大于256。? (3) 对于双字节表格而言,其项数应不大于128。三、两种方式的比较1,PC仅能对所谓本地表格操作,即表格项数不得大于 256,且偏移量可能随程序的变化而变化,计算较为麻烦,其优点是少用寄存器。2,DPTR使用起来非常灵活,表项数不受限制,且表格可以放在 64K的任意地方。例 4-5-1设有一个巡回检测报警系统需对 16路输入值进行比较,当每一路输入值超过该路的报警值时实现报警。?函数 Y的内存地址 =函数表首地址 +( X*2)?查表前,路数 Xi在 R2中,查表后的 值存放在(R4R3)中。查表程序清单? TB1,MOV A,R2? ADD A,R2 ;路数 Xi*2?A? MOV R3,A ;保存? ADD A,#data=? MOVC A,@A+PC ;1? XCH A,R3 ;1? ADD A,#data+1;2 ;data=?? MOVC A,@A+PC ;1? MOV R4,A ;1? RET ;1? TAB1,DW 05F0H,0E89H,0A695H,1EAAHDW 0D9BH,7F93H,H? DW FH,1A66H,22E3H? DW 1174H,16EFH,33E4H,6CA0H例 4-5-2在一个温度测量装置中,测出的电压与温度为非线性关系。设测得的电压为 X,用 10位二制数表示。现要求采用查表法实现线性化处理。VTT1V1非线形V1=KT1分 析? 10位二进制位的表示范围为 0~1023,因而有1024个电压值,从而可以建立一个表格,其项数为 1024个。?存放温度值 Y的单元地址 =表首地址 +( X*2)?设测得的电压值已存放在 20H,21H中,(20H为高字节 ),查表后的温度值存放在 22H,23H中,(22H为高字节 )。例 4-5-2 程序清单? LTB2,MOV DPTR,#TAB2? MOV A,21H; (20H21H)*2? CLR C? RLC A? MOV 21H,A? MOV A,20H;表首 + (20H21H)*2? RLC A ;为什么不清 C? MOV 20H,A? MOV A,21H? ADD A,DPL? MOV DPL,A? MOV A,20H? ADDCA,DPH;为什么带进位加? MOV DPH,A测得的电压值存放 (20H21H)中 (20H为高字节 ),查表后的温度值存放在(22H23H)中(22H为高字节 )例 4-5-2 程序清单 (续 )? CLR A ;查表 为什么清 A? MOVC A,@A+DPTR? MOV 22H,A? INC DPTR? CLR A? MOVC A,@A+DPTR? MOV 23H,A? RET? TAB2,DW ………….,;温度表值? DW …………..§ 4-6 散转程序设计在程序设计中,不外有三种情况,顺序, 循环和条件分支程序 。其中顺序程序设计最为简单,而循环程序设计在前面已经学习过。分支程序 (如下图所示 )又可分为两大类,字节条件和位条件,即 CJNE和 JC、JB,JZ类指令。位条件转移指令很容易实现简单条件转移,当要实现多分支转移时,可以通过 CJNE来实现,这就是所谓散转程序设计,但实现起来则较为麻烦。(A)=0?YYY(A)=1?N(A)=2?NN例 4-6-1测试 P1口输入的100个数中 0~9各数的概率分布程序(A)=0? YYY(A)=1?N(A)=2?NN操作 0操作 1操作 2终点MOV 40H,#100READ,MOV A,P1CHK0,CJNE A,#0,CHK1INC 30HDJNZ 40H,READSJMP EENDCHK1,CJNE A,#1,CHK2INC 31HDJNZ 40H,READSJMP EENDCHK2,CJNE A,#2,CHK3INC 32HDJNZ 40H,READSJMP EENDCHK3,CJNE A,#3,CHK4INC 33HDJNZ 40H,READSJMP EENDCHK4,CJNE A,#4,CHK5INC 34HDJNZ 40H,READSJMP EENDCHK5,CJNE A,#5,CHK6INC 35HDJNZ 40H,READSJMP EEND例 4-6-1 程序清单 (教材 P45)CHK6,CJNE A,#6,CHK7INC 36HDJNZ 40H,READSJMP EENDCHK7,CJNE A,#7,CHK8INC 37HDJNZ 40H,READSJMP EENDCHK8,CJNE A,#8,CHK9INC 38HDJNZ 40H,READSJMP EENDCHK9,INC 39HDJNZ 40H,READEEND,SJMP $利用条件转移类指令来实现分支,程序较为简单,容易实现,但应特别注意的是,在分析问题时,一定要逻辑严密,充分判断出各种可能出现的条件标志。二、利用转移指令来实现的程序散转? JMP @A+DPTR? 其执行过程可以分为三步:? (1)将转移表首地址送入 DPTR作为基地址。? (2) 将条件标志单元内容装入 A中作为变址,在装入前,还应根据转移表项内容作相应变化。? (3)实现转移 。? 我们可以根据转移表的不同来分为三种散转程序:1、采用 转移指令表 的散转程序设计这类散转程序的核心部分 ―― 转移表部分由无条件转移指令 AJMP或 LJMP构成。其转移范围分别为 64K或 2KBytes。例 4-6-2 要求根据 R7的内容转向各个操作程序 。? 即( R7) =0,转向 OPR0? 即( R7) =1,转向 OPR1? 即( R7) =2,转向 OPR2? ……………………………? 即( R7) =n,转向 OPRn例 4-6-2程序清单? JUMP1,MOV DPTR,#JPTAB1? MOV A,R7? ADD A,R7 ; (R7)*2?(A)? JNC NOAD ;判断是否有进位,? INC DPH ;有加到高字节地址? NOAD,JMP @A+DPTR? JPTAB1:AJMP OPR0? AJMP OPR1? ……………..? AJMP OPRn例 4-6-2 注意事项( 1)在本例中,由于 AJMP指令的指令长度为 2个字节,因而在散转时采用自加的方法使变址实现乘 2;若改用 LJMP指令,由于其指令长度为 3字节,因而应使变址乘 3来修下正。当修正产生进位时,要将进位加到 DPH中。(2) 由于 R7是单字节,因而散转点不能大于 256个。为了克服此局限性,我们考虑:通过修改 DPTR的办法来增加散转点,使这最大散转点 N可达到N&=(最大存储容量 ― 散转表首地址 )/3。例 4-6-3 要求根据 R6R7中的数据转向对应的操作程序 (P65)JUMP2,MOV DPTR,#JPTAB2MOV A,R6MOV B,#03H ;(R6)*3?(BA)MUL ABADD A,DPHMOV DPH,A例 4-6-3续MOV A,R7MOV B,#03H? MUL AB? XCH A,B? ADD A,DPH? MOV DPH,A? XCH A,B? JMP @A+DPTR? JPTAB2:LJMP OPR0? LJMP OPR1? ……………..? LJMP OPRn2、采用 转向地址偏移量表 散转程序本方法的关键在于建立一个转向地址偏移量表,需要程序员认真计算,否则会产生错误。4-6-4 要求按 R7的内容转向 5个操作程序。JUMP3,MOV A,R7MOV DPTR,#TAB3MOVC A,@A+DPTRJMP @A+DPTRTAB3,DB OPR0-TAB3DB OPR1-TAB3…………………….DB OPR4-TAB3OPR0:OPR1:OPR2:…… 本例的散转范围小于 256,同上例一样,本例也可通过变通的方法,使这能在 64K范围内实现散转。3、采用转向地址表的散转程序 (P66)本方法的关键在于将散转点的地址直接建立表格,然后利用查表程序,从而实现散转。例 4-6-5 要求根据 R7的内容转向相应的操作程序中去,设各操作程序有入口地址分别为OPR0,OPR1,…,OPRn例 4-6-5程序? MOV DPTR,#TAB4 ;指向地址表? MOV A,R7? ADD A,R7 ;R7*2? JNC NADD? INC DPH ;加进位? NADD:MOV R3,A? MOVC A,@A+DPTR ;查高位地址? XCH A,R3? INC A? MOVC A,@A+DPTR ;查低位地址? MOV DPL,A? MOV DPH,R3? CLR A? JMP @A+DPTR ;实现散转例 4-6-5程序 (续 )TAB4,DW OPR0 ;低位字节在高地址DW OPR1DW OPR2…………….DW OPRn本例也能通过修改 DPTR的方法来使散转点大于 256个。三、采用,RET”指令的散转程序本方法的关键在于将操作程序的目的地址压入椎栈,然后通过,RET”指令来将目的地址弹入到 PC中,从而实现程序转移。即利用RET指令来代替两个 POP指令。例 4-6-6要求根据 R7的内容转向各处操作程序,设各操作程序的转向地址分别为OPR0,OPR1,…..OPRn例 4-6-6程序JUMP5,MOV DPTR,#TAB5MOV A,R7ADD A,R7 ;R7*2JNC NADDINC DPHNADD,MOV R3,A? MOVC A,@A+DPTR ;查高位地址? XCH A,R3? INC A? MOVC A,@A+DPTR? PUSH ACC ;低位地址? PUSH 03H ;PUSH R3高位地址? RET? TAB5,DW OPR0 ;转地址表? DW OPR1? …………….? DW OPRn小结以上方法可灵活使用,需对地址差值进行计算的方法,其差值会因程序的变化而变化,使用时要小心从事。对于椎栈操作不太熟悉的同学,在使用,RET”实现散转时,更要小心谨慎。§ 4-7 I/O端口控制程序通过前面的学习,我们知道单片机有 32个 I/O口可供编程者使用。由于结构上的原因,I/O口作为输出时,由于端口具有锁存功能,不需外接锁存器;但是,当把它作为输入口时,虽然具有输入缓冲器,但不具有输入锁存器,因此在 CPU完成读引脚前,输入的数据必须一直保持在引脚上。为此,我们需要借助一些特定的接口电路来实现输入功能。一,BCD拨码盘与单片机的接口如右图所示,A为公共端,当 A接 VCC时,拨码盘输出 正逻辑,当 A接 GND时,拨码盘输出 负逻辑 。其输出范围为 ,因而称之为 BCD拨码盘。类似于电度表的计量数字。BCD拨码盘与单片机的接口BCD拨码盘与单片机的接口电路如右图所示:通过读取 P1口的低四位即可获得BCD拨码盘的状态信息 。二、多片 BCD拨盘与单片机的接口? 如图所示:通过对 P1口的高四位进行扫描,使P1.4~P1.7依次为,0”,然后查询 P1口低四位的状态,从而得到拨盘的状态信息。? 由于拨盘在控制端为,0”时选中该位,因此拨盘的输出为反码,经与非门后,读出的状态信息为正码。三、拨码输入程序? 将 4位 BCD码按千,百,十,个位依次读入,然后存放在30H_33H中。? RDS,MOV R0,#30H? MOV R2,#7FH? MOV R3,#04H? LOOP,MOV A,R2? MOV P1,A? MOV A,P1? ANL A,#0FH? MOV @R0,A? INC R1? MOV A,R2? RR A? MOV R2,A? DJNZ R3,LOOP? RET§ 4-8 子程序调用时的参数传递? 在进行程序设计时,为保证程序的高效、可靠的运行,增加程序的可读性、可懂性,我们提倡结构化编程,而结构化编程的重要一点就是 子程序的编制。? 在进行程序设计时,有些程序段是被多次使用到,但每次使用时,需要对某个寄存器的内容稍作修改。为了避免多次多次重复编写同样的程序,节省存储空间,我们就可以把这样的程序段独立出来,形成一个独立的子程序,每次要使用前,先对需要修改的寄存器进行修改后,用 ACALL或 LCALL调用,这里修改的寄存器我们称之为入口参数,子程序执行的结果,我们称之为出口参数,参数修改方式则称之为参数传递。一、通过寄存器传递参数?这种方法应用最为广泛、也最易使用,它是在调用子程序之前,对需要修改的寄存器预先修改后,再来调用子程序。例 4-8-1 试编程对 30H~3AH单元清零? MAIN,………..…………? MOV R0,#30H? MOV R7,#0AH? LCALL SUBRT? ………………….? SUBRT,MOV A,#00H? RESU,MOV @R0,A? INC R0? DJNZ R7,RESU? RET二、通过椎栈传递参数例 4-8-2 试编程对 30H~3AH单元清零MAIN,……………..MOV 70H,#30HMOV 71H,#0AHPUSH 70HPUSH 71HLCALL SUBRT………………………SUBRT:POP DPHPOP DPLPOP 07HPOP 00HSUB1,MOV A,#00HLOOP,MOV @R0,AINC R0DJNZ R7,LOOPPUSH DPLPUSH DPHRET对于简单程序而言,这种方法反而较笨,较易引起混淆。三、利用数据指针传递参数?在这种方法中,待传递的参数不是放在调用指令之前,而是紧跟在调用指令之后,此法对参数量大的情况特加有用。?例 4-8-3 将表格中的数据送打印机打印? MAIN,……………..? ACALL PRINT? DB ‘THIS IS AN EXAMPLE? DB 0AH,0DH,00H? NEXT,…………………? PRINT:POP DPH? POP DPL? PPP1,MOV A,#00H? MOVC A,@A+DPTR ;查表? INC DPTR? JZ PPEND ;判断是否结束? PPP2,…………….,;打印子程序? ……………..? SJMP PPP1 ;未完则继续? PPEND:JMP @A+DPTR;转向主程序 NEXT处,取代返回指 ;令本章作业,1,2,4,8第章定时计数器及其应用本章内容Single Chip Microcomputer§5-1 定时 /计数器工作原理及结构§5-3 定时 /计数器的工作方式§5-4 定时 /计数器的应用举例§5-2 定时 /计数器方式和控制寄存器第五章 MCS-51单片机内部定时 /计数器及其应用51系列单片机内部提供 2个定时 /计数器 T0和 T1,即可用作 定时器,也可用作 计数器,还可作为 串行口的波特率发生器,定时 /计数器同软、硬件结合使用,可给应用系统的设计带来很多方便之处。§ 5-1定时 /计数器的工作原理及结构TRi一、计数器的工作条件 1、控制信号有效,1” 2,有计数信号源二、脉冲输入方式 1、定时:C/T=0,计数脉冲 fosc/122、计数,C/T=1,计数脉冲从 Ti端输入三、定时 /计数器工作原理1、定时方式,C/T=0,当控制信号为,1”时,每一个机器周期,加 1计数器做一次加 1操作,直至加到全,1”,再过一个机器周期,计数恢复为全,0”,且TFi=1。2、计数方式,C/T=1,当控制信号为,1”时,外部计数脉冲加在 T0( P3.4)或 T1(P3.5)引脚上,在该引脚上每产生一个下降沿,加 1计数器做一次加 1操作,直至加到全,1”,再产生一个下降沿,计数恢复为全,0”,且 TFi=1。其计数频率比定时器方式低,应不大于 fosc/24。四、定时 /计数器是可编程的定时 /计数器的工作方式分别有 8位,13位和16位三种长度,它在后台运行,程序的运行和定时 /计数器的加 1操作是并行的。我们可通过查询 TFi的状态来了解它的工作情况。可通过预设计数器的初值来改变计数长度 。五、定时 /计数器的硬件构成TMOD,TCON分别控制定时 /计数器的工作状态和工作方式。 TH0,TL0,TH1,TL1分别为 T0,T1的加 1计数器。§ 5-2 定时 /计数器的方式和控制寄存器?定时 /计数器是可编程的,程序员只需对几个特殊功能寄存器进行简单的操作,既可完成对定时 /计数器的操作。这几个特殊功能寄存器为 TH1,TL1,TH0,TL0,TCON和TMOD? TH0,TL0和 TH1,TL1分别是定时 /计数器的计数核心,但加 1计数器的运行则由 TMOD和 TCON来控制。一、定时器方式寄存器 TMODTMOD格式如下:1、定时 /计数器工作方式选择位TMOD D7 D6 D5 D4 D3 D2 D1 D088H GATE C/T M1 M0 GATE C/T M1 M0定时器 1 定时器 01、定时 /计数器工作方式选择位表 5.1 方式选择位意义M1 M0 工作方式 功能说明0 0 方式 0 13位计数器0 1 方式 1 16位计数器1 0 方式 2 自动再装入 8位计数器1 1 方式 32,C/T功能选择C/T=0 对内部脉冲计数,计数频率为 fosc/12C/T=1对 Ti引脚输入脉冲计数,计数频率不大于fosc/24。GATE=0,由 TRi来启动和停止定时 /计数器GATE=1,TRi必须同 INTi一起来启动和停止定时 /计数器,即 TRi=INTi=1时,定时器启动,其中一个为,0”时,停止计数。注意,T0和 T1的控制是严格独立的TMOD不能位寻址,使用时必须用字节传送指令,复位时,TMOD=0二、定时 /计数器控制寄存器 TCON? TCON格式如下:TFi,计数器溢出标志,计数器溢出时,由硬件对 TFi置,1”,并申请中断。进入中断后,由硬件自动清零,也可由软件清零。TRi,计数器运行控制位,由软件置,1”或清零来启动和停止计数器。TCON 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0定时控制 中断控制二、定时 /计数器控制寄存器 TCON?其余位为有关中断的控制,以后再详讲。注意,T0和 T1的控制是严格独立的? TCON可位寻址,可分别用位名来进行寻址,不必记忆位地址。?复位时,TCON=0§ 5-3 定时 /计数器的工作方式?通过前面的学习,我们可以知道:通过对 C/T的不同选择,可以选择内、外部脉冲计数方式。而对 M1M0的设置,可以使 T0和 T1工作在四种工作方式。一、方式 013位定时 /计数器方式。由 TLi(4~0)和 THi(7~0)组成。T=(213-A)*12/fosc 微秒方式 01,C/T=0?定时时间 T=(213-A)*12/fosc 微秒?式中,A为定时器初值,2,C/T=13,GATE=04,GATE=1二、方式 1方式 1为 16位定时 /计数器 方式。由 TLi(7~0)和THi(7~0)组成。其余与方式 0相同。? 定时时间 T=(216-A)*12/fosc 微秒? 式中,A为定时器初值,三、方式 2方式 2为能 自动重置 计数器初值的工作方式,TLi为 8位计数器,THi为计数器初值暂存器。? 定时时间 T=(28-A)*12/fosc 微秒? 式中,A为定时器初值,四、方式 3方式 3仅适用于 T0。 此时,TH0和 TL0分别为 2个 8位计数器,TL0由 T0的控制位来控制,而 TH0则由T1的控制位来控制。而 T1则可工作在方式 0,1,2的任一方式,但其启动则由控制方式控制,将 T1置为方式 3时则停止计数。几种方式的区别:方式 0,1,2仅在于位数不同,方式 3则是增加了一个计数器资源而已。§ 5-4 定时 /计数器的应用举例?定时 /计数器是可编程的,在使用前,必须通过软件对其初始化。一、定时 /计数器的初始化步骤1、确定工作方式 ―― 对 TMOD置初值2、置定时 /计数器初值。 即初始化 TH0,TL0,TH1、TL1,在用作计数器时,除定量计数外,一般不设初值。? 计数,A=2n-待计数值? 定时,A=2n-定时值 *fosc/123、如需中断,则开放中断,否则略去。4、启动定时 /计数器 ;对 TRi置,1”。5、通过中断或 TFi来获知定时 /计数器的工作状态。6、停止定时 /计数器 ;不需要再用时,应对 TRi清零。二、应用举例? 例 5-4-1 利用 T1在 P1.1口上输出周期为 1ms的方波。假定 fosc=6MHz根据要求可知:定时 /计数器应工作在定时器方式,即C/T=0定时时间应为 0.5ms,方式 0为 13位方式,故其工作方式可为方式 0,因而,TMOD=00H。? 定时时间 T =( 213-X) *12/(6*106)=500 (微秒 )? X=;F806H0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0X X X 0 0 1 1 01 1 1 1 1 0 0 0二、应用举例由于 TMOD和 TCON在复位时均为,00”,故不必对其重新置数。? BEGIN,MOV TL1,#06H? MOV TH1,#0F8H? SETB TR1? LOOP,JBC TF1,PTF0? AJMP LOOP? PTF0,MOV TH1,#0F8H? MOV TL1:#06H? CPL P1.1? AJMP LOOP二、方式 2应用?例 5-4-2 由 P3.4(T0)引脚输入低频脉冲信号,其重复周期大于 1ms,要求在 P3.4每发生一次负跳变时,由 P1.0输出一个宽为 500US的负同步脉冲,与此同时由 P1.1输出一个宽为1ms的正同步脉冲。二、方式 2应用将 T0工作在计数方式,初值设为 0FFH,则每在P3.4上产生一个脉冲,T0溢出,然后将 T0改为500US的定时方式。? 设晶振频率为 6MHz,则 500US定时器的初值 X为:? ( 28-X) *2*10-6=500*10-6? 由此可得,X=06H? 考虑到程序中标有,*”号指令执行的时间,将初值修正为 0AH。例 5-4-2 程序? BEGIN,MOV TMOD,#06H? MOV TH0,#0FFH? MOV TL0,#0FFH? CLR P1.1? SETB TR0? DEL1,JBC TF0,RESP1 ;检测外部信号跳变? AJMP DEL1? RESP1,CLR TR0? MOV TMOD,#02H? MOV TH0,#0AH? MOV TL0,#0AH? SETB P1.1? CLR P1.0? SETB TR0 ; *? DEL2,JBC TF0,RESP2 ; *检测第一次 500US? AJMP DEL2例 5-4-2 程序RESP2,SETB P1.0DEL3,JBC TF0,RESP3 ;检测第二次 500USAJMP DEL3RESP3,CLR P1.1CLR TR0AJMP BEGIN三、门控位的应用? GATE=1时,可测量 INTi引脚上的脉冲的宽度。?例 5-4-3 利用 T0门控位测试 INT0引脚上出现的正脉冲的宽度,并以机器周期的形式显示在显示器上BEGIN,MOV TMOD,#09HMOV TL0,#00HMOV TH0,#00HWAIT1,JB P3.2,WAIT1 ;等待变低SETB TR0WAIT2,JNB P3.2,WAIT2 ;等待变高WAIT3,JB P3.2,WAIT3 ;等待变低CLR TR0MOV R0,#DISBUFMOV A,TL0XCHDA,@R0INC R0SWAP AXCHDA,@R0INC R0MOV A,TH0INC R0SWAP AXCHDA,@R0DIS,LCALL DISUPAJMP DIS………………..XCHDA,@R0本章作业,1,2,3,4,8第章单片机的系统扩展本章内容Single Chip Microcomputer§6-1 单片机最小应用系统6.2 单片机的外部扩展性能§6-3 程序存储器的扩展概述§6-4 数据存储器的扩展§6-5 I/O口的扩展概 述51系列单片机在一个芯片上集成了许多硬件资源,它们能够完成复杂的软件工作和较为简单的硬件操作,在一定程度上相当于一台单板机的功能。但在完成一些复杂的控制时,就比不上单板机的功能强大了。? 在做一些智能仪器、仪表,小型检测和控制时,往往利用单片机的最小系统就能满足要求。但在大多数情况下,在构造一个工业控制系统时,最小系统一般不能满足系统的需求,这时,就必须在单片机外部扩展相应的芯片,以满足系统的要求,这就是系统扩展。? 单片机的系统扩展包括 ROM扩展,RAM扩展,I/O扩展、定时 /计数器扩展、中断扩展及其它特殊功能的扩展。问题的提出在单片机应用系统的设计中,往往出现 RAM,ROM或者 I/O口不够的情况,怎么办?ROM的扩展RAM的扩展并行 I/O口的扩展§6-1 MCS-51单片机最小应用系统原则上,一个单片机应用系统除必须具有单片机外,只要有振荡电路、复位电路和 ROM就能工作了,当然,它们都不能没有电源提供。这就是单片机的最小应用系统。一,C51/89C2051 最小应用系统特 点? 1、有大量 I/O线,在不需外部 ROM的系统中,EA端应接 VCC。? 2、内部 RAM和 ROM大小有限,但在数据量小的小系统中基本够用。? 3、应用系统开发具有特殊性。程序量较小,外部电路简单。我们推荐使用 89C51或89C2051。晶振复位电路4个并口?二,8031最小应用系统由于 8031内部无 ROM,因此,由 8031组成的最小应用系统必须在片外扩展 ROM与 8051构成的最小系统相比,除均需要振荡电路和复位电路外,其 EA端必须接地。6.2单片机的外部扩展性能宽度为 16位,其高 8位地址总线由 P2口提供,低 8位地址总线由 P0口经地址锁存器锁存后提供。 用作地址总线后的 P2口不能再用作 I/O口使用数据线由 P0口提供,其宽度为 8位,它为三态双向口,是使用最为频繁的通道。单片机与外部交换的数据、指令等大都经 P0口传送控制总线:/ EA/ PSEN/ RD/ WRALE二,MCS-51单片机的系统扩展能力1、地址范围0000H~0FFFFH,共 64KBytes。2、空间重叠外部 RAM和外部 ROM地址空间重叠,但因其选通信号、访问指令不同,因而不会造成访问混乱。3、扩展 I/O与外部 RAM统一编址单片机不再另外提供信号作扩展 I/O用,而是同外部 RAM统一编址,因而会占用部分RAM地址空间。§ 6-3 程序存储器的扩展在 51系列单片机中,ROM的寻址范围为 64KBytes,在片内无 ROM或ROM空间不够的情况下,我们需要在片外扩展 ROM,以满足系统和需求。§ 6-3 程序存储器的扩展我们还是本着三总线的扩展方法来座其扩展方法:低 8位地址则由 P0口经地址锁存器后提供片选则由P2口剩余部分经译码后提供。高 8位地址由 P2口直接提供。1、地址总线2、数据总线数据总线直接由 P0口提供3、控制总线4、外部 ROM访问时序二、外部 EPROM扩展电路1、使用单片的 EPROM扩展电路EPROM扩展实例----在 8031单片机上扩展 4KB EPROM...D7 Q7373D0 Q0G控制线A11A8A7A02732O7O0OE CE``````P2.3P2.0P0.7ALEPSEN``````12根地址线8根数据线2、使用多片的 EPROM扩展电路15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 地址1 1 0 * * * * * * * * * * * * * C000HDFFFH1 0 1 * * * * * * * * * * * * * A000HBFFFH0 1 1 * * * * * * * * * * * * * 6000H~7FFFHP2.515 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 地址0 0 0 * * * * * * * * * * * * * 0000H1FFFH0 0 1 * * * * * * * * * * * * * 2000H3FFFH0 1 0 * * * * * * * * * * * * * 4000H~5FFFH注 意?利用线选法时,电路简单,但地址线利用率较低,造成地址空间浪费。?利用地址译码法时,地址空间完全利用,但电路比较复杂。在集成电路技术比较发达的今天,这种方法已不多用,可用 1至 2片即可达到最大扩展容量。如:§ 6-4 数据存储器的扩展? 51单片机的片内 RAM为 128Bytes或256Bytes,一般情况下都能满足应用系统的需求,但当数据量较大时,就需要在片外扩展 RAM,其最大容量可达 64KBytes。由于片外扩展 I/O与外部 RAM采用统一编址,因而外部 RAM的实际容量有时不能达到64KBytes。一、数据存储器扩展的方法数据存储器的扩展方法与程序存储器的扩展方法基本相同。我们还是本着三总线的扩展方法来解 RAM的扩展方法:数据存储器扩展1.低 8位地址则由 P0口经地址锁存器后提供,其余部分地址由 P2口直接提供。片选则由 P2口剩余部分经译码后提供2.数据总线直接由P0口提供。3.控制总线的连接二、外部 RAM访问方法1、低 8位地址总线寻址的外部 RAM区MOVX A,@RiMOVX @Ri,A2,16位地址总线寻址的外部 RAM区MOVX A,@DPTRMOVX @DPTR,A三、常用数据存储器的扩展电路1、常用静态 RAM的引脚 图2、扩展单片 6116数据存储器举例2、扩展单片 6264数据存储器举例2,EEPROM的扩展电路( PEEPROM具有程序存储器和数据存储器的特点。既可在线修改数据,还能保证掉电后数据不丢失。因而既可用作数据存储器,也可用作程序存储器。EEPROM的扩展电路§ 6-5 I/O口的扩展? 51系列单片机有 32个 I/O口,且大多数情晗不能完全提供给用户,因此在需要大量 I/O口时,我们必须对其行扩展。?从功能上看,单片机的 I/O口有两种类型:基本 I/O和可编程 I/O。基本 I/O结构简单但功能单一,仅适用于简单的数据输入和输出;可编程 I/O功能丰富但成本较高,使用较灵活。一、简单 I/O口的扩展? I/O口的扩展原则为,输入三态、输出锁存,,因此利用 TTL或 MOS电路可进行简单 I/O口的扩展。如:用 8位三态缓冲器 74LS244可扩展输入口;用 8D锁存器 74LS273,74LS373,74LS377等可组成输出口 。? 利用片选信号对外部 I/O进行编址,对其 访问就象访问外部 RAM一样。使用 MOVX指令。? /RD及 /WR信号参加片选。1、单个 I/O口的扩展其 I/O口地址为 0FEFFH,即保证 P2.0为,0”即可。其输入和输出共用一个地址,不会发生冲突。实现按下任意键对应 LED发亮的程序如下:LOOP,MOV DPTR,#0FEFFHMOVX A,@DPTRMOVX @DPTR,ASJMP LOOP2、多个 I/O口的扩展在扩展多个 I/O时,应注意单片机 I/O的驱动能力。二、可编程 I/O口 8155的扩展可编程 I/O接口芯片结构一般较复杂,在对其使用前,一般应由单片机对其进行编程,设定其工作方式,然后才能对其进行操作。这类芯片如下表所示:1,8155的结构和技术性能1,256Bytes 的 RAM,存取时间为 400ns。2,三个通用的并行 I/O口,其中 A,B口为 8位,C口方 6位。且 C口可工作于应答式 I/O方式。3,一个 14位的定时 /计数器。4,单 5V供电,具有内部地址锁存器。5,40个引脚封装。2,8155的引脚功能? AD0~AD7 地址 /数据总线? IO/ /M I/O和片内 RAM选择 ;1:选择 IO 0:选择片内 RAM? /CE片选信号? ALE 地址锁存允许? /RD 读选通信号? /WR 写选通信号? TI 计数脉冲输入端? TO 计数的输出信号线? RESET 复位信号输入端,可编程芯片均有此引脚? PA7~0 8 位并行口? PB7~0 8位并行口? PC5~0 6位并行口? VCC,VSS 电源和地3,8155和 8031的连结4,8155的口地址分布8155的 RAM和 I/O口地址分配5,8155片内 RAM的使用EXAM,MOV DPTR,#0E700H? MOV A,#01H? MOVX @DPTR,A? INC DPTR? MOV A,#0FFH? MOVX @DPTR,A? MOV DPTR,#0E700H? MOVX A,@DPTR? MOV R2,A? INC DPTR? MOVX A,@DPTR? ADD A,R2? JZ OK? ERROR,………………? OK,………………8155片内 RAM的使用,必须确保 IO/M=0,且用MOVX指令对其访问。6,8155片内可编程 I/O的使用?( 1) 8155命令寄存器的用法8155的 C口可以设置成 4种工作方式? ALT1方式 A,B口为基本 I/O口,C口为输入口? ALT2方式 A,B口为基本 I/O口,C口为输出口? ALT3方式 A口为选通输入方式,C口低 3位为A口联络线,B口和 C口的其余位为基本 I/O口? ALT4方式 A口和 B口均为选通输入方式,C口低 3位为 A口联络线,C口高 3位为 B口联络线?我们应重点掌握前两种工作方式。其方式控制如下表所示:C口工作方式及控制信号分布( 2) 8155应用举例例:设选择 8155的 A口为基本输入口,B口为基本输出口,C口为输出口,试编程将 A口输入数据从 B口输出,并求反后将低 6位从 C口输出。根据要求,其命令寄存器的控制字应为 06H即,0 0 0 0,0 1 1 0程序清单? MOV DPTR,#0EF00H? MOV A,#06H? MOVX @DPTR,A? INC DPTR? MOVX A,@DPTR? INC DPTR? MOVX @DPTR,A? INC DPTR? CPL A? MOVX @DPTR,A? RET本章作业,1,3,4第六章 结束第章51系统的串行接口本章内容Single Chip Microcomputer§7-1概 述§7-4选学内容§7-2 MCS-51的串行接口§7-3 MCS-51单片机串行口的应用§ 7-1概 述当今社会已入信息时代,网络成为当今科技发展的一大方向,计算机系统通过网络这一桥梁,在信息时代中发挥着越来越大的作用。在单片机的应用系统中,单机应用非常广泛,但在一些大型、智能化系统中,必须要由多个单片机协同工作才能完成ξ瘢虼耍侵涞男畔⒋莩晌艘恢必然。在学习单片机间的通讯之前,我们有必要对通信的基础知识有一些了解。一、什么是串行通信??串行通信和并行通信计算机 1GND计算机 2GND并行通信计算机 1GND计算机 2GND发送接收串行通信并行通信,即数据的各位 同时 传送;串行通信,即数据 一位一位 顺序传送。二、串行通信的分类? 异步 (Asynchronous Communication)? 异步是指收发双方时钟异步,即收方和发方的时钟各自独立,由起始位和结束位来实现收、发同步。允许 ± 5%的误差。( 1)帧结构 帧为收发双方传数据的基本单位其结构如图所示。由一个起始位,0”,5~8位数据(低位在前),再后为奇偶校验位和一个停止位,1”构成。异步 (Asynchronous Communication)( 2)特点?利用起始位和结束位来实现收发同步?帧间间隔随机?位间隔固定?每帧数据最多一个字节( 3)错误检验方法,奇偶校验串行通信的分类? 同步 (Synchronous Communication)? 同步传送方式是一种 连续传送 方式,适合于大量数据的高速传送。收发双方的时钟实现同步。( 1)帧结构( 2)特点? 利用同步字符或同步时钟实现收、发同步? 每帧数据为一数据块,故传送速率较异步快? 同步时钟要求较严格( 3)校验方法,CRC 循环冗余校验三、波特率( Baud rate)? 波特率 是指串行通讯中数据传送的速率,即每秒种传送的数据传送的二进制位数。它指的是位与位之间的时间间隔。其单位为比特 /秒,bps? 在异步通讯中,收发双方是通过设定相同的波特率、依靠起始位和结束位来实现数据的准确传送。例,设每秒传送 120个字符,其帧结构为 1个起始位,7个数据位,1位校验位和 1位结束位,其波特率为:120字符 /秒 *10位 /字符 =1200bps四、串行通信制式? 单工 (simplex)? 半双工 (half duplex )? 全双工 (full duplex)串行通信制式数据只能单向流动数据虽能双向通讯,但σ皇笨探瞿艿ハ传送。数据双向通讯,收、发各用一根信号线,可完全独立工作。§ 7-2 MCS-51的串行接口?概述? 有一个可编程全双工串行通信接口( UART)(Universal Asychronous Receiver/Transmitter )? 可同时发送、接收数据 (Transmit/Receive)? 有四种工作方式,帧格式有 8,10,11位。? 波特率 (Baud rate)可设置波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为 b/s,即位 /秒( bps)。一、串行口的构成串行口内部组成示意图 如图所示,结构较为复杂,我们在使用时可将其抽象为三个可供软件直接访问的的特殊功能寄存器:PCON,SCON和 SBUF。通过对它们的读写操作即可完全控制串行口。MCS-51串行接口寄存器? SBUF――串行口数据缓冲器?共两个:一个发送寄存器 SBUF,一个接收 SBUF,二者共用一个地址 99H。 它在物理上对应两个寄存器,发送寄存器和接收寄存器,由于它们并不在同一时刻使用,因此两个寄存器共用一个地址并不会发生冲突,通过指令来区别是发送还是接收。其中,接收寄存器采用双缓冲而发送寄存器采用单缓冲。? SCON――串行口控制寄存器。 它用来定义串行口的工作方式及监视串行口的工作状态。? PCON――电源及波特率选择寄存器,PCON.7为SMOD,波特率加倍位,当 SMOD=1时,波特率为SMOD=0时的两倍。 PCON不能进行位寻址,可用ANL PCON,#7FH或 ORL PCON,#80H来对其清零或置,1”。只有该位有用,为 1时,波特率 × 2;为 0时不变。电源及波特率选择寄存器 PCONSMOD × × × GF1 GF0 PD IDL87H串行口控制寄存器 SCONSM0 SM1 SM2 REN TB8 RB8 TI RI工作方式选择多机通信控制位允许串行接收位REN=1时,允许接收; REN=0时,禁止接收。接收数据的第 9位方式 2,3中第九位,多机通讯中可用来表示是地址帧还是数据帧接收中断标志,由硬件置,1”,而由软件清零 发送中断标志9FH 9EH 9DH 9CH 9BH 9AH 99H 98HSM0 SM1 工作方式 功能 波特率0 0 方式 0 8位同步移位寄存器 fosc/120 1 方式 1 10位 UART 可变1 0 方式 2 11位 UART fosc/64或fosc/321 1 方式 3 11位

我要回帖

更多关于 单片机原理及应用 的文章

 

随机推荐