
80c51单片机原理与应用.ppt
181页单片机原理及片机原理及应用用核科学与技术学院2021.2前言计算机系统逐渐形成了通用计算机系统和嵌入式计算机系统两大分支嵌入式计算机系统具有体积小、功耗和本钱低廉的特点,广泛应用于工业测控领域,完成数据处理、模拟仿真、图像处理、网络通信等功能嵌入式技术应用:家用电器、汽车、机器人、仪器仪表,在核电仪控系统中也有大量的应用以典型代表以典型代表以典型代表以典型代表80C5180C51单片机为例,从系统设计和开发角度,对单片机为例,从系统设计和开发角度,对单片机为例,从系统设计和开发角度,对单片机为例,从系统设计和开发角度,对广泛应用于核仪控领域的嵌入式计算机技术有一个初步了解广泛应用于核仪控领域的嵌入式计算机技术有一个初步了解广泛应用于核仪控领域的嵌入式计算机技术有一个初步了解广泛应用于核仪控领域的嵌入式计算机技术有一个初步了解前言课程简介:课程简介:通过本课程的学习,掌握通过本课程的学习,掌握 80C51 单片机的单片机的硬件根本结构、内部各种功能部件的工作硬件根本结构、内部各种功能部件的工作原理及编程控制、指令系统以及各种常用原理及编程控制、指令系统以及各种常用硬件接口的设计,学习如何根据工程开发硬件接口的设计,学习如何根据工程开发任务的要求,实现任务的要求,实现 80C51单片机应用系统单片机应用系统的设计。
的设计前言各章内容:各章内容:第一章第一章 绪论绪论第二章第二章 单片机根本结构与工作原理单片机根本结构与工作原理第三章第三章 80C51单片机的指令系统单片机的指令系统第四章第四章 80C51单片机的功能单元并行单片机的功能单元并行I/O接接口口第五章第五章 80C51单片机的程序设计单片机的程序设计第六章第六章 80C51单片机的系统扩展单片机的系统扩展第七章第七章 单片机的外围接口技术单片机的外围接口技术第八章第八章 80C51单片机的应用系统实例单片机的应用系统实例前言教学形式及考核方式:教学形式及考核方式:课堂教学〔理论授课〕、闭卷考试课堂教学〔理论授课〕、闭卷考试总成绩总成绩=平时成绩平时成绩+考试成绩考试成绩第1章 绪论 单片机〔single chip microcomputer),指将CPU、RAM、ROM、定时器/计数器以及输入/输出接口电路等计算机主要部件集成在一块集成电路上的微型计算机是典型的MCU (Microcontroller Unit)§1.1单片机开展过程单片机的开展历程单片机的开展历程2020世纪世纪7070年代随着微处理器研制成功,出现了单年代随着微处理器研制成功,出现了单片机片机,1976,1976年年IntelIntel公司的公司的MCS-48MCS-48;;MotorolaMotorola公司的公司的68016801、、68026802;;ZilogZilog公司的公司的Z-8Z-8等等, ,典型产品典型产品MCS-51(80c51MCS-51(80c51、、80c52……) 880c52……) 8位位机,机,MCS-96MCS-96是是1616位机位机SCM---------->MCU---------->SoCSCM---------->MCU---------->SoC〔始于〔始于2020世纪世纪9090年代年代中期〕中期〕Single Chip Single Chip MicrocomputerMicrocomputerMicro Controller UnitMicro Controller UnitSystem On ChipSystem On Chip单片机的开展阶段单片机的开展阶段1974年~1976年:单片机初级阶段。
双片的形式,且功能比较简单1976年~1978年: :低性能低性能单片机阶段以单片机阶段以Intel Intel 公司制造的公司制造的MCS-48MCS-48单片机为代表单片机为代表1978年~现在::高性能高性能单片机阶段单片机阶段IntelIntel公司的公司的MCS-51MCS-51系列、系列、MortorolaMortorola公司的公司的68016801系列等1982年~现在:8位单片机稳固开展及16位单片机、32位单片机推出阶段各公司典型产品各公司典型产品〔〔1 1〕美国〕美国IntelIntel公司公司 MCS-51 MCS-51系列及其增强型、扩展型系列系列及其增强型、扩展型系列; ; 〔〔2 2〕美国〕美国ATMELATMEL公司公司89C5189C51、、89C5289C52、、89C5589C55、、89S5289S52等等; ;〔〔3 3〕荷兰〕荷兰PHILIPSPHILIPS公司公司 8xC552 8xC552系列系列 ; ;〔〔4 4〕美国〕美国MotorolaMotorola半导体公司〔飞思卡尔〕半导体公司〔飞思卡尔〕68016801系列等系列等. .MCS-51和80C51简介n第一代第一代 1976年,年,MCS-48n将计算机将计算机CPU和外围芯片集成到一个芯片上和外围芯片集成到一个芯片上n第二代第二代 MCS-51的的8051、、8052n技术特点是向外部接口电路扩展技术特点是向外部接口电路扩展——扩大了存储器空间扩大了存储器空间RAM和和ROM。
8031与与8051及及8751内部结构根本相同,区别在于内部结构根本相同,区别在于8031不含片不含片内程序存储器,内程序存储器,8751片内程序存储器为片内程序存储器为EPROMn第三代第三代 80C51n技术特点是技术特点是CMOS化,集成度高,速度快,功耗低化,集成度高,速度快,功耗低80C51是以是以MCS-51的的HCMOS根底上开展而来,结构与根底上开展而来,结构与MCS-51根本相同,主要根本相同,主要对外部接口进行了扩展从应用和设计开发角度两者区别不大对外部接口进行了扩展从应用和设计开发角度两者区别不大n值得注意的是,在单片机硬件开展的同时,单片机软件开发语言值得注意的是,在单片机硬件开展的同时,单片机软件开发语言也发生了变化,高级语言已经逐渐替代汇编语言也发生了变化,高级语言已经逐渐替代汇编语言MCS-51和80C51简介〔〔1 1〕根本型〕根本型 典型产品:典型产品:8031/8051/87518031/8051/8751内部内部RAMRAM增到增到256256字节,字节,80528052、、87528752的内部程序存储器扩展到的内部程序存储器扩展到8KB8KB,,1616位定时位定时器器/ /计数器增至计数器增至3 3个。
个〔〔3 3〕低功耗型〕低功耗型 典型产品:典型产品:80C31/87C51/80C5180C31/87C51/80C51采用CMOSCMOS工艺工艺, ,适于电池供电或其它适于电池供电或其它要求低功耗的场合要求低功耗的场合〔〔2 2〕增强型〕增强型 典型产品:典型产品:8032/8052/87528032/8052/8752〔〔5 5〕超〕超8 8位型位型 典型产品:典型产品:PHILIPSPHILIPS公司公司80C552/87C552/83C55280C552/87C552/83C552系列单片机系列单片机 将将MCS-96MCS-96系列〔系列〔1616位单片机〕位单片机〕I/OI/O部件如:高速输入部件如:高速输入/ /输出〔输出〔HSI/HSOHSI/HSO〕、〕、A/DA/D转换器、脉冲宽度调制〔转换器、脉冲宽度调制〔PWMPWM〕、看门狗定时器〔〕、看门狗定时器〔WDTWDT〕等移植进来构成〕等移植进来构成新一代新一代MCS-51MCS-51产品 功能介于功能介于MCS-51MCS-51和和MCS-96MCS-96之间之间。
目前已得到了较广目前已得到了较广泛的使用泛的使用〔〔6 6〕片内闪烁存储器型〕片内闪烁存储器型 美国美国ATMELATMEL公司的公司的AT89C51AT89C51单片机,受到应用设计者的欢送单片机,受到应用设计者的欢送〔〔4 4〕专用型〕专用型 8044/8744 8044/8744,用于总线分布式多机测控系统美国,用于总线分布式多机测控系统美国CypressCypress公司的公司的EZU EZU SR-2100SR-2100单片机-单片机-USBUSB接口§1.2 单片机与嵌入式系统1、嵌入式系统通用计算机与嵌入式计算机嵌入式计算机嵌入式计算机通用计算机通用计算机工工业控制器控制器智能智能仪表表PC机机大型大型计算机算机工作站工作站航空、航天航空、航天机器人机器人嵌入式系统开展趋势嵌入式系统开展趋势n目前,随着ARM处理器在全球的流行,32位/64位RISC嵌入式微处理器已经成为中高端嵌入式应用和设计的主流 民用领域包括数码产品、智能家电等以及工业及军用领域应用民用领域包括数码产品、智能家电等以及工业及军用领域应用n多种应用对系统的功能和性能上提出了更多和更高的要求:①多功能化②多核结构处理器③更低功耗④更宽的工作电压范围⑤更先进的工艺和更小的封装⑥低噪声布线技术RISC 和 CISC的比较nRISC (reduced instruction set computer):精简指令集计算机,计算机中约20%的指令承担了80%的工作,IBM研究中心于1974年提出了RISC的概念nCISC (Complex Instruction Set Computer ):复杂指令集计算机,早期的计算机部件比较昂贵,主频低,运算速度慢。
为了提高运算速度,人们不得不将越来越多的复杂指令参加到指令系统中,以提高计算机的处理效率 nRISC CPU包含有较少的单元电路,因而面积小、功耗低;而CISC CPU包含有丰富的电路单元,因而功能强、面积大、功耗大 nRISC机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断n由于RISC指令系统确实定与特定的应用领域有关,故RISC机器更适合于专用机;而CISC机器那么更适合于通用机 几种常用的嵌入式系几种常用的嵌入式系统〔3〕芯片级〔嵌入式微处理器、MCU、SoC)嵌入式系统是一个庞大的家族,按形态可分为:〔1〕设备级〔工控机〕〔2〕板级〔通用CPU模块〕嵌入式系嵌入式系统的特点的特点①嵌入式系统一般是面向特定应用的,具有低功耗、体积小、高集成度等特点;②软件上量体裁衣;③与应用有机结合在一起,生命周期较长;④为提高速度和可靠性,软件固化在存储芯片或单片机中嵌入式系嵌入式系统的的应用用领域域1、家用电器2、办公自动化3、商业营销4、工业自动化5、智能仪表与智能传感器6、汽车电子与航空航天电子核核电站中哪些地方用到了嵌入式系站中哪些地方用到了嵌入式系统??数字化分布式仪表控制系统总体纵向分为数字化分布式仪表控制系统总体纵向分为四层四层 2) 2)系统级〔控制层〕:执行信号采集、数据处理和执行保护与控制功能。
该级系统级〔控制层〕:执行信号采集、数据处理和执行保护与控制功能该级系统级〔控制层〕:执行信号采集、数据处理和执行保护与控制功能该级系统级〔控制层〕:执行信号采集、数据处理和执行保护与控制功能该级包括:反响堆保护系统、数据采集与处理系统、反响堆控制系统等;包括:反响堆保护系统、数据采集与处理系统、反响堆控制系统等;包括:反响堆保护系统、数据采集与处理系统、反响堆控制系统等;包括:反响堆保护系统、数据采集与处理系统、反响堆控制系统等; 3) 机组级〔过程信息处理层〕:处理一个机组的所有数据,执行机组的监测、控制和信息显示功能,是人机接口的界面主要包括:主控室,数据处理和显示系统以及报警系统,应急控制室等;1) 1) 现场级〔输入现场级〔输入现场级〔输入现场级〔输入/ /输出层〕:执行过程输入和输出功能它是系统级与核电站工输出层〕:执行过程输入和输出功能它是系统级与核电站工输出层〕:执行过程输入和输出功能它是系统级与核电站工输出层〕:执行过程输入和输出功能它是系统级与核电站工艺设备之间信号传递的桥梁;艺设备之间信号传递的桥梁;艺设备之间信号传递的桥梁;艺设备之间信号传递的桥梁;4) 4) 电站级〔管理层〕:处理所有机组公用数据。
电站级〔管理层〕:处理所有机组公用数据电站级〔管理层〕:处理所有机组公用数据电站级〔管理层〕:处理所有机组公用数据单片机核仪表单片机核仪表相比相比较模模拟电路路仪表,表,单片机核片机核仪表有以下特点:表有以下特点:①①电气气结构构简单,,仪表的可靠性高;表的可靠性高;②②实现一机多路一机多路测量;量;③③具有故障具有故障诊断功能,断功能,维修快捷,操作修快捷,操作简化;化;④④可可实现模模拟电路路难以以实现的数学运算,提的数学运算,提高高测量精度;量精度;⑤⑤在相同在相同结构上,采用不同构上,采用不同软件可件可满足足仪表表不同需要,不同需要,实现处理硬件理硬件结构通用化构通用化思考题及习题思考题及习题1 1.除了单片机这一名称之外,单片机还可称为〔.除了单片机这一名称之外,单片机还可称为〔 〕〕和〔和〔 〕2 2.单片机的开展大致分为哪几个阶段?.单片机的开展大致分为哪几个阶段?3 3..MCS-51MCS-51系列单片机的根本型芯片分别为哪几种?它们的系列单片机的根本型芯片分别为哪几种?它们的差异是什么?差异是什么?4 4..MCS-51MCS-51系列单片机与系列单片机与80C5180C51系列单片机的异同点是什么?系列单片机的异同点是什么? 5 5.在家用电器中使用单片机应属于微计算机的.在家用电器中使用单片机应属于微计算机的〔〔A A〕辅助设计应用〕辅助设计应用 〔〔B B〕测量、控制应用〕测量、控制应用〔〔C C〕数值计算应用〕数值计算应用 〔〔D D〕数据处理应用〕数据处理应用7 7.说明单片机主要应用在哪些领域?.说明单片机主要应用在哪些领域?8 8.微处理器、微计算机、微处理机、.微处理器、微计算机、微处理机、CPUCPU、单片机、单片机它们之间有何区别?它们之间有何区别?6 6..80518051与与87518751的区别是:的区别是:〔〔A A〕内部数据存储单元数目的不同;〕内部数据存储单元数目的不同;〔〔B B〕内部数据存储器的类型不同;〕内部数据存储器的类型不同;〔〔C C〕内部程序存储器的类型不同;〕内部程序存储器的类型不同;〔〔D D〕内部的存放器的数目不同。
〕内部的存放器的数目不同第2章 80C51单片机的根本结构与工作原理§2.1 单片机的根本组成CPUCPU运算部件运算部件控制部件控制部件B BRAMRAMP0P0口口P2P2口口ROMROM(EPROM)(EPROM)串串行行口口 C / T中断中断系统系统SFRSFRP1P1口口8 8P3P3口口8 88 88 8XTALXTAL1 1XTALXTAL2 2PSEN ALEPSEN ALE EA RESET EA RESETVccVccVssVss1.1.微处理器微处理器2.2.数据存储器数据存储器3.3.程序存储器程序存储器4.I/O4.I/O口口5.5.串行口串行口6.6.定时定时/ /计数器计数器7.7.中断系统中断系统8.8.特殊功能特殊功能存放器存放器片内总线片内总线片内总线片内总线u按功能可分成按功能可分成8个部件,通过片内单一总线连接起来个部件,通过片内单一总线连接起来u控制方式:控制方式:SFR对各功能部件集中控制对各功能部件集中控制1、中央处理器(CPU)和通用处理器根本相同,只是增加了“面向控制〞的处理功能,如位处理、查表、乘除法运算、跳转指令、状态检测以及中断处理等。
2、数据存储器〔RAM)单片机中采用随机存储器RAM存储工作变量和数据,分为片内RAM和片外RAM一般单片机内部RAM的容量为65~256字 节 存 放 器 在 逻 辑 上 划 分 在 片 内R A M中 3、程序存储器(ROM)应用程序一般不需改变,因此需永久保存,采用ROM,也分为片内和片外程序芯片类型包括ROM、PROM〔掩模ROM〕、EPROM以及E2PROM等ROMPROMEPROMEEPROM4、并行I/O主要用作输入输出控制,51系列单片机上包括P0、P1、P2、P3四个复用并行I/O端口5、串行口提供全双工全双工全双工全双工串行I/O口,使得单片机系统具备了串行通信的能力目前,通过扩展,单片机应用系统支持USB标准6、定时/计数器面向控制面向控制面向控制面向控制的应用需要精确的定时和计数,为提供精确的定时,在单片机内部均设置定时器/计数器电路,通过中断,实现定时/计数的自动处理7、中断系统80C51有5个中断源〔2个外部中断、2个定时/计数器中断、1个串行中断〕,支持2级中断嵌套和中断优先级设置〔通过设置IP实现)默认优先级如下表8、特殊功能存放器〔SFR〕特殊功能存放器在物理上存在于片内RAM中,在逻辑上功能独立,80C51共定义了21个SFR,用以存放相应功能部件的控制命令、状态或数据。
中断源中断源中断源中断源入口地址入口地址入口地址入口地址优优先先先先权权说说明明明明外部中断00003H最高来自P3.2的外部中断请求定时器0000BHT0溢出使中断请求标志位TF0有效外部中断10013H来自P3.3的外部中断请求定时器1001BHT1溢出使中断请求标志位TF0有效串行口0023H最低发送/接受一帧信息后使TI/RI有效n80C51的封装形式有40引脚双列直插〔DIP〕和44引脚方型扁平式〔QFP〕§2.2 80C51单片机的引脚功能和结构框图 PC=PC+1§2.3 80C51单片机的结构和特点1. 中央控制器与运算器一起构成中央处理器,主要包括程序计数器PC、指令存放器IR、指令译码器、条件转移逻辑电路及定时控制逻辑电路〔〔1〕程序计数器〕程序计数器PC和数据指针和数据指针DPTRPC〔16位〕存放着下一条将要从程序存储器取出的指令的地址① 根本工作方式,程序计数器自动加1② 执行条件或无条件跳转指令,程序计数器被置入新的数值程序流向发生变化 如:JMP @A+DPTR③ 执行调用指令或响应中断时:Ø〔PC当前值〕堆栈Ø〔程序入口地址或中断矢量地址〕PCØ 程序遇到RET或RETI时,〔栈顶〕PCPC的工作方式如下:的工作方式如下:MOVDPTR, #7EFFHMOVX @DPTR,AMOVR7,#20LOOP: DJNZR7, LOOPMOVX A, @DPTRMOVR0, AINCDPHMOVX A,@DPTRMOVR1,ARETPCDPTR是一个功能16位特殊功能存放器,主要用途是片外数据存储器寻址的地址存放器:例如 MOVX A, @DPTR 读MOVX @DPTR, A 写DPTR除作为16位存放器,还可以分成2个8位存放器使用——DPH和DPL,例如 INC DPHPC与DPTR的异同?〔〔2〕指令存放器〕指令存放器IR〔存放指令操作码〕、指令译码器及控制逻辑〔存放指令操作码〕、指令译码器及控制逻辑 条件转移逻辑电路条件转移逻辑电路主要用来控制程序的分支转移,有如下几种:主要用来控制程序的分支转移,有如下几种:进位进位标志位、溢出标志位、奇偶标志位、累加器为标志位、溢出标志位、奇偶标志位、累加器为0状态、状态、F0、位寻址空间、位寻址空间〔1〕算数逻辑单元ALU2. 运算器〔2〕累加器A〔3〕B存放器〔4〕程序状态子PSW〔5〕暂存存放器〔1〕算数逻辑单元ALU( Arithmetic Logical Unit )存放器存放器存放器存放器立即数立即数立即数立即数直接寻直接寻直接寻直接寻址单元址单元址单元址单元内部内部内部内部RAMRAM存放器存放器存放器存放器B B进位进位/借位借位算数逻辑运算可完成的操作:l带进位和不带进位的加、减及8位乘、除法l逻辑运算ANL、ORL和XRLl增量或减量运算INC、DECl位操作运算:置位、复位、取反等l左移位、右移位l半字节交换lBCD码修正运算计算结果计算结果〔〔2〕累加器〕累加器A ( Accumulator )l是是ALU单元的单元的输入之一输入之一输入之一输入之一,又是,又是ALU结果的存放结果的存放结果的存放结果的存放单元单元l是数据传送的中转站,不仅数据传送,还包括查表操作,是数据传送的中转站,不仅数据传送,还包括查表操作,例如:例如:MOV A, R2; MOVC A, @A+DPTR;例如:例如:ADD A, R2; JZ LOOP1;〔〔3〕〕B存放器存放器——在乘除法运算中作为在乘除法运算中作为ALU的输入之一的输入之一l乘法中,乘法中,ALU的两个输入分别是的两个输入分别是A(积的低积的低8位〕,位〕,B(积的高积的高8位〕位〕l除法中,除法中,A作为作为被除数被除数和和商商,,B作为作为除数除数和和余数余数。
〔〔4〕程序状态字〕程序状态字PSW( Program Status Word )PSW是是1个逐位定义的个逐位定义的8位的存放器位的存放器D7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0C CP PF1F1OVOVRS0RS0RS1RS1F0F0ACAC奇偶标志位奇偶标志位空空溢出标志位溢出标志位用户标志位用户标志位半进位标志半进位标志((DA中用中用))进位标志进位标志寄存器选择寄存器选择控制位控制位3. 时钟电路及时钟电路及CPU的时序的时序〔〔1〕时钟电路〕时钟电路80C51单片机时钟电路主要包括:单片机时钟电路主要包括:振荡器及定时控制元件振荡器及定时控制元件、、内部时钟内部时钟发生器发生器、、ALE信号信号内部时钟方式内部时钟方式外部时钟方式外部时钟方式Ø C1和和C2典型值通典型值通常选择为常选择为30pF左右。
左右Ø 晶体的振荡频率晶体的振荡频率在在1.2MHz~~12MHz之之间Ø 某些高速单片机芯某些高速单片机芯片的时钟频率已达片的时钟频率已达40MHz〔〔2〕时序定时单位〕时序定时单位80C51时序定时单位共有时序定时单位共有4个:节拍〔时钟周期〕、状态〔周期〕、个:节拍〔时钟周期〕、状态〔周期〕、机器周期、指令周期机器周期、指令周期①①节拍节拍与与状态状态:一个状态包括:一个状态包括两个两个节拍,其前半周期对应的节拍称节拍,其前半周期对应的节拍称为为P1,后半周期对应的节拍称为,后半周期对应的节拍称为P2②②机器周期机器周期:一个机器周期有:一个机器周期有6个状态个状态(S1~S6),由于一个状态包含,由于一个状态包含2个节拍,所以共有个节拍,所以共有12个节拍个节拍(S1P1,S1P2,S2P1,…S6P2)③③指令周期指令周期:执行一条指令所需的时间,:执行一条指令所需的时间,80C51根据指令的不同,可根据指令的不同,可包含包含1、、2、、4个机器周期个机器周期〔3〕80C51指令时序80C51共有111条指令,按指令字长可分为:单字节、双字节和三字节指令按周期数可分为:单字节单周期、单字节双周期、双字节单周期、双字节双周期、三字节双周期以及单字节4周期指令。
MOVX指令指令(单字字节双周期双周期)§2.4 80C51单片机的存储结构和地址空间单片机的存储结构和地址空间80C51单片机的存储器采用单片机的存储器采用Harvard结构结构——程序存储器和数据存储器程序存储器和数据存储器截然分开,各有自己的寻址方式、寻址空间和控制系统截然分开,各有自己的寻址方式、寻址空间和控制系统①①在在物理物理上有上有4个存储空间:个存储空间:程序存储器:程序存储器:片内程序存储器;片内程序存储器; 片外程序存储器片外程序存储器数据存储器:数据存储器:片内数据存储器;片内数据存储器; 片外数据存储器片外数据存储器②②在在逻辑逻辑上有上有3个存储地址空间:个存储地址空间:片内、片外统一的片内、片外统一的64KB程序存储器地址空间;程序存储器地址空间;片内片内256〔或〔或384〕字节数据存储器地址空间;〕字节数据存储器地址空间;片外片外64KB数据存储器地址空间;数据存储器地址空间;存储器空间划分存储器空间划分假设单片机的假设单片机的 端接端接“1“1〞,那么〞,那么805l805l片内程序存储器占用片内程序存储器占用0000H-0FFFH0000H-0FFFH的最低的最低4K4K字节,故当寻址范围在字节,故当寻址范围在1000H-FFFFH1000H-FFFFH时,那时,那么从片外程序存储器取指令;么从片外程序存储器取指令;假设单片机的假设单片机的 端接〞端接〞0 0〞〞, ,那么那么MCS-MCS-5151系列单片机均在片外程序存储器中取指系列单片机均在片外程序存储器中取指令。
令PCPC值指向程序指令操作码单元,那么程值指向程序指令操作码单元,那么程序执行该指令操作;序执行该指令操作;PCPC值指向常数、表值指向常数、表格单元,那么实现取数、查表操作因格单元,那么实现取数、查表操作因此,程序存储器的操作为程序运行与查此,程序存储器的操作为程序运行与查表操作两类表操作两类80518051片内有片内有4k4k字节的字节的ROM/EPROMROM/EPROM,片外用,片外用1616位地址线扩充位地址线扩充64K64K字节的字节的ROMROM,两者是,两者是统统一一编址的80C5180C52工作存放器:工作存放器:工作存放器:工作存放器:00H~1FH00H~1FH位寻址区:位寻址区:位寻址区:位寻址区:20H~2FH20H~2FH数据缓冲器数据缓冲器数据缓冲器数据缓冲器:30H~7FH:30H~7FHØØ内部数据存储器内部数据存储器内部数据存储器内部数据存储器( (0000H H~~~~FFFFH)H)ØØ外部数据存储器外部数据存储器外部数据存储器外部数据存储器( (00000000H H~~~~FFFFFFFFH)H)特殊功能存放器特殊功能存放器特殊功能存放器特殊功能存放器(SFR)(SFR)::::80H~FFH80H~FFH〔〔1 1〕程序存储器〕程序存储器80C5180C51的程序存储器主要用于存放:的程序存储器主要用于存放:应用程序应用程序、、表格表格等固定常数等固定常数l80C5180C51的程序存储器分为片内和片外,访问通过引脚的程序存储器分为片内和片外,访问通过引脚 电平决定;电平决定;l程序存储器的某些单元被保存用于特定程序入口地址;程序存储器的某些单元被保存用于特定程序入口地址;EAl片内程序存储器类型有:掩膜片内程序存储器类型有:掩膜ROMROM、、OPT ROMOPT ROM和和MTB ROM(EPROMMTB ROM(EPROM、、E2PROME2PROM〕〕复位或非屏蔽中断复位或非屏蔽中断0000H外部中断外部中断00003H计时器计时器T0溢出溢出000BH外部中断外部中断10013H计时器计时器T1溢出溢出001BH串行口中断串行口中断0023H计时器计时器T2/T2EX下降沿下降沿002BH〔〔2 2〕数据存储器〕数据存储器①① 片内数据存储器片内数据存储器工作存放器:工作存放器:内部内部RAM的最低的最低32个字节个字节(00H ~ FFH),共分共分4组组,每组每组8个〔个〔R0 ~ R7〕〕特殊功能存放器特殊功能存放器(SFR)::P0~P3口存放器、定时口存放器、定时/计数器存放器串口计数器存放器串口数据缓冲器、数据缓冲器、I/O端口锁存器以及各种控制端口锁存器以及各种控制存放器和状态存放器。
存放器和状态存放器地址:地址:80H~F0H字节寻址区〔数据缓冲器〕:字节寻址区〔数据缓冲器〕:位寻址区:位寻址区:内部内部RAM的的20H~2FH,这这16个单元的个单元的位位地址地址范围是范围是00H~ 7FHPSW.4 (RS1)PSW.3(RS0)当前使用的工作寄存器组当前使用的工作寄存器组000组(组(00H~07H))011组(组(08H~0FH)102组(组(10H~17H))113组(组(18H~1FH)内部内部RAM的最低的最低32个字节个字节(00H ~ FFH),共分共分4组组,每组每组8个〔个〔R0 ~ R7〕〕,工作工作存放器通过设置存放器通过设置PSW的相应位进行选择,如下表所示的相应位进行选择,如下表所示D7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0C CP PF1F1OVOVRS0RS0RS1RS1F0F0ACAC存放器选择存放器选择控制位控制位PSW字节字节地址地址位地址位地址765432102FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H字节地址与位地址之间的关系字节地址与位地址之间的关系低位低位地址地址高位地址高位地址89ABCDEF0P0P1P2P3PSWACCB1SP2DPL3DPH4567PCON8TCONSCONIEIPT2CON9TMODSBUFATL0RCAP2LBTL1RCAR2HCTH0TL2DTH1TH2EF特殊功能存放器特殊功能存放器(SFR)的空间分布的空间分布特殊功能存放器特殊功能存放器(SFR)的名称和地址的名称和地址§2.5 80C51§2.5 80C51单片机的布尔〔位〕处理器单片机的布尔〔位〕处理器与字节处理器对应,与字节处理器对应,80C5180C51还设置了一个结构完整、功能极强的布尔还设置了一个结构完整、功能极强的布尔〔位〕处理器,具有以下设置:〔位〕处理器,具有以下设置:l位处理器中的累加器:位处理器中的累加器:CY CY l根据根据CYCY的状态,程序转移:的状态,程序转移:JC relJC rel、、JNC rel.JNC rel.l位寻址的位寻址的RAMRAM::lRAMRAM中的中的0 0~~127127位〔包含在位〔包含在20H~2FH20H~2FH〕〕l位寻址的存放器:位寻址的存放器:l特殊功能存放器中的位寻址位特殊功能存放器中的位寻址位 ,例如,例如PSWPSWl位寻址的并行位寻址的并行I/OI/O口:口:l并行并行I/OI/O口中的可以位寻址的位,口中的可以位寻址的位,P1.0P1.0l位操作指令系统:位操作指令系统:l置位、清零、取反、位逻辑运算等等置位、清零、取反、位逻辑运算等等§2.6 80C51单片机的工作方式1. 复位方式〔〔1 1〕复位操作〕复位操作————单片机的初始化操作,摆脱死锁状态单片机的初始化操作,摆脱死锁状态Ø 引脚引脚RSTRST加上大于加上大于2 2个机器周期〔即个机器周期〔即2424个时钟振荡周期〕的个时钟振荡周期〕的高电平就可使单片机复位。
复位时,高电平就可使单片机复位复位时,PCPC初始化为初始化为0000H0000H,使,使单片机从单片机从0000H0000H单元开始执行程序单元开始执行程序Ø 除除PCPC之外,复位操作还对其它一些存放器有影响,见表之外,复位操作还对其它一些存放器有影响,见表 SP=07H SP=07H ,,P0-P3P0-P3的引脚均为高电平的引脚均为高电平Ø 在复位有效期间,在复位有效期间,ALEALE脚和脚和PSEN*PSEN*脚均为高电平,内部脚均为高电平,内部RAMRAM的状态不受复位的影响的状态不受复位的影响00HTCON0000HPC 00HTMOD0××××××0000BPCON0××000000BIE不定不定SBUF ××××000000BIP00HSCON0FFHP0~P300HTH10000HDPTR00HTL107HSP00HTH000HPSW00HTL000HACC复位状态复位状态寄存器寄存器复位状态复位状态寄存器寄存器〔〔2 2〕复位信号及其产生〕复位信号及其产生整个复位整个复位整个复位整个复位电电路分片内、外两局部外部路分片内、外两局部外部路分片内、外两局部外部路分片内、外两局部。
外部电电路路路路产产生复位信号〔生复位信号〔生复位信号〔生复位信号〔RST)RST)送施密特触送施密特触送施密特触送施密特触发发器,再由片内复位器,再由片内复位器,再由片内复位器,再由片内复位电电路在路在路在路在S5P2S5P2时时刻刻刻刻对对触触触触发发器的器的器的器的输输出出出出采采采采样样,再得到内部复位操作需要的信号再得到内部复位操作需要的信号再得到内部复位操作需要的信号再得到内部复位操作需要的信号上电自动复位上电自动复位电平方式电平方式脉冲方式脉冲方式2. 程序执行方式3. 低功耗工作方式〔通过电源控制存放器PCON设置〕单片机复位后PC=0000H,因此程序总是从地址0000H开始的,但一般程序不是真正从0000H开始,因此得在0000H开始的单元中存放一条无条件转移指令,以便跳转到实际程序的入口〔〔1 1〕待机方式〕待机方式〔〔2 2〕掉电方式〕掉电方式待机方式的进入:PCON的IDL置1,CPU时钟中断,与CPU有关存放器冻结待机方式的退出:引入外部中断,引入外部中断,PCON的的IDL置置0,退出待机,,退出待机,进入程序入程序执行方式行方式掉电方式的进入:PCON的的PD置置1,,单片机停止一切工作,但片机停止一切工作,但RAM中保存原有数据中保存原有数据掉电方式的退出:Vcc恢复正常后,硬件复位信号持恢复正常后,硬件复位信号持续10ms,退出掉退出掉电方式方式思考与练习?1.1.80C5180C51系列单片机在片内集成了哪些主要逻辑功能部件?各个逻辑部件的系列单片机在片内集成了哪些主要逻辑功能部件?各个逻辑部件的主要功能是什么?主要功能是什么?2.2.80C5180C51存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内?访问片内RAMRAM和片外和片外RAMRAM的指令格式有何区别?的指令格式有何区别?3.3.程序计数器〔程序计数器〔PC)PC)作为不可寻址存放器有哪些特点?数据指针作为不可寻址存放器有哪些特点?数据指针DPTRDPTR有哪些有哪些特点?与特点?与PCPC有何异同?有何异同?4.4.片内片内RAMRAM低低128128单元划分为哪三个局部?各局部主要功能是什么?单元划分为哪三个局部?各局部主要功能是什么?5.5.80C5180C51单片机的时钟周期、机器周期、指令周期是如何设置的?当主频为单片机的时钟周期、机器周期、指令周期是如何设置的?当主频为12MHz12MHz时,一个机器周期等于多少微秒?执行一条最长的指令需要多少微时,一个机器周期等于多少微秒?执行一条最长的指令需要多少微秒?秒?6.6.使单片机复位有几种方法?复位后机器的初始状态如何,即各存放器及使单片机复位有几种方法?复位后机器的初始状态如何,即各存放器及RAMRAM中的状态如何?中的状态如何?第3章 80C51单片机的指令系统§3.1§3.1 概述概述1. 指令分类〔指令分类〔111条指令〕条指令〕按指令所占的字节来分:按指令所占的字节来分: (1) (1) 单字节指令单字节指令4949条;条; (2) (2) 双字节指令双字节指令4545条;条; (3) (3) 三字节指令三字节指令1717条。
条按指令的执行时间来分:按指令的执行时间来分: (1)1 (1)1个机器周期〔个机器周期〔1212个时钟振荡周期〕指令个时钟振荡周期〕指令6464条条 (2)2 (2)2个机器周期〔个机器周期〔2424个时钟振荡周期〕指令个时钟振荡周期〕指令4545条条 (3) (3)只有乘、除只有乘、除2 2条指令的执行时间为条指令的执行时间为4 4个机器周期个机器周期2. 指令格式指令格式两局部组成,即操作码和操作数两局部组成,即操作码和操作数操作码用来规定指令进行什么操作操作码用来规定指令进行什么操作操作数那么是指令操作的对象操作数那么是指令操作的对象有单字节指令、双字节指令、三字节不同长度的指令,格式不同:有单字节指令、双字节指令、三字节不同长度的指令,格式不同:〔〔1〕单字节指令:指令只有一个字节,操作码和操作数同在一个字节中〕单字节指令:指令只有一个字节,操作码和操作数同在一个字节中例例:ADD A, Rn 、、NOP、、RET 〔〔2〕双字节指令:一个字节为操作码,另一个字节是操作数〕双字节指令:一个字节为操作码,另一个字节是操作数例例:MOV A, #5EH〔〔3〕三字节指令:操作码占一个字节,操作数占二个字节。
其中操作数〕三字节指令:操作码占一个字节,操作数占二个字节其中操作数 既可能是数据,也可能是地址既可能是数据,也可能是地址例例:MOV 5EH, #5EH§3.2§3.2 寻址方式和地址空间寻址方式和地址空间寻址方式寻址方式就是在指令中说明操作数所在地址的方法就是在指令中说明操作数所在地址的方法共共7种种寻址方式寻址方式1.立即寻址操作数在指令中直接给出,需在操作数前面加前缀操作数在指令中直接给出,需在操作数前面加前缀 “# “#〞〞 例如:例如: MOV AMOV A,,#3AH#3AH;;2.直接寻址操作数直接以单元地址的形式给出:操作数直接以单元地址的形式给出: MOV AMOV A,,3AH3AH;; 寻址范围:寻址范围:(1) (1) 内部内部RAMRAM的的128128个单元个单元(00H~7FH)(00H~7FH)(2) (2) 特殊功能存放器除了以单元地址的形式外特殊功能存放器除了以单元地址的形式外, ,还可用存放器符号的还可用存放器符号的形式给出形式给出例如:例如: MOV A MOV A,,80H 80H 与与 MOV A MOV A,,P0P0是等价的。
是等价的操作数在存放器中 MOV A,Rn ;〔Rn〕→A,n=0~7 表示把存放器Rn的内容传送给累加器A,寻址范围包括:〔1〕4组通用工作存放区共32个工作存放器〔2〕局部特殊功能存放器,例如A、B 以及数据指针存放器DPTR等3.存放器(直接)寻址INC R0INC R04.存放器间接寻址存放器中存放的是操作数的地址,在存放器的名称前面加前存放器中存放的是操作数的地址,在存放器的名称前面加前缀标志缀标志“@“@〞〞 , ,访问内部访问内部RAMRAM或外部数据存储器的低或外部数据存储器的低256256个字节个字节时,只能采用时,只能采用R0R0或或R1R1作为间址存放器例如:作为间址存放器例如: MOV A MOV A,,@Ri @Ri ;;i=0i=0或或1 1 其中其中RiRi中的内容为中的内容为40H40H,把内部,把内部RAM 40HRAM 40H单元内容送单元内容送A AANL A,@R11寻址范围:寻址范围:〔〔1 1〕访问内部〕访问内部RAMRAM低低128128个单元,其通用形式为个单元,其通用形式为@Ri@Ri〔〔2 2〕对片外数据存储器的〕对片外数据存储器的64K64K字节的间接寻址,字节的间接寻址,例如:例如:MOVX AMOVX A,,@DPTR@DPTR〔〔3 3〕片外数据存储器的低〕片外数据存储器的低256256字节字节, ,例如:例如:MOVX AMOVX A,,@Ri@Ri〔〔4 4〕堆栈区堆栈操作指令〕堆栈区堆栈操作指令PUSHPUSH〔压栈〕和〔压栈〕和POPPOP〔出栈〕使用堆栈〔出栈〕使用堆栈指针指针(SP)(SP)作间址存放器。
出栈序列作间址存放器出栈序列入入入入栈栈序列序列序列序列为为1234512345,不可能的出,不可能的出,不可能的出,不可能的出栈栈序列?序列?序列?序列?A)A)54321 54321 B) 32154 B) 32154 C)C)32145 32145 D)D)31452 31452 E) 32451E) 32451 5.相对寻址在在相相对对寻寻址址的的转转移移指指令令中中,,给给出出了了地地址址偏偏移移量量,,以以“rel“rel〞〞表表示示,,即即把把PCPC的的当当前前值加上偏移量就构成了程序转移的目的地址:值加上偏移量就构成了程序转移的目的地址: 目的地址目的地址= =转移指令所在的地址转移指令所在的地址 + + 转移指令的字节数转移指令的字节数 + rel + rel 偏移量偏移量relrel是一带符号的是一带符号的8 8位二进制数补码数位二进制数补码数 JC 80H1002H6.变址寻址(1)即基址存放器即基址存放器+ +变址存放器间址寻址方式变址存放器间址寻址方式寻址方式以寻址方式以DPTRDPTR或或PCPC作基址存放器,以累加器作基址存放器,以累加器A A作为变址存放作为变址存放器。
器 例如:例如:指令指令 MOVC AMOVC A,,@A+DPTR@A+DPTR 其其中中A A的的原原有有内内容容为为05H05H,,DPTRDPTR的的内内容容为为0400H0400H,,该该指指令令执执行行的的结结果是把程序存储器果是把程序存储器0405H0405H单元的内容传送给单元的内容传送给A A说明:说明: 〔〔1 1〕〕本本寻寻址址方方式式是是专专门门针针对对程程序序存存储储器器的的寻寻址址方方式式,,寻寻址址范围可到达范围可到达64KB64KB〔〔2 2〕本寻址方式的指令只有〕本寻址方式的指令只有3 3条:条:MOVC AMOVC A,,@A+DPTR@A+DPTRMOVC AMOVC A,,@A+PC@A+PCJMP @A+DPTRJMP @A+DPTR6.变址寻址(2)MOVC A, @A+DPTR(A)=54H (DPTR)=3F21H (3F75H)=7FH7.位寻址(1)80C51有位处理功能,可以对数据位进行操作,例如: MOV C,40H 是把位40H的值送到进位位C寻址范围包括:〔1〕内部RAM中的位寻址区。
位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位它们是等价的〔2〕特殊功能存放器中的可寻址位 可寻址位在指令中有如下4种的表示方法:a. 直接使用位地址,例如:PSW.5的位地址为0D5H;b.位名称的表示方法,例如:PSW.5是F0标志位,可使用F0表示该位c.单元地址加位数的表示方法,例如 :(0D0H).5d.特殊功能存放器符号加位数的表示方法,例如:PSW.5 7.位寻址(2)Rn Rn 当前存放器区的当前存放器区的8 8个工作存放器个工作存放器R0R0~~R7(n=0R7(n=0~~7)7)Ri Ri 当前选中的存放器区中可作间接寻址存放器的当前选中的存放器区中可作间接寻址存放器的2 2 个存放器个存放器R0R0、、R1(i=0,1)R1(i=0,1)Direct Direct 直接地址,即直接地址,即8 8位的内部数据存储器单元或特殊功能存放器的地址位的内部数据存储器单元或特殊功能存放器的地址data #data 包含在指令中的包含在指令中的8 8位立即数位立即数data16 #data16 包含在指令中的包含在指令中的1616位立即数。
位立即数rel rel 相对转移指令中的偏移量,为相对转移指令中的偏移量,为8 8位的带符号补位的带符号补 码数码数DPTR DPTR 数据指针,可用作数据指针,可用作1616位的数据地址存放器位的数据地址存放器bit bit 内部内部RAMRAM或特殊功能存放器中的直接寻址位或特殊功能存放器中的直接寻址位C C〔或〔或CyCy〕〕 进位标志位或位处理机中的累加器进位标志位或位处理机中的累加器addr11 11addr11 11位目的地址位目的地址addr16 16addr16 16位目的地址位目的地址@ @ 间接寻址存放器前缀,如间接寻址存放器前缀,如@Ri@Ri,,@A+DPTR@A+DPTR(X) X(X) X中的内容中的内容X)) ((X)) 由由X X寻址的单元中的内容寻址的单元中的内容→ → 箭头右边的内容被箭头左边的内容所取代箭头右边的内容被箭头左边的内容所取代指令中符号的意义指令中符号的意义:§3.3§3.3 指令系统指令系统1.数据传送类指令(28条)使用最频繁的一类指令使用最频繁的一类指令, ,通用格式:通用格式: MOV
目的目的操作数操作数源操作数源操作数ARndirect@Ri#dataA√√√√Rn√√√direct√√√√√@Ri√√√〔〔1 1〕以累加器为目的操作数的指令〕以累加器为目的操作数的指令 MOV A,Rn ; (Rn)→AMOV A,Rn ; (Rn)→A,,n=0n=0~~7 7 MOV A,@Ri ; ((Ri))→A,i=0,1MOV A,@Ri ; ((Ri))→A,i=0,1 MOV A,direct ;MOV A,direct ;〔〔directdirect〕〕→A→A MOV A,#data ; #data→AMOV A,#data ; #data→A 例如:例如: MOV A,R6 ;(R6)→AMOV A,R6 ;(R6)→A,存放器寻址,存放器寻址 MOV A,70H ;(70H)→AMOV A,70H ;(70H)→A,直接寻址,直接寻址 MOV A,@R0 ;((R0))→AMOV A,@R0 ;((R0))→A,间接寻址,间接寻址 MOV A,#78H ;78H→AMOV A,#78H ;78H→A,立即寻址,立即寻址〔〔2 2〕〕 以以RnRn为目的操作数的指令为目的操作数的指令 MOV Rn,A ; (A)→Rn,n=0MOV Rn,A ; (A)→Rn,n=0~~7 7MOV Rn,direct ;MOV Rn,direct ;〔〔directdirect〕〕→Rn,n=0→Rn,n=0~~7 7 MOV Rn,#data ; #data→Rn,n=0MOV Rn,#data ; #data→Rn,n=0~~7 7功能:是把源操作数的内容送入当前一组工作存放器区的功能:是把源操作数的内容送入当前一组工作存放器区的R0R0~~R7R7中的某一个存放器。
中的某一个存放器MOV A, RnRnARi@RiMOV A,@ RiA画出指令画出指令画出指令画出指令“MOV A,#data; “MOV A,#data; #data→A#data→A〞〞〞〞执执行行行行时时的存的存的存的存储储器器器器中数据中数据中数据中数据传递传递状况状况状况状况图图〔〔3 3〕以直接地址〕以直接地址directdirect为目的操作数的指令为目的操作数的指令 MOV direct,A MOV direct,A ; (A)→direct; (A)→direct MOVMOVdirect,Rndirect,Rn;(Rn)→direct, n=0;(Rn)→direct, n=0~~7 7MOV direct1,direct2 ;(direct2)→direct1MOV direct1,direct2 ;(direct2)→direct1 MOV direct,@RiMOV direct,@Ri; ((Ri))→direct; ((Ri))→directMOVMOVdirect,#datadirect,#data; #data→direct; #data→direct功能:功能:把源操作数送入直接地址指出的存储单元。
把源操作数送入直接地址指出的存储单元directdirect指的是内部指的是内部RAMRAM或或SFRSFR的地址〔〔4〕以存放器间接地址为目的操作数的指令〕以存放器间接地址为目的操作数的指令MOV @Ri,A ;(A)→((Ri)),i=0,1 MOV @Ri,direct ; (direct〕〕→((Ri)) MOV @Ri,#data ; #data→((Ri))〔〔5〕〕16位数传送指令位数传送指令 (目的地址传送指令目的地址传送指令) MOV DPTR,#data16 ; #data16→DPTR唯一的唯一的16位数据的传送指令位数据的传送指令 ,立即数的高立即数的高8位送入位送入DPH,立,立即数的低即数的低8位送入位送入DPL〔一般传送片外数据存储器地址〕〔一般传送片外数据存储器地址〕〔〔6〕堆栈操作指令〕堆栈操作指令80C51内部内部RAM中可以设定一个后进先出〔中可以设定一个后进先出〔LIFO-Last In First Out〕的区域称作堆栈〕的区域称作堆栈.堆栈指针堆栈指针SP指出堆栈的栈顶位置。
指出堆栈的栈顶位置①①进栈指令进栈指令 PUSH direct先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中例如例如当〔当〔SP〕〕=60H,〔〔A〕〕=30H,〔〔B〕〕=70H时,时,执行:执行: PUSH ACC; (SP)+1=61H→SP,(A)→61H PUSH B; (SP)+1=62H→SP,(B)→62H结果:结果: (61H)=30H,(62H)=70H,(SP)=62H②②出栈指令出栈指令③③ POP direct④④SP指示的栈顶〔内部指示的栈顶〔内部RAM单元〕内容送入单元〕内容送入direct字节字节单单⑤⑤元中,栈指针元中,栈指针SP减减1.⑥⑥例如例如: 当当 (SP)=62H,,(62H)=70H,,(61H)=30H,⑦⑦执行:执行:⑧⑧POP DPH ;((SP))→DPH,(SP)-1→SP ⑨⑨POP DPL ;((SP))→DPL,(SP)-1→SP⑩⑩结果:结果:(DPTR)=7030H,,(SP)=60H〔〔7〕累加器〕累加器A与外部数据存储器传送指令与外部数据存储器传送指令MOVX A,@DPTR MOVX A,@DPTR ;((DPTR))→A,;((DPTR))→A,读读外部外部RAM/IORAM/IOMOVX A,@Ri MOVX A,@Ri ;((Ri))→A,;((Ri))→A,读读外部外部RAM/IORAM/IOMOVX MOVX @DPTR,A@DPTR,A;(A)→((DPTR)),;(A)→((DPTR)),写写外部外部RAM/IORAM/IOMOVX MOVX @Ri,A @Ri,A ;(A)→((Ri)),;(A)→((Ri)),写写外部外部RAM/IORAM/IO功能:功能:读读外部外部RAMRAM存存储储器或器或I/OI/O中的一中的一个个字字节节,或把,或把A A中一中一个个字字节节的的数数据据写写到外部到外部RAMRAM存存储储器或器或I/OI/O中。
中注意:注意:RD*RD*或或WR*WR*信信号号有效采用采用DPTRDPTR间间接接寻寻址,高址,高8 8位地址〔位地址〔DPHDPH〕由〕由P2P2口口输输出,低出,低8 8位位地址〔地址〔DPLDPL〕由〕由P0P0口口输输出采用采用RiRi〔〔i=0,1i=0,1〕〕间间接接寻寻址,可址,可寻寻址片外址片外256256个个单单元的元的数数据存据存储储器RiRi内内容由容由P0P0口口输输出8 8位地址和位地址和数数据均由据均由P0P0口口输输出,可出,可选选用其用其它它任何任何输输出口出口线线来来输输出高于出高于8 8位的地址〔一般位的地址〔一般选选用用P2P2口口输输出高出高8 8位的地址〕位的地址〕MOVMOV后后 “X “X〞〞表示表示单单片机片机访问访问的是片外的是片外RAMRAM存存储储器或器或I/OI/O〔〔8〕查表指令〕查表指令 共两条,用于读程序存储器中的数据表格的指令,均采用基共两条,用于读程序存储器中的数据表格的指令,均采用基址存放器加变址存放器间接寻址方式址存放器加变址存放器间接寻址方式MOVC A,@A+PC 以以PC作基址存放器,作基址存放器,A的内容作为无符号整数和的内容作为无符号整数和PC中的内容中的内容〔下一条指令的起始地址〕相加后得到一个〔下一条指令的起始地址〕相加后得到一个16位的地址,该位的地址,该地址指出的程序存储单元的内容送到累加器地址指出的程序存储单元的内容送到累加器A。
注意:注意:PSEN*信号有效信号有效例如例如: (A)=30H,执行地址执行地址1000H处的指令处的指令 1000H: MOVC A,@A+PC本指令占用一个字节,执行结果将程序存储器中本指令占用一个字节,执行结果将程序存储器中1031H的内的内容送入容送入A优点:不改变特殊功能存放器及优点:不改变特殊功能存放器及PC的状态,根据的状态,根据A的内容就的内容就可以取出表格中的常数可以取出表格中的常数缺点:表格只能存放在该条查表指令后面的缺点:表格只能存放在该条查表指令后面的256个单元之内,个单元之内,表格的大小受到限制,且表格只能被一段程序所利用表格的大小受到限制,且表格只能被一段程序所利用例如 (DPTR)=8100H (A)=40H 执行指令 MOVC A,@A+DPTR本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用两条指令是在MOV的后面加C,“C〞是CODE的第一个字母,即代码的意思。
〔〔9〕字节交换指令〕字节交换指令 XCH A,Rn XCH A,direct XCH A,@Ri例如:例如:(A)=80H,,(R7)=08H,,(40H)=F0H (R0)=30H,,(30H)=OFH执执行以下指令:行以下指令: XCH A,R7 ;(A)与与(R7)互换互换 XCH A,40H ;(A)与与(40H)互换互换 XCH A,@R0 ;(A)与与((R0))互换互换 结果:结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H〔〔10〕半字节交换指令〕半字节交换指令 XCHD A,@Ri累加器的低累加器的低4位与内部位与内部RAM低低4位交换例如:例如:(R0)=60H,(60H)=3EH,(A)=59H执行完执行完 XCHD A,@RO 指令指令,那么那么(A)=5EH,(60H)=39H2.算术操作类指令单字节的加、减、乘、除法指令,都是针对8位二进制数执行的结果对Cy、Ac、OV 三种标志位有影响。
但增1和减1指令不影响上述标志〔〔1〕加法指令〕加法指令 共有共有4条加法运算指令:条加法运算指令:ADD A,Rn;(A)+(Rn)→A,,n=0~~7 ADD A,direct;(A)+(direct)→A ADD A,@Ri;(A)+((Ri))→A,i=0,1ADD A,#data ;(A)+#data→A使用加法指令时,要注意累加器使用加法指令时,要注意累加器A中的运算结果对各个标志中的运算结果对各个标志位的影响:位的影响:如果位如果位7有进位,那么置有进位,那么置“1〞进位标志〞进位标志Cy,否那么清,否那么清“0〞〞Cy如果位如果位3有进位,置有进位,置“1〞辅助进位标志〞辅助进位标志Ac,否那么清,否那么清“0〞〞Ac〔〔Ac为为PSW存放器中的一位〕存放器中的一位〕如果位如果位6有进位,而位有进位,而位7没有进位,或者位没有进位,或者位7有进位,而位有进位,而位6没没有,那么溢出标志位有,那么溢出标志位OV置置“1〞,否那么清〞,否那么清“0〞〞OV溢出标志位溢出标志位OV的状态,只有在带符号数加法运算时才有意的状态,只有在带符号数加法运算时才有意义。
当两个带符号数相加时,义当两个带符号数相加时,OV=1,表示加法运算超出,表示加法运算超出了累加器了累加器A所能表示的带符号数的有效范围所能表示的带符号数的有效范围〔〔2〕带进位加法指令〕带进位加法指令标志位标志位CyCy参加运算,因此是三个数相加共参加运算,因此是三个数相加共4 4条:条:ADDCADDCA,RnA,Rn;(A)+(Rn)+C→A;(A)+(Rn)+C→A,,n=0n=0~~7 7 ADDCADDCA,directA,direct;(A)+(direct)+C→A ;(A)+(direct)+C→A ADDCADDCA,@Ri A,@Ri ;(A)+(Ri)+C→A;(A)+(Ri)+C→A,,i=0,1i=0,1ADDCADDCA,#data A,#data ;(A)+#data+C→A;(A)+#data+C→A 例:〔例:〔A A〕〕=85H,=85H,〔〔20H20H〕〕=FFH,Cy=1=FFH,Cy=1,执行指令:,执行指令: ADDC A,20H ADDC A,20H结果结果: :〔〔A A〕〕=85H=85H,,Cy=1Cy=1,,Ac=1Ac=1,,OV=0OV=0,,P=1 P=1 〔〔A A中中1 1 的位数为奇数〕的位数为奇数〕〔〔3〕增〕增1指令指令 5 5条增条增1 1指令:指令: INC AINC AINC Rn INC Rn ;n=0;n=0~~7 7INC direct INC direct INC @Ri INC @Ri ;i=0,1;i=0,1 INC DPTRINC DPTR不影响不影响PSWPSW中的任何标志。
中的任何标志第第5 5条指令条指令INC DPTRINC DPTR,是,是1616位数增位数增1 1指令指令首先对低指令指令首先对低8 8位指针位指针DPLDPL的内容执行加的内容执行加1 1的操作,当产生溢出时,就对的操作,当产生溢出时,就对DPHDPH的内容进行的内容进行加加1 1操作,并不影响标志操作,并不影响标志CyCy的状态〔〔4〕十进制调整指令〕十进制调整指令用于对用于对BCDBCD码十进制数加法运算结果的内容修正码十进制数加法运算结果的内容修正指令格式:指令格式: DA A DA A两个两个BCDBCD码按二进制相加之后,必须经本指令的调整才能得到正确的码按二进制相加之后,必须经本指令的调整才能得到正确的压缩压缩BCDBCD码的和数码的和数二进制数的加法运算原那么并不能适用于十进制数的加法运算,有时二进制数的加法运算原那么并不能适用于十进制数的加法运算,有时会产生错误结果例如:会产生错误结果例如:〔〔a a〕〕3+6=9 0011+0101=1001 3+6=9 0011+0101=1001 运算结果正确运算结果正确〔〔b b〕〕7+8=15 0111+1000=1111 7+8=15 0111+1000=1111 运算结果不正确运算结果不正确〔〔c c〕〕9+8=17 1001+1000=00001 C=1 9+8=17 1001+1000=00001 C=1 结果不正确结果不正确二进制数加法指令不能完全适用于二进制数加法指令不能完全适用于BCDBCD码十进制数的加法运算,对结码十进制数的加法运算,对结果作有条件的修正果作有条件的修正 —— ——十进制调整十进制调整 出错原因和调整方法:出错原因和调整方法: BCDBCD码只用了其中的码只用了其中的1010个,个,6 6个没用到的编码。
个没用到的编码〔〔10101010,,10111011,,11001100,,11011101,,11101110,,11111111〕为无效码〕为无效码 凡结果进入或者跳过无效码编码区时,其结果就是错误的凡结果进入或者跳过无效码编码区时,其结果就是错误的调整的方法是把结果加调整的方法是把结果加6 6调整,即所谓十进制调整修正调整,即所谓十进制调整修正修正方法应是:修正方法应是:〔〔a a〕累加器低〕累加器低4 4位大于位大于9 9或辅助进位位或辅助进位位Ac=1Ac=1,那么进行低,那么进行低4 4位加位加6 6修正〔〔b b〕累加器高〕累加器高4 4位大于位大于9 9或进位位或进位位Cy=1Cy=1,那么进行高,那么进行高4 4位加位加6 6修正〔〔c c〕累加器高〕累加器高4 4位为位为9 9,低,低4 4位大于位大于9 9,那么高,那么高4 4位和低位和低4 4位分别加位分别加6 6修修正〔〔5〕带借位的减法指令〕带借位的减法指令4 4条指令:条指令:SUBB A,Rn SUBB A,Rn ; ;〔〔A A〕〕- -〔〔RnRn〕〕-Cy→A-Cy→A,,n=0n=0~~7 7SUBB A,direct SUBB A,direct ; ;〔〔A A〕〕- -〔〔directdirect〕〕-Cy→A-Cy→ASUBB A,@RiSUBB A,@Ri; ;〔〔A A〕〕- -〔〔(Ri)(Ri)〕〕- Cy→A, i=0,1- Cy→A, i=0,1 SUBB A,#data SUBB A,#data ; ;〔〔A A〕〕-#data - Cy→A-#data - Cy→A从累加器从累加器A A中的内容减去指定的变量和进位标志中的内容减去指定的变量和进位标志CyCy的值,结果存在的值,结果存在累加器累加器A A中。
中如果位如果位7 7需借位那么置需借位那么置“1“1〞〞 Cy Cy,否那么清,否那么清“0“0〞〞CyCy;; 如果位如果位3 3需借位那么置需借位那么置“1“1〞〞AcAc,否那么清,否那么清“0“0〞〞AcAc;;如果位如果位6 6需借位而位需借位而位7 7不需要借位,或者位不需要借位,或者位7 7需借位,位需借位,位6 6不需借位,不需借位,那么置那么置“1“1〞溢出标志位〞溢出标志位OVOV,否那么清,否那么清例例 〔〔A A〕〕=C9H ,=C9H ,〔〔R2R2〕〕=54H,Cy=1=54H,Cy=1,执行指令,执行指令: : SUBB A,R2SUBB A,R2结果:〔结果:〔A A〕〕=74H,Cy=0,Ac=0,OV=1=74H,Cy=0,Ac=0,OV=1〔位〔位6 6向位向位7 7借位〕借位〕〔〔6〕减〕减1指令指令 4条指令:DEC A;(A)-1→ADEC Rn ;(Rn)-1→Rn,n=0~7DEC direct;(direct)-1→directDEC @Ri ;((Ri))-1→〔Ri〕,i=0,1减1指令不影响标志位。
〔〔7〕乘法指令〕乘法指令MUL AB ;;A×B→BA如果积大于如果积大于255,那么置,那么置“1〞溢出标志位〞溢出标志位OV 〔〔8〕除法指令〕除法指令 DIV AB DIV AB ;;A/B→AA/B→A〔商〕,余〔商〕,余数数→B→B如果如果B B的的内内容容为为“0“0〞〞〔即除〔即除数数为为“0“0〞〞〕,那〕,那么么存放存放结结果的果的A A、、B B中的中的内内容不定,容不定,并并置置“1“1〞〞溢出溢出标标志位志位OVOV3.逻辑运算指令〔〔1〕〕 简单逻辑操作指令简单逻辑操作指令①①①①CLR ACLR ACLR ACLR A②②②②功能是累加器功能是累加器功能是累加器功能是累加器A A A A清清清清“0“0“0“0〞〞〞〞不影响响响响CyCyCyCy、、、、AcAcAcAc、、、、OVOVOVOV等等等等标标标标志③③③③CPL ACPL ACPL ACPL A④④④④功能是功能是功能是功能是将将将将累加器累加器累加器累加器A A A A的的的的内内内内容按位容按位容按位容按位逻辑逻辑逻辑逻辑取反,不影取反,不影取反,不影取反,不影响响响响标标标标志。
志〔〔2〕〕 循环左移指令循环左移指令RL ARL ARL ARL A功能是累加器功能是累加器A A的的8 8位向左循环移位,位位向左循环移位,位7 7循环移入位循环移入位0 0,不影响标志,不影响标志〔〔3〕〕 带进位循环左移指令带进位循环左移指令RLC ARLC ARLC ARLC A功能是将累加器功能是将累加器A A的内容和进位标志位的内容和进位标志位CyCy一起向左环移一位,一起向左环移一位,Acc.7Acc.7移入进位位移入进位位CyCy,,CyCy移入移入Acc.0Acc.0,不影响其它标志,不影响其它标志〔〔4〕循环右移指令〕循环右移指令RR ARR ARR ARR A功能是累加器A的内容向右环移一位,Acc.0移入Acc.7,不影响其它标志〔〔5〕带进位循环右移指令〕带进位循环右移指令 RRC ARRC ARRC ARRC A这条指令的功能是累加器A的内容和进位标志Cy一起向右环移一位,Acc.0进入Cy,Cy移入Acc.7〔〔6〕累加器半字节交换指令〕累加器半字节交换指令SWAP ASWAP ASWAP ASWAP A将将将将累加器累加器累加器累加器A A A A的高半字的高半字的高半字的高半字节节节节〔〔〔〔Acc.7Acc.7Acc.7Acc.7~~~~Acc.4Acc.4Acc.4Acc.4〕和低半字〕和低半字〕和低半字〕和低半字节节节节〔〔〔〔Acc.3Acc.3Acc.3Acc.3~~~~Acc.0Acc.0Acc.0Acc.0〕互〕互〕互〕互换换换换。
例例例例 〔〔〔〔A A A A〕〕〕〕=0C5H=0C5H=0C5H=0C5H,,,,执执执执行指令:行指令:行指令:行指令: SWAP A SWAP A SWAP A SWAP A 结结结结果:〔果:〔果:〔果:〔A A A A〕〕〕〕=5CH=5CH=5CH=5CH〔〔7〕逻辑与指令〕逻辑与指令ANL A,Rn ANL A,Rn ; ; 〔〔A A〕〕∧∧〔〔RnRn〕〕→A→A,,n=0n=0~~7 7 ANL A,direct ANL A,direct ; ; 〔〔A A〕〕∧∧〔〔directdirect〕〕→A→AANL A,#data ANL A,#data ; ; 〔〔A A〕〕∧#data→A∧#data→AANL A,@Ri ANL A,@Ri ; ; 〔〔A A〕〕∧(∧(〔〔RiRi〕〕)→A)→A,,i=0i=0~~1 1ANL direct,A ANL direct,A ; ; 〔〔directdirect〕〕∧(A)→direct∧(A)→directANL direct,#dataANL direct,#data; ; 〔〔directdirect〕〕∧#data→direct∧#data→direct例例 〔〔A A〕〕=07H,=07H,〔〔R0R0〕〕=0FDH,=0FDH,执执行指令:行指令:ANL A,R0ANL A,R0 结结果:〔果:〔A A〕〕=05H=05H〔〔8〕逻辑或指令〕逻辑或指令ORL A,Rn ORL A,Rn ORL A,Rn ORL A,Rn ;;;;(A)∨(A)∨(A)∨(A)∨〔〔〔〔RnRnRnRn〕〕〕〕→A →A →A →A ,,,,n=0n=0n=0n=0~~~~7 7 7 7ORL A,directORL A,directORL A,directORL A,direct;;;;(A)∨(A)∨(A)∨(A)∨〔〔〔〔directdirectdirectdirect〕〕〕〕→A→A→A→AORL A,#data ORL A,#data ORL A,#data ORL A,#data ;;;;(A)∨ data→A(A)∨ data→A(A)∨ data→A(A)∨ data→AORL A,@Ri ORL A,@Ri ORL A,@Ri ORL A,@Ri ;;;;(A)∨((Ri))→A(A)∨((Ri))→A(A)∨((Ri))→A(A)∨((Ri))→A,,,,i=0,1i=0,1i=0,1i=0,1ORL direct,AORL direct,A;〔;〔directdirect〕〕∨(A)→direct∨(A)→directORL direct,#dataORL direct,#data;〔;〔directdirect〕〕∨#data→direct∨#data→direct 例例 〔〔P1P1〕〕=05H,=05H,〔〔A A〕〕=33H=33H,执行指令,执行指令 ORL P1,A ORL P1,A结果:〔结果:〔P1P1〕〕=37H =37H 〔〔9〕逻辑异或指令〕逻辑异或指令XRL A,Rn XRL A,Rn XRL A,Rn XRL A,Rn ;;;;(A) (A) (A) (A) ⊕⊕⊕⊕(Rn)→A(Rn)→A(Rn)→A(Rn)→AXRL A,direct XRL A,direct XRL A,direct XRL A,direct ;;;;(A) (A) (A) (A) ⊕⊕⊕⊕〔〔〔〔directdirectdirectdirect〕〕〕〕→A→A→A→AXRL A,@Ri XRL A,@Ri XRL A,@Ri XRL A,@Ri ;;;;(A)(A)(A)(A)⊕⊕⊕⊕( ( ( (〔〔〔〔RiRiRiRi〕〕〕〕)→A ,i=0,1)→A ,i=0,1)→A ,i=0,1)→A ,i=0,1XRL A,#data XRL A,#data XRL A,#data XRL A,#data ;;;;(A)(A)(A)(A)⊕⊕⊕⊕#data→A#data→A#data→A#data→AXRL direct,A XRL direct,A XRL direct,A XRL direct,A ;〔;〔;〔;〔directdirectdirectdirect〕〕〕〕⊕⊕⊕⊕〔〔〔〔A A A A〕〕〕〕→direct→direct→direct→directXRL direct,#data XRL direct,#data XRL direct,#data XRL direct,#data ;〔;〔;〔;〔directdirectdirectdirect〕〕〕〕⊕⊕⊕⊕ #data →direct #data →direct #data →direct #data →direct 例例例例 〔〔〔〔A A A A〕〕〕〕=90H,=90H,=90H,=90H,〔〔〔〔R3R3R3R3〕〕〕〕=73H =73H =73H =73H 执执执执行指令:行指令:行指令:行指令:XRL A,R3XRL A,R3XRL A,R3XRL A,R3结结结结果:〔果:〔果:〔果:〔A A A A〕〕〕〕=E3H =E3H =E3H =E3H 4.控制转移类指令(17条)〔〔1〕短转移指令〕短转移指令AJMP addrllAJMP addrllAJMP addrllAJMP addrll2K字节范围内的无条件跳转指令, 64K程序存储器空间分为32个区,每区2K字节,转移的目标地址必须与AJMP下一条指令的地址的高5位地址码A15~A11相同。
执行指令时,先PC加2,然后把addrll送入PC.10~PC.0,PC.15~PC.11保持不变,程序转移到目标地址本指令是为能与MCS-48的JMP指令兼容而设的〔〔2〕相对转移指令〕相对转移指令SJMP relSJMP relSJMP relSJMP rel实现的程序转移是双向的在编写程序时,直接写上要转向的目标地址标号就可以例如:例如: LOOPLOOPLOOPLOOP::::MOV AMOV AMOV AMOV A,,,,R6 R6 R6 R6 ┇ ┇ ┇ ┇ SJMP LOOPSJMP LOOPSJMP LOOPSJMP LOOP ┇ ┇ ┇ ┇程序在汇编时,由汇编程序自动计算和填入偏移量程序在汇编时,由汇编程序自动计算和填入偏移量〔〔3〕长跳转指令〕长跳转指令LJMP addr16LJMP addr16LJMP addr16LJMP addr16指令执行时把指令的第二和第三字节分别装入指令执行时把指令的第二和第三字节分别装入PC的高位和低位的高位和低位字节中,无条件地转向字节中,无条件地转向addr16指出的目标地址。
目标地址可以指出的目标地址目标地址可以在在64K程序存储器地址空间的任何位置程序存储器地址空间的任何位置〔〔4〕间接跳转指令〕间接跳转指令JMP @A+DPTRJMP @A+DPTRJMP @A+DPTRJMP @A+DPTR由由A A中中8 8位无符位无符号数与号数与DPTRDPTR的的1616位位数内数内容之和容之和来来确定以DPTRDPTR内内容作容作为为基址,基址,A A的的内内容作容作变变址给给A A赋赋予不同的予不同的值值,即可,即可实现实现程序的多分支程序的多分支转转移2)条件转移指令条件转移指令 规定的条件满足,那么进行转移,条件不满足那么顺序执行下一条规定的条件满足,那么进行转移,条件不满足那么顺序执行下一条指令当条件满足时,把当条件满足时,把PCPC装入下一条指令的第一个字节地址,再把带符装入下一条指令的第一个字节地址,再把带符号的相对偏移量号的相对偏移量relrel加到加到PCPC上,计算出目标地址上,计算出目标地址5) (5) 判零判零 JZ relJZ rel;如果累加器为;如果累加器为“0“0〞,那么转移〞,那么转移JNZ relJNZ rel;如果累加器非;如果累加器非“0“0〞,那么转移〞,那么转移CJNE A,direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE @Ri,#data,rel比较前面两个操作数的大小,如果它们的值不相等那么转移。
如果第一操作数〔无符号整数〕小于第二操作数〔无符号整数〕,那么置进位标志位Cy,否那么清“0〞Cy〔〔6〕比较不相等转移指令〕比较不相等转移指令〔〔7、、8〕减〕减1不为不为0转移指令转移指令这是一组把减这是一组把减1 1与条件转移两种功能结合在一起的指令共两条指令:与条件转移两种功能结合在一起的指令共两条指令:DJNZ Rn,relDJNZ Rn,rel;n=0;n=0~~7 7DJNZ direct,rel DJNZ direct,rel 将源操作数〔将源操作数〔RnRn或或directdirect〕减〕减1 1,结果回送到,结果回送到RnRn存放器或存放器或directdirect中去如果结果不为如果结果不为0 0那么转移允许程序员把存放器那么转移允许程序员把存放器RnRn或内部或内部RAMRAM的的directdirect单元用作程序循环计数器主要用于控制程序循环以减单元用作程序循环计数器主要用于控制程序循环以减1 1后后是否为是否为“0“0〞作为转移条件,即可实现按次数控制循环〞作为转移条件,即可实现按次数控制循环〔〔9、、10〕调用子程序指令〕调用子程序指令①①短调用指令短调用指令ACALL ACALL ACALL ACALL addrlladdrlladdrlladdrll与与AJMPAJMP指令相类似,是为了与指令相类似,是为了与MCS-48MCS-48中的中的CALLCALL指令兼容而设的。
指令兼容而设的②②长调用指令长调用指令LCALL addr16LCALL addr16LCALL addr16LCALL addr16RETRETRETRET执执执执行本指令行本指令行本指令行本指令时时时时::::〔〔〔〔SPSPSPSP〕〕〕〕→PCH→PCH→PCH→PCH,然后〔,然后〔,然后〔,然后〔SPSPSPSP〕〕〕〕-1→SP-1→SP-1→SP-1→SP〔〔〔〔SPSPSPSP〕〕〕〕→PCL→PCL→PCL→PCL,然后〔,然后〔,然后〔,然后〔SPSPSPSP〕〕〕〕-1→SP-1→SP-1→SP-1→SP功能是功能是功能是功能是从从从从堆堆堆堆栈栈栈栈中退出中退出中退出中退出PCPCPCPC的高的高的高的高8 8 8 8位和低位和低位和低位和低8 8 8 8位字位字位字位字节节节节,把,把,把,把栈栈栈栈指指指指针针针针减减减减2 2 2 2,,,,从从从从PCPCPCPC值值值值开开开开始始始始继续执继续执继续执继续执行程序〔〔9〕子程序的返回指令〕子程序的返回指令RETIRETI功能与功能与RETRET指令相似,两指令不同之处,是本指令去除了中断响应指令相似,两指令不同之处,是本指令去除了中断响应时,被置时,被置“1“1〞的〞的MCS-51MCS-51内部中断优先级存放器的优先级状态。
内部中断优先级存放器的优先级状态〔〔10〕中断返回指令〕中断返回指令〔〔11〕空操作指令〕空操作指令NOPNOPNOPNOP5.位操作指令〔〔1〕数据位传送指令〕数据位传送指令MOV C,bitMOV C,bitMOV C,bitMOV C,bitMOV bit,CMOV bit,CMOV bit,CMOV bit,C 例 MOV C,06H ;(20H).6→Cy06H是内部RAM 20H字节位6的位地址 MOV P1.0,C ;Cy→P1.0〔〔2〕位变量修改指令〕位变量修改指令CLR C;清;清“0〞〞CyCLR bit;清;清“0〞〞bit位位CPL C;;Cy求反求反 CPL bit;;bit位求反位求反SETB C;置;置“1〞〞 CySETB bit;置;置“1〞〞 bit位位这组指令将操作数指出的位清这组指令将操作数指出的位清“0〞、求反、置〞、求反、置“1〞,〞, 不影响其它标志不影响其它标志例例例例CLR C CLR C CLR C CLR C ;;;;0→Cy0→Cy0→Cy0→CyCLR 27HCLR 27HCLR 27HCLR 27H ;;;;0→0→0→0→〔〔〔〔24H24H24H24H〕〕〕〕.7.7.7.7位位位位CPL 08H CPL 08H CPL 08H CPL 08H ;;;;→→→→〔〔〔〔21H21H21H21H〕〕〕〕.0.0.0.0位位位位SETB P1.7SETB P1.7SETB P1.7SETB P1.7 ;;;;1→P1.71→P1.71→P1.71→P1.7位位位位〔〔3〕位变量逻辑与指令〕位变量逻辑与指令ANL C,bitANL C,bitANL C,bitANL C,bit;;bit∧Cy→Cybit∧Cy→CyANL C,/bitANL C,/bitANL C,/bitANL C,/bit;;/bit ∧Cy→Cy/bit ∧Cy→CyORL C,bitORL C,bitORL C,bitORL C,bit;;bit∨Cy→CyORL C,/bitORL C,/bitORL C,/bitORL C,/bit;;bit∨Cy→Cy〔〔4〕位变量逻辑或指令〕位变量逻辑或指令〔〔5〕条件转移类指令〕条件转移类指令JC rel JC rel JC rel JC rel ;如果;如果;如果;如果进进进进位位位位位位位位Cy=1Cy=1Cy=1Cy=1,那,那,那,那么么么么转转转转移移移移JNC rel JNC rel JNC rel JNC rel ;如果;如果;如果;如果进进进进位位位位位位位位Cy=0Cy=0Cy=0Cy=0,那,那,那,那么么么么转转转转移移移移JB bit,relJB bit,relJB bit,relJB bit,rel ;如果直接;如果直接;如果直接;如果直接寻寻寻寻址位址位址位址位=1=1=1=1,那,那,那,那么么么么转转转转移移移移JNB bit,relJNB bit,relJNB bit,relJNB bit,rel ;如果直接;如果直接;如果直接;如果直接寻寻寻寻址位址位址位址位=0=0=0=0,那,那,那,那么么么么转转转转移移移移JBC bit,relJBC bit,relJBC bit,relJBC bit,rel ;如果直接;如果直接;如果直接;如果直接寻寻寻寻址位址位址位址位=1=1=1=1,那,那,那,那么么么么转转转转移,移,移,移,并清并清并清并清0 0 0 0直接直接直接直接寻寻寻寻址址址址位位位位 思考与练习?思考与练习?1.1.简述简述80C5180C51的寻址方式和所涉及的寻址空间。
的寻址方式和所涉及的寻址空间2.2.设计一段程序,其功能是将存放器设计一段程序,其功能是将存放器R7R7的内容移到的内容移到R6R6中3.3.将片外数据存储器地址为将片外数据存储器地址为40H40H到到60H60H区域的数据块,全部移到片内区域的数据块,全部移到片内RAMRAM的同的同地址区域,并将原数据区域全部填为地址区域,并将原数据区域全部填为FFHFFH4.4.累加器累加器A A中存放两位中存放两位BCDBCD码数,请编写程序实现十进制数减一码数,请编写程序实现十进制数减一5.5.试计算片内试计算片内RAMRAM区区40H~47H40H~47H八个单元中数的算术平均值,结果存放咋八个单元中数的算术平均值,结果存放咋4AH4AH中6.6.为什么为什么SJMPSJMP指令的指令的rel = 0FEHrel = 0FEH时,将实现单指令的无限循环?时,将实现单指令的无限循环?第4章 80C51单片机的功能单元CPUCPU运算部件运算部件控制部件控制部件B BRAMRAMP0P0口口P2P2口口ROMROM(EPROM)(EPROM)串串行行口口 C / TC / T中断中断系统系统SFRSFRP1P1口口8 8P3P3口口8 88 88 8XTALXTAL1 1XTALXTAL2 2PSEN ALEPSEN ALE EA RESET EA RESETVccVccVssVss1.1.微处理器微处理器2.2.数据存储器数据存储器3.3.程序存储器程序存储器4.I/O4.I/O口口5.5.串行口串行口6.6.定时定时/ /计数器计数器7.7.中断系统中断系统8.8.特殊功能特殊功能存放器存放器片内总线片内总线片内总线片内总线§4.1 并行I/O口共有共有4 4个个8 8位双向位双向I/OI/O口,共口,共3232口线。
每位均有自己的口线每位均有自己的锁存锁存(SFR)(SFR)、、输出驱动器输出驱动器和和输入缓冲器输入缓冲器I/O口口位数位数性质性质功能功能SFR字字节地址节地址位地址范围位地址范围 驱动能力驱动能力替代功能替代功能P0口口8真正真正双向口双向口I/O口替代功能口替代功能80H80H~87H8个个TTL程序存储器、片外数据存储程序存储器、片外数据存储器低器低8位位地址地址及低及低8位位数据数据P1口口8准双向口准双向口 I/O口替代功能口替代功能90H90H~97H4个个TTL CTC2:T2、、T2EX((80C52)P2口口8准双向口准双向口 I/O口替代功能口替代功能A0HA0H~A7H4个个TTL程序存储器、片外数据存储程序存储器、片外数据存储器高器高8位位地址地址P3口口8准双向口准双向口 I/O口替代功能口替代功能B0HB0H~B7H4个个TTL串行口:串行口:RXD、、TXD中断:中断:INT0、、INT1片外数据存储器:片外数据存储器:WR、、RDP1口nP1口内部结构如图口内部结构如图2所示所示(输出锁存、输入缓冲器输出锁存、输入缓冲器BUF1、、BUF2以及以及FET管与上拉电阻组成的输入管与上拉电阻组成的输入/输出驱动器〕输出驱动器〕n输出局部内部上拉电阻输出局部内部上拉电阻R*约为约为20K欧姆。
欧姆n其他局部与其他局部与P0端口使用相类似〔读引脚时先写入端口使用相类似〔读引脚时先写入1〕写数据读端口P1口的工作过程分析BUF2BUF1BA10001278P1P1口口口口的的的的每每每每一一一一位位位位都都都都可可可可以以以以单单独独独独操操操操作作作作P1口的功能和特点口的功能和特点1 1、、输出锁存,输出时没有条件输出锁存,输出时没有条件2 2、、输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1 13 3、、工作过程中无高阻悬浮状态,即该口只能是输入态或输出态工作过程中无高阻悬浮状态,即该口只能是输入态或输出态P1口的操作口的操作(1)(1)字节字节操作和操作和位位操作操作输出输出 MOV P1, AMOV P1, A;;;;(P1)(A) MOV P1, #dataMOV P1, #data;;;;(P1)#dataMOV P1, direct; MOV P1, direct; (P1)(direct)输入入MOV A, P1; MOV A, P1; (A)(P1)MOV direct, P1; MOV direct, P1; (direct)(P1)置位、去除置位、去除 SETBSETBP1.iP1.i;;P1.iP1.i 1 1 CLRCLRP1.iP1.i;;P1.iP1.i 0 0输入、输出输入、输出MOV MOV P1.i, C; P1.i, C; P1.iP1.i CYCYMOV MOV C, P1.i; C, P1.i; CYCY P1.iP1.i判跳判跳JB JB P1.i, rel; P1.i, rel; P1.i = 1,P1.i = 1,跳转跳转JBC JBC P1.i, rel;P1.i, rel; P1.i = 0,P1.i = 0,跳转且跳转且P1.iP1.i 0 0逻辑运算逻辑运算ANLANLC, P1.i; C, P1.i; CYCY (P1 · CY)(P1 · CY)ORLORLC, P1.i; C, P1.i; CYCY (P1.i + CY)(P1.i + CY)(2)(2)读引脚操作和读锁存器操作读引脚操作和读锁存器操作① ① 读引脚:先将端口锁存器至读引脚:先将端口锁存器至“1“1〞,使〞,使A A点处电平,否那么会损坏引点处电平,否那么会损坏引脚,且信号无法读出脚,且信号无法读出MOVMOVA A,,P1P1MOVMOVdirectdirect,,P1P1② ② 读锁存器:读锁存器:CPUCPU将锁存器值通过将锁存器值通过BUF2BUF2读入内部进行修改,然后重新读入内部进行修改,然后重新写到锁存器中,完成写到锁存器中,完成““读读————修改修改————写〞指令写〞指令ANLANL、、ORLORL、、XRLXRL、、JBCJBC、、SETBSETB、、CLRCLR等等P1口操作口操作时序序执行改变端口锁存器内容的指令时,新的内容在指令执行的最后一个周执行改变端口锁存器内容的指令时,新的内容在指令执行的最后一个周期期S6P2S6P2传送到口的锁存器内,由于采样都在传送到口的锁存器内,由于采样都在P1P1节拍,所以下一个周期的节拍,所以下一个周期的S1P1S1P1节拍采样得到锁存器内容节拍采样得到锁存器内容P1口的多功能口的多功能线P1.0——P1.0——定时器定时器/ /计数器计数器2 2的外部输入端的外部输入端T2T2P1.1——P1.1——定时器定时器/ /计数器计数器2 2的外部控制端的外部控制端T2EXT2EXP3口与与P1口区别口区别1、增加了、增加了“与非〞门,输入与非〞门,输入端为端为Q和替代功能控制输出和替代功能控制输出2、输出锁存器不是从、输出锁存器不是从*Q而是而是从从Q端引出端引出3、有两个输入缓冲器,替代、有两个输入缓冲器,替代功能取自第一个缓冲器输出端;功能取自第一个缓冲器输出端;I/O口的通用输出信号取自第口的通用输出信号取自第二个缓冲器输出端二个缓冲器输出端 P3口的工作过程分析1、、B点置点置1时时,,锁锁存器存器输输出到出到P3.i,,P3工作状工作状态态为为I/O2、当、当输输出出锁锁存器置存器置1时时,替代功能通,替代功能通过过引脚引脚P3.i ◆◆ 假假设设替代替代输输出出为为0时时,因,因C点以置点以置1,,B点点为为0,,非非门为门为1,,Q0导导通,使通,使A为为0◆◆假假设设替代替代输输出出为为1时时,与非,与非门为门为1,,Q0截止,从截止,从而而A为为高高电电平平P3口的功能和特点口的功能和特点1 1、可作、可作I/OI/O口使用,为准双向口〔功能同口使用,为准双向口〔功能同P1P1〕〕2 2、作为替代功能的输入、作为替代功能的输入/ /输出输出 输入:输入: P3.0——RXDP3.0——RXD,串行输入口,串行输入口 P3.2——*INT0P3.2——*INT0,外部中断,外部中断0 0请求请求P3.3——*INT1P3.3——*INT1,外部中断,外部中断1 1请求请求P3.4——T0P3.4——T0,定时器,定时器/ /计数器计数器T0T0的输入脉冲的输入脉冲P3.5——T1P3.5——T1,定时器,定时器/ /计数器计数器T1T1的输入脉冲的输入脉冲 输出:输出:P3.1——TXDP3.1——TXD,出行输出口,出行输出口P3.6——*WRP3.6——*WR,外部数据存储器写选通,外部数据存储器写选通P3.7——*RDP3.7——*RD,外部数据存储器读选通,外部数据存储器读选通3 3、、P3P3口能驱动口能驱动4 4个个TTLTTL负载负载P2口1 1、、P2P2可以作为通用的可以作为通用的I/OI/O,也可以作为,也可以作为高高8 8位地址输出。
位地址输出2 2、当控制信号为、当控制信号为1 1时时( (接通输出锁存〕接通输出锁存〕◆◆假设输出假设输出D=0D=0,那么,那么Q=0Q=0,,FETFET导通,导通,A=0 A=0 ◆◆假设输出假设输出D=1D=1,那么,那么Q=1Q=1,,FETFET截止,截止,A=1A=13 3、当控制信号为、当控制信号为0 0时时( (接通地址输出〕,接通地址输出〕,A A点的电平将随地址输出的点的电平将随地址输出的0 0、、1 1而变化而变化 P2口的工作过程分析与与P1口区别口区别1、增加了多路开关,开关的、增加了多路开关,开关的输入端为输入端为Q和地址存放器高位和地址存放器高位输出端,切换由内部控制信号输出端,切换由内部控制信号控制控制2、输出锁存器不是从、输出锁存器不是从*Q而是而是从从Q端引出端引出P2口的工作过程分析1 1 0 0A AP2口的功能和特点口的功能和特点1 1、、作作I/OI/O口使用时,口使用时,P2P2口为一个准双向口,功能同口为一个准双向口,功能同P1P12 2、、作为地址输出时,作为地址输出时,P2P2口可以输出程序存储器或片外数据存储器的高口可以输出程序存储器或片外数据存储器的高8 8位地址,与位地址,与P0P0口的低地址构成口的低地址构成1616位地址线。
位地址线3 3、、P2P2能驱动能驱动4 4个个TTLTTL负载负载P2口使用中注意的口使用中注意的问题1 1、、P2P2口有输出锁存功能,在取指周期或外部数据读写选通时,不需加口有输出锁存功能,在取指周期或外部数据读写选通时,不需加锁存器锁存器2 2、访问外部程序存储器时,不能用作、访问外部程序存储器时,不能用作I/OI/O口线口线3 3、有外部数据存储器无外部程序存储器时:、有外部数据存储器无外部程序存储器时:当访问片外数据地址小于等于当访问片外数据地址小于等于256256时,即使用时,即使用RiRi作为间址存放器时,高作为间址存放器时,高8 8位地址没有用,所以位地址没有用,所以P2P2仍可用作仍可用作I/OI/O口线口线当访问片外数据地址大于当访问片外数据地址大于256256时,即使用时,即使用DPTRDPTR作为间址存放器时作为间址存放器时,P2,P2口输口输出高出高8 8位地址,但在读写选通结束后位地址,但在读写选通结束后P2P2原来锁存内容又出现在引脚上原来锁存内容又出现在引脚上P0口BUF2BUF1Q QD DC CVccVccP0R1P0R1 P0R2P0R2D0D0P0WP0W图图1 1、、P P0 0口内部结构口内部结构读锁存器读锁存器读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器 多路开关多路开关 1 0与与P1口区别口区别1、增加了多路开关,开关的、增加了多路开关,开关的输入端为输入端为*Q和地址和地址/数据输出数据输出端,切换由内部控制信号控制端,切换由内部控制信号控制2、、P0口的输出上拉电路与口的输出上拉电路与P1完全不同:上拉电路的导通和完全不同:上拉电路的导通和截止受内部控制信号和地址截止受内部控制信号和地址/数据信号共同〔相数据信号共同〔相“与〞〕控与〞〕控制制P0口的工作过程分析地址地址/数据数据控制控制1 1、当内部控制信号置、当内部控制信号置“1“1〞时,接通地址〞时,接通地址/ /数据输出端:数据输出端:◆◆假设地址假设地址/ /数据输出数据输出1 1,那么,那么““与门〞与门〞=1=1,上拉,上拉FETFET导通,同时,地址数据输出导通,同时,地址数据输出经经““非门〞输出非门〞输出0 0 ,使下拉,使下拉FETFET截止,截止,A = 1A = 1◆◆假设地址假设地址/ /数据输出数据输出0 0,那么,那么 “ “与门〞与门〞=0=0,上拉,上拉FETFET截止,同时,地址数据输截止,同时,地址数据输出经出经““非门〞输出非门〞输出1 1 ,使下拉,使下拉FETFET导通,导通,A = 0A = 02 2、当控制信号为、当控制信号为“0“0〞时〞时( (接通输出锁存器接通输出锁存器*Q),*Q),由于上拉由于上拉FETFET截止,截止,P0P0的输出由的输出由下拉下拉FETFET决定,决定,AP0.iP0口的特点口的特点1 1、、作为作为I/OI/O口使用口使用 相当于一个真正双向口:具有输出锁存和输入缓冲功能。
但输入时相当于一个真正双向口:具有输出锁存和输入缓冲功能但输入时应将口置应将口置1 1,每根口线可以独立定义为输入或输出每根口线可以独立定义为输入或输出2 2、、作为地址作为地址/ /数据服用总线使用数据服用总线使用 此时此时P0P0作为一个准双向口作为数据输入时,作为一个准双向口作为数据输入时,P0P0口也不是悬浮状态口也不是悬浮状态作为地址作为地址/ /数据复用总线使用时,数据复用总线使用时,P0P0不能逐位定义输入不能逐位定义输入/ /输出,分别用做输出,分别用做8 8位位数据和低数据和低8 8位地址3 3、、P0P0口能驱动口能驱动8 8个个TTLTTL负载负载1 1、当控制信号为、当控制信号为0 0时,时,P0P0口做双向口做双向I/OI/O口,为漏极开路〔三态〕口,为漏极开路〔三态〕2 2、控制信号为、控制信号为1 1时,时,P0P0口为地址口为地址/ /数据复用总线〔用于口扩展〕数据复用总线〔用于口扩展〕3 3、、P0WP0W为端口输出写信号,用于锁存输出状态为端口输出写信号,用于锁存输出状态4 4、、P0R1P0R1为读锁存器信号,执行为读锁存器信号,执行“ANL P0,#0FH“ANL P0,#0FH〞时该信号有效〞时该信号有效5 5、、P0R2P0R2为读引脚信号,执行为读引脚信号,执行“MOV A,P0“MOV A,P0〞时该信号有效〞时该信号有效6 6、读引脚〔端口〕时,输出锁存器应为、读引脚〔端口〕时,输出锁存器应为“1“1〞〞P0口的功能口的功能§4.2 定时器/计数器80C5180C51内部有两个内部有两个1616位可编程的定时器位可编程的定时器/ /计数器计数器T1T1、、T0T0。
(定时器定时器/ /技技术器的核心是一个加术器的核心是一个加1 1计数器,其根本功能是加计数器,其根本功能是加1)1)2 2种工作模式:种工作模式:〔〔1 1〕计数器工作模式〕计数器工作模式〔〔2 2〕定时器工作模式〕定时器工作模式4 4种种工作方式工作方式方式方式0 0方式方式1 1方式方式2 2方式方式3 3〔定时器/计数器T0、T1〕l计数器计数器TH0TH0、、TL0TL0和和TH1TH1、、TL1TL1l特殊功能存放器特殊功能存放器TMODTMOD和和TCONTCONl时钟分频器时钟分频器l输入引脚输入引脚T0T0、、T1T1、、 * INT0 * INT0和和* INT1* INT1〔〔1 1〕主要组成〕主要组成TMODTMOD::选择定时器选择定时器/ /计数器计数器T0T0、、T1T1的的工作模式工作模式和和工作方式工作方式 TCONTCON::控制控制T0T0、、T1T1的的启动启动和和停止停止计数,同时包含了计数,同时包含了T0T0、、T1T1的的状态状态〔〔2 2〕内部结构:〕内部结构:振振荡器器频率率÷12①①工作方式控制存放器工作方式控制存放器TMODTMODD7 D6D5D4D3D2D1D0GATEC/*TM1M0GATEC/*TM1M0TMOD控制存放器格式控制存放器格式C/* TC/* T为定时器为定时器/ /计数器的计数器的模式模式选择位选择位ØC/*T = 0 C/*T = 0 选择定时方式:外接晶振选择定时方式:外接晶振, ,计数频率计数频率??ØC/*T = 1C/*T = 1选择计数方式:外接计数脉冲,最高计数频率选择计数方式:外接计数脉冲,最高计数频率??GATEGATE为门控位为门控位————受外部中断信号受外部中断信号 *INT0 *INT0、、*INT1*INT1和控制存放器和控制存放器中的中的TR0TR0、、TR1TR1控制。
控制GATE= 1 GATE= 1 ,由外部中断,由外部中断INT0INT0、、INT1INT1和和TR0TR0、、TR1TR1启动定时器启动定时器当当*INT0 =1——TR0*INT0 =1——TR0置位,启动定时器置位,启动定时器T0T0;;当当*INT1=1——TR1*INT1=1——TR1置位,启动定时器置位,启动定时器T1T1;;GATE= 0 GATE= 0 ,仅由,仅由TR0TR0和和TR1TR1置位启动定时器置位启动定时器T0T0和和T1T1T1T0M1M1M1M1M0M0M0M0功能功能功能功能说说明明明明00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,为常数自动重新装入8位定时器/计数器11方式3,仅适用于T0,分为两个8位定时器/计数器定时器选择方式定时器选择方式00110110思考?思考?TMOD = 00110110TF1TR1TF0TR0IE1IT1IE0IT0 D7 D6 D5 D4D3D2D1D0②②运行控制存放器运行控制存放器TCONTCONTR0为T0的运行控制位——用软件控制,置1时,启动T0;清0时,停止T0。
TF0为T0的溢出标志位——定时器T0溢出时该位置1假设中断开放,那么进入那么进入中断效劳程序后,由硬件自动清0;假设中断禁止,那么可用于判跳,用软件清0TR1为T1的运行控制位,功能同TR0TF1为T1的溢出标志位,功能同TF0〔〔3 3〕定时器〕定时器/ /计数器功能〔模式〕选择计数器功能〔模式〕选择①①定时器〔设置定时器〔设置C/*T=0C/*T=0〕〕②②计数器〔设置计数器〔设置C/*T=1C/*T=1〕〕输入信号为内部脉冲,每个机器周期存放器增加输入信号为内部脉冲,每个机器周期存放器增加1 1计数速率为计数速率为振荡频率的振荡频率的1/121/12,定时时间与计数器的长度、初值以及振荡频率,定时时间与计数器的长度、初值以及振荡频率有关有关输入信号为输入信号为T0T0和和T1T1,每个机器周期,每个机器周期S5P2S5P2采样输入电平,如果负跳采样输入电平,如果负跳变那么计数器加变那么计数器加1 1此后的机器周期此后的机器周期S3P1S3P1期间,新的计数值装入期间,新的计数值装入计数器所以检测一个负跳变需计数器所以检测一个负跳变需2 2个机器周期,故最高计数频率个机器周期,故最高计数频率为振荡频率的为振荡频率的1/241/24。
1 1〕方式〕方式0 01313位定时器位定时器/ /计数器,由计数器,由TLxTLx的低的低5 5位和位和THxTHx的高的高8 8位构成〔位构成〔x=0,1)x=0,1)逻辑结构逻辑结构2 2〕方式〕方式1 1与方式与方式0 0的差异仅在于计数器的位数不同的差异仅在于计数器的位数不同, ,方式方式1 1为为8 8位位3 3〕方式〕方式2 2自动恢复初值的自动恢复初值的8 8位定时器位定时器/ /计数器计数器4 4〕方式〕方式3——only for T03——only for T0为了增加一个附加的为了增加一个附加的8 8位定时器位定时器/ /计数器而提供的,它使计数器而提供的,它使80C5180C51具具有有3 3个定时器个定时器/ /计数器,一般情况下当计数器,一般情况下当T1T1作为串口波特率发生器时,作为串口波特率发生器时,T0T0才定义为方式才定义为方式3 3〔〔4 4〕定时器〕定时器/ /计数器工作方式计数器工作方式定时器的工作方式定时器的工作方式0foscTMODTMOD中的中的M1=M1=0 0,M0=,M0=0 0;计数时,;计数时,TLxTLx的低的低5 5位溢出后向位溢出后向THxTHx进位,进位,THxTHx溢出后向溢出后向TFxTFx置置位,并向位,并向CPUCPU申请中断申请中断l当当GATE = 0 GATE = 0 时,时,A A点为高电平。
点为高电平定时器定时器/ /计数器的启停由计数器的启停由TRxTRx 决定,决定,TRxTRx=1=1定定时器时器/ /计数器启动,计数器启动, TRxTRx=0=0定时器定时器/ /计数器停止;计数器停止;l当当GATE = 1 GATE = 1 时,时,A A点电位由点电位由* *INTxINTx决定,决定,B B点电位由点电位由TRxTRx和和* *INTxINTx决定即定时器决定即定时器/ /计数器的启停由计数器的启停由TRxTRx和和* *INTxINTx两个条件决定两个条件决定fosc定时器的工作方式定时器的工作方式1TMODTMOD中的中的M1=M1=0 0,M0=,M0=1 1;计数时,;计数时,TLxTLx溢出后向溢出后向THxTHx进位,进位,THxTHx溢出后向溢出后向TFxTFx置位,并置位,并向向CPUCPU申请中断,其他与方式申请中断,其他与方式0 0相同定时器的工作方式定时器的工作方式2foscTMODTMOD中的中的M1=1,M0=0M1=1,M0=0;这时,将;这时,将1616位计数存放器分成两个位计数存放器分成两个8 8位存放器,位存放器,TLxTLx作为计作为计数存放器,数存放器,THxTHx作为计数常数存放器;作为计数常数存放器;TLxTLx溢出后一面将溢出后一面将TFxTFx置位,并向置位,并向CPUCPU申请中断;另一方面,将申请中断;另一方面,将THxTHx的内容重新装入的内容重新装入TLxTLx中,继续计数。
中,继续计数定时器的工作方式定时器的工作方式3的的T0TMODTMOD中的中的M1=M1=1 1,M0=,M0=1 1;将定时器;将定时器/ /计数器计数器T0T0分成一个分成一个8 8位定时器位定时器/ /计数器和一个计数器和一个8 8位位定时器,定时器,TL0TL0用于用于8 8位定时器位定时器/ /计数器,计数器,TH0TH0用于用于8 8位定时器位定时器TL0TL0占用占用T0T0的的GATEGATE、、* *INT0INT0、、TR0TR0、、T0T0引脚引脚及及中断源中断源TH0TH0只能作为定时器用只能作为定时器用只能作为定时器用只能作为定时器用,占用,占用T1T1的启动的启动/ /停止位停止位TR1TR1、计数溢出标志位、计数溢出标志位TF1TF1和和中断源中断源定时器的工作方式定时器的工作方式3的的T1此时此时T1T1可选方式可选方式0 0、、1 1或或2 2因为中断源已被占用,所以因为中断源已被占用,所以T1T1只能用作波特率发生器只能用作波特率发生器等不用中断的地方等不用中断的地方逻辑上只在逻辑上只在T1T1用作波特率发生器时,用作波特率发生器时,T0T0才能选工作方式才能选工作方式3 3。
〔〔5 5〕〕 定时器定时器/ /计数器的编程和使计数器的编程和使用用①①溢出率的计算溢出率的计算由于定时器/计数器是+1计数的,因此预先置入的是“补码〞,公式:②②编程步骤编程步骤a.a.写写TMODTMOD,只能用字节寻址设置定时器,只能用字节寻址设置定时器/ /计数器工作方式、计数器工作方式、功能选择以及是否用门控位功能选择以及是否用门控位; ;b.b.将时间常数或计数常数写入将时间常数或计数常数写入THiTHi及及TLiTLi,只能用字节寻址,只能用字节寻址; ;c.c.启动定时或计数,即写入启动定时或计数,即写入TCONTCON,可用字节寻址也可用位寻址,可用字节寻址也可用位寻址; ;d.d.定时器中断开放和禁止,即写定时器中断开放和禁止,即写IEIE③③编程举例编程举例例1.假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如下图方波的周期用方波的周期用T0T0来确定,让来确定,让T0T0每隔每隔1ms1ms计数溢出计数溢出1 1次次( (每每1ms1ms产生一次产生一次中断中断) ),,CPUCPU响应中断后,在中断效劳程序中对响应中断后,在中断效劳程序中对P1.0P1.0取反。
取反1)(1)计算初值计算初值X X 设初值为设初值为X X,那么有,那么有:t = 12/fosc(2L-X):t = 12/fosc(2L-X)(216-X)×2×10-6=1×10-3(216-X)×2×10-6=1×10-3 216-X=500 X=65036216-X=500 X=65036 X X化为化为1616进制,即进制,即 所以,所以,T0T0的初值为:的初值为: TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH(2)(2)初始化程序设计初始化程序设计对存放器对存放器IPIP、、IEIE、、TCONTCON、、TMODTMOD的相应位进行正确设置,将计数初值的相应位进行正确设置,将计数初值送入定时器中送入定时器中TMOD=TMOD=?? (3)(3)程序设计程序设计 中断效劳程序除产生方波外,还要注意将计数初值重新装入定时器中断效劳程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。
中,为下一次中断作准备 ORG 0000HORG 0000HRESET: RESET: AJMP MAIN AJMP MAIN ;转主程序;转主程序ORG 000BH ORG 000BH ;;T0T0的中断入口的中断入口AJMP IT0PAJMP IT0P ;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MAIN: MOV SP,#60H MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#01HMOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 ACALL PT0M0ACALL PT0M0 ;调用子程序;调用子程序PT0M0PT0M0HERE: HERE: AJMP HEREAJMP HERE ;自身跳转;自身跳转 AJMP $ AJMP $PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH ;;T0T0中断效劳程序,中断效劳程序,T0T0置初值置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0SETB TR0 ;启动;启动T0T0 SETB ET0SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;;CPUCPU开中断开中断RETRETIT0P: IT0P: MOV TL0,#0CH MOV TL0,#0CH ;;T0T0中断效劳子程序,中断效劳子程序,T0T0重新置初值重新置初值 MOV TH0,#0FEHMOV TH0,#0FEHCPL P1.0 CPL P1.0 ;;P1.0P1.0的状态取反的状态取反 RETIRETI查询方式查询方式的参考程序的参考程序: :MOV TMOD,#01HMOV TMOD,#01H ;;设置设置T0T0为方式为方式1 1 SETB TR0SETB TR0 ;;接通接通T0T0LOOP:LOOP:MOV TH0,#0FEHMOV TH0,#0FEH ;;T0T0置初值置初值MOV TL0,# 0CHMOV TL0,# 0CHLOOP1:LOOP1: JNB TF0,LOOP1JNB TF0,LOOP1 ;;查询查询TF0TF0标志标志CLR TR0CLR TR0 ;;T0T0溢出,关闭溢出,关闭T0T0CPL P1.0CPL P1.0 ;;P1.0P1.0的状态求的状态求反反SJMP LOOPSJMP LOOP?错误?错误〔〔1 1〕〕T0T0工作方式确实定工作方式确实定定时时间较长,采用哪一种工作方式?由各种工作方式的特性,定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:可计算出:方式方式0 0最长可定时最长可定时16.384ms; 16.384ms; 方式方式1 1最长可定时最长可定时131.072ms;131.072ms;方式方式2 2最长可定时最长可定时512512s s。
选方式选方式1 1,每隔,每隔100ms100ms中断一次,中断中断一次,中断1010次为次为1s1s 〔〔2 2〕计算计数初值〕计算计数初值因为:因为:(216-X)×2×10-6 = 10-1 s(216-X)×2×10-6 = 10-1 s所以:所以:X=15536=3CB0HX=15536=3CB0H因此:因此:TH0=3CHTH0=3CH,,TL0=B0H TL0=B0H 〔〔3 3〕〕1010次计数的实现次计数的实现 采用循环程序法采用循环程序法例例2 2. . 假设假设系统时钟为系统时钟为6 6MHzMHz,,编写定时器编写定时器T0T0产生产生1 1秒定时的秒定时的程序 ORG 0000HORG 0000HRESET:RESET: LJMP MAIN LJMP MAIN ;;上电,转主程序入口上电,转主程序入口MAINMAIN ORG 000BHORG 000BH ;;T0T0的中断入口的中断入口LJMP IT0PLJMP IT0P;;转转T0T0中断处理程序中断处理程序IT0PIT0PORG 1000HORG 1000HMAIN:MAIN:MOV SP,#60HMOV SP,#60H ;;设堆栈指针设堆栈指针MOV B,#0AH MOV B,#0AH ;;设循环次数设循环次数1010次次MOV TMOD,#01H MOV TMOD,#01H ;;设设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;;给给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CHSETB TR0 SETB TR0 ;;启动启动T0T0 SETB ET0SETB ET0 ;;允许允许T0T0中断中断 SETB EA SETB EA ;;CPUCPU开放中断开放中断HERE:HERE:SJMP HERE SJMP HERE ;;等待中断等待中断ITOPITOP:: MOV TL0,#0B0H MOV TL0,#0B0H ;;T0T0中断子程序,重装初值中断子程序,重装初值MOV TH0,#3CH MOV TH0,#3CH DJNZ BDJNZ B,,LOOPLOOPCLR TR0 CLR TR0 ;;1s1s定时时间到,停止定时时间到,停止T0T0工作工作LOOP:LOOP: RETI RETI 〔〔4 4〕参考程序〕参考程序例例3. 3. 当当T0T0〔〔P3.4P3.4〕引脚上发生负跳变时,从〕引脚上发生负跳变时,从P1.0P1.0引脚上输出一个引脚上输出一个周期为周期为1ms1ms的方波的方波, ,如下图。
〔系统时钟为如下图〔系统时钟为6MHz6MHz〕〕〔〔1 1〕工作方式选择〕工作方式选择T0T0为方式为方式1 1计数,初值计数,初值 0FFFFH 0FFFFH,即外部计数输入端,即外部计数输入端T0T0〔〔P3.4P3.4〕发生一次〕发生一次负跳变时,负跳变时,T0T0加加1 1且溢出,溢出标志且溢出,溢出标志TF0TF0置置“1“1〞,发中断请求在进入〞,发中断请求在进入T0T0中断程序后,把中断程序后,把F0F0标志置标志置“1“1〞,说明〞,说明T0T0脚已接收了负跳变信号脚已接收了负跳变信号T1T1定义为方式定义为方式2 2定时在T0T0脚发生一次负跳变后,启动脚发生一次负跳变后,启动T1T1每每500500s s产生一产生一次中断,在中断效劳程序中对次中断,在中断效劳程序中对P1.0P1.0求反,使求反,使P1.0P1.0产生周期产生周期1ms1ms的方波〔〔2 2〕计算〕计算T1T1初值初值设设T1T1的初值为的初值为X X::那么那么(28-X)×2×10-6=5×10-4(28-X)×2×10-6=5×10-4 X=28-250=6=06HX=28-250=6=06H〔〔3 3〕程序设计〕程序设计在在T1T1定时中断效劳程序定时中断效劳程序IT1PIT1P中,省去了中,省去了T1T1中断效劳程序中重新装入初值中断效劳程序中重新装入初值06H06H的指令。
的指令ORG 0000HORG 0000HRESET: RESET: LJMP MAIN LJMP MAIN ;复位入口转主程序;复位入口转主程序 ORG 000BHORG 000BHJMP IT0P JMP IT0P ;转;转T0T0中断效劳程序中断效劳程序ORG 001BHORG 001BHLJMP IT1P LJMP IT1P ;转;转T1T1中断效劳程序中断效劳程序ORG 0100HORG 0100HMAIN:MAIN:MAIN:MAIN:MOV SP,#60HMOV SP,#60HMOV SP,#60HMOV SP,#60HACALL PT0M2 ACALL PT0M2 ACALL PT0M2 ACALL PT0M2 ;调用对;调用对;调用对;调用对T0T0T0T0,,,,T1T1T1T1初始化子程序初始化子程序初始化子程序初始化子程序LOOP: LOOP: LOOP: LOOP: MOV C,F0 MOV C,F0 MOV C,F0 MOV C,F0 ;;;;T0T0T0T0产生过中断了吗,产生过中断,那么产生过中断了吗,产生过中断,那么产生过中断了吗,产生过中断,那么产生过中断了吗,产生过中断,那么F0=1F0=1F0=1F0=1JNC LOOPJNC LOOPJNC LOOPJNC LOOP;;;;T0T0T0T0没有产生过中断,那么跳到没有产生过中断,那么跳到没有产生过中断,那么跳到没有产生过中断,那么跳到LOOPLOOPLOOPLOOP;等待;等待;等待;等待T0T0T0T0中断中断中断中断SETB TR1 SETB TR1 SETB TR1 SETB TR1 ;启动;启动;启动;启动T1T1T1T1SETB ET1 SETB ET1 SETB ET1 SETB ET1 ;允许;允许;允许;允许T1T1T1T1中断中断中断中断HERE: HERE: HERE: HERE: AJMP HEREAJMP HEREAJMP HEREAJMP HEREPT0M2: PT0M2: PT0M2: PT0M2: MOV TMOD,#26H MOV TMOD,#26H MOV TMOD,#26H MOV TMOD,#26H ;初始化,;初始化,;初始化,;初始化,T1T1T1T1为方式为方式为方式为方式2 2 2 2定时,定时,定时,定时,T0T0T0T0为方式为方式为方式为方式1 1 1 1计数计数计数计数 MOV TL0,#0FFH MOV TL0,#0FFH MOV TL0,#0FFH MOV TL0,#0FFH ;;;;T0T0T0T0置初值置初值置初值置初值 MOV TH0,#0FFHMOV TH0,#0FFHMOV TH0,#0FFHMOV TH0,#0FFH SETB TR0SETB TR0SETB TR0SETB TR0 ;启动;启动;启动;启动T0T0T0T0 SETB ET0SETB ET0SETB ET0SETB ET0 ;允许;允许;允许;允许T0T0T0T0中断中断中断中断 MOV TL1,#06H MOV TL1,#06H MOV TL1,#06H MOV TL1,#06H ;;;;T1T1T1T1置初值置初值置初值置初值 MOV TH1,#06HMOV TH1,#06HMOV TH1,#06HMOV TH1,#06H CLR F0CLR F0CLR F0CLR F0;把;把;把;把T0T0T0T0已发生中断标志已发生中断标志已发生中断标志已发生中断标志F0F0F0F0清清清清0 0 0 0 SETB EASETB EASETB EASETB EARETRETRETRETIT0P: IT0P: IT0P: IT0P: CLR TR0 CLR TR0 CLR TR0 CLR TR0 ;;;;T0T0T0T0中断效劳程序,停止中断效劳程序,停止中断效劳程序,停止中断效劳程序,停止T0T0T0T0计数计数计数计数SETB F0 SETB F0 SETB F0 SETB F0 ;建立产生中断标志;建立产生中断标志;建立产生中断标志;建立产生中断标志 RETI RETI RETI RETIIT1P: IT1P: IT1P: IT1P: CPL P1.0CPL P1.0CPL P1.0CPL P1.0;;;;T1T1T1T1中断效劳,中断效劳,中断效劳,中断效劳,P1.0P1.0P1.0P1.0位取反位取反位取反位取反RETIRETIRETIRETI例例4 4. . 利用利用T1T1的方式的方式2 2对外部信号计数,要求每计满对外部信号计数,要求每计满100100个数,将个数,将P1.0P1.0取取反。
反 (本例是本例是方式方式2 2计数模式计数模式的应用的应用)〔〔1 1〕选择工作方式〕选择工作方式外部信号由外部信号由T1(P3.5) T1(P3.5) 脚输入脚输入, ,每发生一次负跳变计数器加每发生一次负跳变计数器加1 1,每,每输入输入100100个脉冲,计数器产生溢出中断,在中断效劳程序中将个脉冲,计数器产生溢出中断,在中断效劳程序中将P1.0P1.0取反一次取反一次T1 T1 方式方式2 2的控制字为的控制字为TMOD=60HTMOD=60H不使用T0T0时,时,TMODTMOD的低的低4 4位可任位可任取,但不能使取,但不能使T0T0进入方式进入方式3 3,这里取全,这里取全0 0〔〔2 2〕计算〕计算T1T1的初值的初值X=28-100=156=9CHX=28-100=156=9CH 因此,因此,TL1TL1的初值为的初值为9CH9CH,重装初值存放器,重装初值存放器TH1=9CHTH1=9CH〔〔3 3〕程序设计〕程序设计ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 001BHORG 001BH;;T1T1中断效劳程序入口中断效劳程序入口CPL P1.0CPL P1.0;;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100HMAIN:MAIN: MOV TMOD,#60H MOV TMOD,#60H ;设;设T1T1为方式为方式2 2计数计数 MOV TL0,#9CH MOV TL0,#9CH ;;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SETB TR1 ;启动;启动T1T1HERE: HERE: AJMP HEREAJMP HERE例例5 5. . 假设某假设某5151单片机应用系统的两个外中断源已被占用,设置单片机应用系统的两个外中断源已被占用,设置T1T1工作工作在在方式方式2 2,作波特率发生器用。
现要求增加一个外部中断源,并控制,作波特率发生器用现要求增加一个外部中断源,并控制P1.0P1.0引脚输出一个引脚输出一个5 5kHzkHz的方波设系统时钟为的方波设系统时钟为6 6MHzMHz〔〔1 1〕选择工作方式〕选择工作方式TL0TL0为方式为方式3 3计数,把计数,把T0T0引脚〔引脚〔P3.4P3.4〕作附加的外中断输入端,〕作附加的外中断输入端,TL0TL0初值设为初值设为0FFH0FFH,当检测到,当检测到T0T0引脚电平出现负跳变时,引脚电平出现负跳变时,TL0TL0溢出,申溢出,申请中断,这相当于跳沿触发的外部中断源请中断,这相当于跳沿触发的外部中断源TH0TH0为为8 8位方式位方式3 3定时,控制定时,控制P1.0P1.0输出输出5kHz5kHz的方波信号的方波信号〔〔2 2〕初值计算〕初值计算 TL0 TL0的初值设为的初值设为0FFH0FFH5kHz5kHz的方波的周期为的方波的周期为200200s s,,TH0TH0的定时的定时时间为时间为100100s sTH0TH0初值初值X X计算如下:计算如下:(28-X)×2×10-6=1×10-4(28-X)×2×10-6=1×10-4 X=28-100=156=9CHX=28-100=156=9CH〔〔3 3〕程序设计〕程序设计 ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 000BH ORG 000BH ;;T0T0中断入口中断入口LJMP TL0INTLJMP TL0INT;跳;跳T0T0中断效劳程序中断效劳程序ORG 001BH ORG 001BH ;在;在T0T0方式方式3 3时,时,TH0TH0占用占用T1T1的中断的中断LJMP TH0INTLJMP TH0INT;跳;跳TH0TH0中断效劳程序中断效劳程序ORG 0100HORG 0100HMAIN:MAIN:MOV TMOD,#27H MOV TMOD,#27H ;;TL0TL0方式方式3 3计数,计数,T1T1方式方式2 2定时定时MOV TL0,#0FFH MOV TL0,#0FFH ;置;置TL0TL0初值初值MOV TH0,#9CHMOV TH0,#9CH ;置;置TH0TH0初值初值MOV TL1,#dataL MOV TL1,#dataL ;;datadata为波特率常数为波特率常数MOV TH1,#dataHMOV TH1,#dataHMOV TCON,#55HMOV TCON,#55H;允许;允许T0T0中断中断MOV IE,#9FHMOV IE,#9FH ;启动;启动T1T1┆┆TL0INT:TL0INT: MOV TL0,#0FFH MOV TL0,#0FFH ;;TL0TL0中断效劳程序中断效劳程序,TL0,TL0重新装入初值重新装入初值 中断处理中断处理 TH0INT:TH0INT: MOV TH0,#9CHMOV TH0,#9CH ;;TH0TH0中断效劳程序,中断效劳程序,TH0TH0重新装入初值重新装入初值CPL P1.0CPL P1.0 ;;P1.0P1.0位取反输出位取反输出RETI RETI §4.3 串行接口•全双工的异步通讯串行口〔全双工的异步通讯串行口〔UARTUART通用异步收发〕;通用异步收发〕;•4 4种工作方式种工作方式 , ,波特率由片内定时器波特率由片内定时器/ /计数器控制;计数器控制;•每发送或接收一帧数据,均可发出中断请求;每发送或接收一帧数据,均可发出中断请求;•除用于串行通讯,还可用来扩展并行除用于串行通讯,还可用来扩展并行I/OI/O口。
口1. UART 1. UART 串行口的结构串行口的结构(Universal Asynchronous Receive and Transmit)UARTUART串行口的结构串行口的结构〔〔1 1〕波特率发生器〕波特率发生器〔〔2 2〕串行口〕串行口波特率发生器主要由定时器波特率发生器主要由定时器/ /计数器计数器T1T1、、T2T2及内部的控制开关及内部的控制开关和分频器组成它向串口发出时钟信号和分频器组成它向串口发出时钟信号TXCLOCKTXCLOCK和和RXCLOCKRXCLOCK相应的控制存放器有:相应的控制存放器有:TMODTMOD、、TCONTCON、、T2CONT2CON、、PCONPCON、、TL1TL1、、TH1TH1、、TL2TL2、、TH2TH2串行口的组成如下:串行口的组成如下:接收存放器和发送存放器接收存放器和发送存放器SBUFSBUF:它们在物理上隔离的,但占用:它们在物理上隔离的,但占用同一地址同一地址——99H——99H串行口控制逻辑:接收来自波特率发生器的时钟信号串行口控制逻辑:接收来自波特率发生器的时钟信号————TXCLOCKTXCLOCK和和RXCLOCK;RXCLOCK;负责串行负责串行/ /并行数据的转换;控制串行中断并行数据的转换;控制串行中断〔〔TITI和和RI)RI)串行控制存放器串行控制存放器:SCON:SCON串行数据输入串行数据输入/ /输出引脚:输出引脚:TXD(P3.1)TXD(P3.1)输出,输出,RXD(P3.0)RXD(P3.0)输入输入P1232. 2. 串行口的特殊功能存放器〔串行口的特殊功能存放器〔SBUFSBUF、、PCONPCON和和SCONSCON〕〕〔〔1 1〕串行口控制存放器〕串行口控制存放器SCON SCON ①①SM0SM0、、SM1 SM1 〔〔SCON.7 SCON.6)——SCON.7 SCON.6)——串行口串行口4 4种工作方式的选择位种工作方式的选择位 SM0SM0SM0SM0SM1SM1SM1SM1功能功能功能功能说说明明明明008 8位位移位寄存器方式(用于移位寄存器方式(用于I/OI/O扩展)扩展), ,f foscosc/12/12011010位位UARTUART, 波特率可变波特率可变101111位位UART,UART, f foscosc/64/64或或f foscosc/32/32111111位位UARTUART, 波特率可变波特率可变②②SM2 SM2 〔〔SCON.5)——SCON.5)——多机通信控制位多机通信控制位•在方式在方式0 0时,时,SM2SM2必须为必须为0 0。
•在方式在方式1 1时,如果时,如果SM2=1SM2=1,那么只有收到停止位时才会激活,那么只有收到停止位时才会激活RIRI•用于方式用于方式2 2或方式或方式3 3中当串行口以方式中当串行口以方式2 2或方式或方式3 3接收时,接收时,•如果如果SM2=1SM2=1,只有当接收到的第,只有当接收到的第9 9位数据〔位数据〔RB8RB8〕为〕为“1“1〞时,才将接收〞时,才将接收到的前到的前8 8位数据送入位数据送入SBUFSBUF,并置,并置“1“1〞〞 RI RI,产生中断请求;当接收到的,产生中断请求;当接收到的第第9 9位数据〔位数据〔RB8RB8〕为〕为“0“0〞时,那么将接收到的前〞时,那么将接收到的前8 8位数据丢弃位数据丢弃•如果如果SM2=0SM2=0,那么不管第,那么不管第9 9位数据是位数据是“1“1〞还是〞还是“0“0〞,都将〞,都将 前前8 8位位数据送入数据送入SBUFSBUF中,并置中,并置“1“1〞〞 RI RI,产生中断请求产生中断请求③③REN REN 〔〔SCON.4)——SCON.4)——允许串行接收位允许串行接收位由软件置由软件置“1“1〞或清〞或清“0“0〞。
〞REN=1 REN=1 允许串行口接收数据允许串行口接收数据REN=0 REN=0 禁止串行口接收数据禁止串行口接收数据④④TB8 TB8 〔〔SCON.3)—— SCON.3)—— 发送的第发送的第9 9位数据位数据方式方式2 2和和3 3时,时,TB8TB8是要发送的第是要发送的第9 9位数据,可作为位数据,可作为奇偶校验位奇偶校验位使用,也使用,也可作为可作为地址帧地址帧或或数据帧数据帧的标志 =1=1为地址帧为地址帧, , =0=0为数据帧为数据帧⑤⑤RB8 RB8 〔〔SCON.2)—— SCON.2)—— 接收到的第接收到的第9 9位数据位数据方式方式2 2和和3 3时,时,RB8RB8存放接收到的第存放接收到的第9 9位数据在方式位数据在方式1 1,如,如SM2=0SM2=0,,RB8RB8是接收到的停止位在方式是接收到的停止位在方式0 0,不使用,不使用RB8RB8⑥⑥TI TI 〔〔SCON.1)—— SCON.1)—— 发送中断标志位发送中断标志位方式方式0 0时,串行发送第时,串行发送第8 8位数据结束时由硬件置位数据结束时由硬件置“1“1〞,〞,其它工作方式,串行口发送停止位的开始时置其它工作方式,串行口发送停止位的开始时置“1“1〞。
〞TI=1TI=1,表示一,表示一帧数据发送结束,可供软件查询,也可申请中断帧数据发送结束,可供软件查询,也可申请中断CPUCPU响应中断后响应中断后, , 向向SBUFSBUF写入要发送的下一帧数据写入要发送的下一帧数据TITI必须由软件清必须由软件清0 0⑦⑦RI RI 〔〔SCON.0)—— SCON.0)—— 接收中断标志位接收中断标志位 方式方式0 0时,接收完第时,接收完第8 8位数据时,位数据时,RIRI由硬件置由硬件置1 1其它工作方式,串行接收到停止位时,该位置其它工作方式,串行接收到停止位时,该位置“1“1〞RI=1RI=1,表示一,表示一帧数据接收完毕,并申请中断帧数据接收完毕,并申请中断, CPU, CPU从接收从接收SBUFSBUF取走数据该位状态取走数据该位状态也可软件查询也可软件查询RIRI必须由软件清必须由软件清“0“0〞〔〔2 2〕串行口特殊功能存放器〕串行口特殊功能存放器PCONPCON〔电源控制存放器〕〔电源控制存放器〕 SMODSMOD:波特率选择位波特率选择位例如:方式例如:方式1 1的波特率的计算公式为:的波特率的计算公式为:方式方式1 1波特率波特率= =〔〔2SMOD/322SMOD/32〕〕××定时器定时器T1T1的溢出率的溢出率也称也称SMODSMOD位为波特率倍增位。
位为波特率倍增位〔〔3 3〕串行数据存放器〕串行数据存放器SBUF SBUF SD7SD6SD5SD4SD3SD2SD1SD0D7 D6D5D4D3D2 D1D099H读、写读、写SBUF的指令分别为的指令分别为MOV A, SBUF 和和 MOV SBUF, A3. 3. 串行口的工作方式和多机通信方式串行口的工作方式和多机通信方式在控制存放器中,在控制存放器中,SM0SM0和和SM1SM1位决定串行口的工作方式,位决定串行口的工作方式,SM2SM2决定串行决定串行口的多机通信方式口的多机通信方式〔〔〔〔1 1 1 1〕方式〕方式〕方式〕方式0 0 0 0 同步移位存放器同步移位存放器输入入/输出方式,常用于外接移位存放器,以出方式,常用于外接移位存放器,以扩展展并行并行I/O口 8位数据位数据为一一帧,不,不设起始位和停止位,先起始位和停止位,先发送或接送或接收最低位波特率固定收最低位波特率固定为fosc/12帧格式如下:格式如下: ①① 方式方式0发送送 当当CPU执行一条将数据写入行一条将数据写入发送送缓冲器冲器SBUF的指令的指令时,,产生一个正脉冲,生一个正脉冲,串行口即把串行口即把SBUF中的中的8位数据以位数据以fosc/12的固定波特率从的固定波特率从RXD引脚串行引脚串行输出,出,低位在先低位在先,TXD引脚引脚输出同步移位脉冲,出同步移位脉冲,发送完送完8位数据位数据,中断中断标志位志位TI置置“1〞〞 。
时序如下序如下图1xxxxxxxx===1xxxxxxxx===〉〉〉〉01xxxxxxx====>001xxxxxx=01xxxxxxx====>001xxxxxx====>0001xxxxx===>0001xxxxx②② 方式方式0接收接收REN=1,接收数据,,接收数据,REN=0,禁止接收,禁止接收;REN=1,允,允许接收向串口的接收向串口的SCON写入控制字〔置写入控制字〔置为方式方式0,并置,并置“1〞〞REN位,同位,同时RI=0〕〕时,,产生生一个正脉冲,串行口即开始接收数据一个正脉冲,串行口即开始接收数据RXD为数据数据输入端,入端,TXD为移位脉冲移位脉冲信号信号输出端,接收器也以出端,接收器也以fosc/12的固定波特率采的固定波特率采样RXD引脚的数据信息,引脚的数据信息,当收到当收到8位数据位数据时置置RI“1〞〞 表示一帧数据接收完,数据接收完,时序如下:序如下:11111110===11111110===〉〉〉〉1111110x====>111110xx=1111110x====>111110xx====>11110xxx===>11110xxx注意:注意:方式方式0下,下,SCON中的中的TB8、、RB8位没有用到,位没有用到,发送或接收完送或接收完8位数据由硬件位数据由硬件置置TI或或RI“1〞〞 ,,CPU响响应中断。
中断TI或或RI须由用由用户软件清件清“0〞,可用如下指〞,可用如下指令:令:CLR TI;;TI位清位清“0〞〞CLR RI ;;RI位清位清“0〞〞方式方式0时,,SM2位必位必须为0〔〔〔〔2 2 2 2〕方式〕方式〕方式〕方式1 1 1 1SM0、、SM1= 0 1方式方式1一一帧帧数据数据为为10位,位,1个起始位个起始位〔 〔0〕 〕,,8个数据位,个数据位,1个停止位个停止位〔 〔1〕 〕,先,先发发送送或接收最低位或接收最低位帧帧格式如下:格式如下:方式方式1 1波特率波特率= =〔〔2SMOD/322SMOD/32〕〕××定时器定时器T1T1的溢出率的溢出率SMODSMOD为为PCONPCON存放器的最高位的值〔存放器的最高位的值〔0 0或或1 1〕①① 方式方式1发送送 方式方式1输出出时,数据由,数据由TXD输出,出,一一帧信息信息为10位,位,1位起始位位起始位0,,8位数据位〔先低位〕和位数据位〔先低位〕和1位停止位位停止位1当当执行一条数据写行一条数据写发送送缓冲器冲器SBUF的指令,就启的指令,就启动发送图中中TX时钟的的频率率就是就是发送的波特率送的波特率。
发送开始送开始时,内部,内部发送控制信号送控制信号变为有效将起始位向有效将起始位向TXD输出,此后,每出,此后,每经过一个一个TX时钟周期,便周期,便产生一个移位脉冲,并由生一个移位脉冲,并由TXD输出一个数据位出一个数据位8位数位数据位全部据位全部发送完送完毕后,置后,置“1〞〞 TI方式1发送数据的送数据的时序,如下序,如下图1xxxxxxxx0===1xxxxxxxx0===〉〉〉〉01xxxxxxxx====>001xxxxxxx=01xxxxxxxx====>001xxxxxxx====>0001xxxxxx===>0001xxxxxx②② 方式方式1接收接收数据从数据从RXD〔〔P3.0〕脚〕脚输入当检测到起始位的到起始位的负跳跳变时,开始接收数据开始接收数据定定时控制信号有两种:接收移位控制信号有两种:接收移位时钟〔〔RX时钟,,频率和波特率相同〕和位率和波特率相同〕和位检测器采器采样脉冲〔脉冲〔频率是率是RX时钟的的16倍,倍,1位数据期位数据期间,有,有16个采个采样脉冲〕,脉冲〕,当采当采样到到RXD端从端从1到到0的跳的跳变时就启就启动检测器,接收的器,接收的值是是3次次连续采采样〔〔第第7、、8、、9个脉冲个脉冲时采采样〕〕进行表决以确行表决以确认是否是真正的起始位〔是否是真正的起始位〔负跳跳变〕〕的开始。
的开始当一当一帧数据接收完,数据接收完,须同同时满足两个条件,接收才真正有效足两个条件,接收才真正有效⑴⑴ RI=0,即上一,即上一帧数据接收完成数据接收完成时,,RI=1发出的中断出的中断请求已被响求已被响应,,SBUF中的数据已被取走,中的数据已被取走,说明明“接收接收SBUF〞已空⑵⑵ SM2=0或收到的停止位或收到的停止位=1〔方式〔方式1时,停止位已,停止位已进入入RB8〕,那么收到的〕,那么收到的数据装入数据装入SBUF和和RB8〔〔RB8装入停止位〕,且置装入停止位〕,且置“1〞中断〞中断标志志RI假假设这两个条件不同两个条件不同时满足,收到的数据将足,收到的数据将丧失失111111111===111111111===〉〉〉〉011111111====>x01111111=011111111====>x01111111====>xx0111111===>xx0111111〔〔〔〔3 3 3 3〕方式〕方式〕方式〕方式2 2 2 29位异步通信接口每位异步通信接口每帧数据均数据均为11位,位,1位起始位位起始位0,,8位数据位〔先低位位数据位〔先低位〕,〕,1位可程控的第位可程控的第9位数据和位数据和1位停止位。
位停止位帧格式如下格式如下 方式2 波特率= 〔2SMOD/64〕×fosc ①① 方式方式2发送送发送前,先根据通送前,先根据通讯协议由由软件件设置置TB8〔例如,双机通〔例如,双机通讯时的奇偶校的奇偶校验位位或多机通或多机通讯时的地址的地址/数据的数据的标志位〕方式志位〕方式2发送数据波形如下送数据波形如下图例例 方式方式2发送在双机通送在双机通讯中的中的应用下面的用下面的发送中断效送中断效劳程序,是在双机通程序,是在双机通讯中,以中,以TB8作作为奇偶校奇偶校验位,位,处理方法理方法为数据写入数据写入SBUF之前,先将数据的之前,先将数据的奇偶校奇偶校验位写入位写入TB8,以保,以保证采用偶校采用偶校验发送发送方〕送方〕PIPTI:: PUSH PSW ;;现场保保护PUSH Acc SETB RS1 ;;选择2组工作存放器区工作存放器区 CLR RS0 CLR TI ;;发送中断送中断标志清志清“0〞〞 MOV A,,@R0;取数据;取数据 MOV C,P ;校;校验位送位送TB8,采用偶校采用偶校验 MOV TB8 ,C MOV SBUF ,A ;启;启动发送送 INC R0 ;数据指;数据指针加加1,指向下一个数据,指向下一个数据 POP Acc ;恢复;恢复现场 POP PSW RETI ;中断返回;中断返回②② 方式方式2接收接收SM0、、SM1=1 0,且,且REN=1。
数据由数据由RXD端端输输入,接收入,接收11位信息当位位信息当位检测检测到到RXD从从1到到0的的负负跳跳变变,并判断起始位有效后,开始收一,并判断起始位有效后,开始收一帧帧信息在接收器信息在接收器完第完第9位数据后,需位数据后,需满满足两个条件,才能将接收到的数据送入足两个条件,才能将接收到的数据送入SBUF〔 〔1〕 〕RI=0,意味着接收,意味着接收缓缓冲器冲器为为空〔 〔2〕 〕SM2=0或接收到的第或接收到的第9位数据位位数据位RB8=1时时当上述两个条件当上述两个条件满满足足时时,接收到的数据送入,接收到的数据送入SBUF〔 〔接收接收缓缓冲器冲器〕 〕,第,第9位数据位数据送入送入RB8,并置,并置“1〞〞RI假设设不不满满足两个条件,接收的信息将被足两个条件,接收的信息将被丢丢弃方式方式2接收数据的接收数据的时时序如下序如下图图例例 方式方式2接收在双机通接收在双机通讯中的中的应用本例与上例相本例与上例相对应假设第第9位数据位数据为校校验位,在接收程序中作偶校位,在接收程序中作偶校验处理,理,设1组存放器区的存放器区的R0为数据数据缓冲器指冲器指针PIRI: PUSH PSWPUSH AccSETB RS0 ;;选择选择1组组存放器区存放器区CLR RS1CLR RI MOV A,SBUF ;收到数据送;收到数据送AMOV C,PJNC L1;;C==0。
跳跳L1JNB RB8,ERP ;;ERP为为出出错处错处理程序理程序 AJMP L2L1: JB RB8,ERP;;RB8==1,跳,跳ERPL2: MOV @R0,A INC R0 POP Acc POP PSWERP: ……… ;出;出错处错处理程序段理程序段 ……… RETI〔接收方〕〔接收方〕〔〔〔〔4 4 4 4〕方式〕方式〕方式〕方式3 3 3 3SM0、、SM1=11,串口,串口为为方式方式3波特率可波特率可变变的的9位异步通位异步通讯讯方式,除波特率外,方式方式,除波特率外,方式3和方式和方式2相同方式相同方式3的的时时序序见见方式方式2方式方式3波特率波特率=〔 〔2SMOD/32〕 〕×定定时时器器T1的溢出率的溢出率〔〔〔〔5 5 5 5〕多机通讯〕多机通讯〕多机通讯〕多机通讯要要保保证主机与所主机与所选择的从机的从机实现可靠地通可靠地通讯,必,必须保保证串口具有串口具有识别功能SCON中的中的SM2位位就是就是满足足这一条件而一条件而设置的置的多机通多机通讯控制位。
控制位假假设SM2=0,那么接收的第,那么接收的第9位数据不管是位数据不管是0还是是1,都,都产生生RI=1中断中断标志,志,接收到的数据装入接收到的数据装入SBUF中应用上述特性,便可用上述特性,便可实现80C51的多机通的多机通讯设多机系多机系统中有一主机和中有一主机和3个个80C51从机,如以下从机,如以下图主机的RXD与从机的与从机的TXD相相连,主机,主机TXD与从机与从机的的RXD端相端相连从机地址分从机地址分别为00H、、01H、、02H 原理:原理: 在串行口以方式在串行口以方式2〔或方式〔或方式3〕接收〕接收时,假,假设SM2=1,表示置多机通,表示置多机通讯功能位,功能位,这时有两种可能:有两种可能: 接收到的第接收到的第9位数据位数据为1时,数据装入,数据装入SBUF,并置中断,并置中断标志志RI=1向向CPU发出中断出中断请求;求; 接收到的第接收到的第9位数据位数据为0时,那么不,那么不产生中断生中断标志,信息将抛弃志,信息将抛弃80C5180C5180C5180C5180C5180C5180C5180C51多机通讯工作过程:多机通讯工作过程:〔〔1 1〕从机串行口编程为方式〕从机串行口编程为方式2 2或方式或方式3 3接收,且置接收,且置“1“1〞〞SM2SM2和和RENREN位,使从位,使从机只处于多机通讯且接收地址帧的状态。
机只处于多机通讯且接收地址帧的状态〔〔2 2〕主机先将从机地址〔即准备接收数据的从机〕发给各从机〕主机先将从机地址〔即准备接收数据的从机〕发给各从机, , 主机发出主机发出的地址信息的第的地址信息的第9 9位为位为1 1,,各从机接收到的第各从机接收到的第9 9位信息位信息RB8RB8为为1 1,且由于,且由于SM2=1SM2=1,那么置,那么置“1“1〞〞 RI RI,各,各从机响应中断,执行中断程序在中断效劳子程序中,判主机送来的地从机响应中断,执行中断程序在中断效劳子程序中,判主机送来的地址是否和本机地址相符合,相符那么该从机清址是否和本机地址相符合,相符那么该从机清“0“0〞〞SM2SM2位,准备接收主位,准备接收主机的数据或命令;假设不符,那么保持机的数据或命令;假设不符,那么保持SM2=1SM2=1状态〔〔3 3〕接着主机发送数据帧,此时各从机串行口接收到的〕接着主机发送数据帧,此时各从机串行口接收到的RB8=0RB8=0,只有地址,只有地址相符合的从机系统〔即已清相符合的从机系统〔即已清“0“0〞〞SM2SM2位的从机〕才能激活位的从机〕才能激活RIRI,从而进入,从而进入中断,在中断程序中接收主机的数据〔或命令〕;中断,在中断程序中接收主机的数据〔或命令〕; 其它的从机因其它的从机因SM2SM2==1 1,又,又RB8=0RB8=0不激活中断标志不激活中断标志RIRI,不能进入中断,接收,不能进入中断,接收的数据丧失。
的数据丧失 前图所示的多机系统是主从式,由主机控制多机之间的通讯,从机和从前图所示的多机系统是主从式,由主机控制多机之间的通讯,从机和从机的通讯只能经主机才能实现机的通讯只能经主机才能实现 波特率的制定方法波特率的制定方法方式方式0、方式、方式2的波特率是的波特率是固定固定的;的;方式方式1、方式、方式3波特率由波特率由定定时器器T1的溢出的溢出率率来确定对于定于定时器的不同工作方式,波特率的范器的不同工作方式,波特率的范围不一不一定定时器器T1产生波特率的生波特率的计算算方式方式0波特率=波特率=时钟频率率fosc×1/12,不受,不受SMOD位的位的值的影响假的影响假设fosc=12MHz,波特率,波特率为fosc/12即即1Mb/s方式方式2波特率波特率=〔〔2SMOD/64〕〕×fosc 假假设fosc=12MHz: SMOD=0 波特率波特率=187.5kb/s;; SMOD=1 波特率波特率=375kb/s方式方式1或方式或方式3时,波特率,波特率为::波特率波特率=〔〔2SMOD/64〕〕×T1的溢出率的溢出率§4.4 中断系统1. 中断、中断源及中断中断、中断源及中断优先先级的概念的概念①①中断:程序中断:程序执行行过程中,允程中,允许外部或外部或内部事件通内部事件通过硬件中断程序的硬件中断程序的执行,行,使其使其转向向为处理外部或内部事件的中理外部或内部事件的中断效断效劳程序中去;完成中断效程序中去;完成中断效劳程序程序后,后,CPU继续原来被中断的程序,原来被中断的程序,这样的的过程称程称为中断中断过程。
程②②中断源:能中断源:能产生中断的外部和内部事件生中断的外部和内部事件③③中断中断优先先级:几个中断源同:几个中断源同时申申请中断中断时,或者,或者CPU正在正在处理某外部事件理某外部事件时,,又有另一外部事件申又有另一外部事件申请中断,中断,CPU必必须区分哪个中断源更重要,从而确定区分哪个中断源更重要,从而确定优先先处理哪个中断源,理哪个中断源,这就是中断就是中断优先先级问题2. 中断的控制和操作中断的控制和操作①①中断源:中断源:* *INT0——INT0——外部中断外部中断0 0,当,当IT0= 0IT0= 0时,低电平有效;当时,低电平有效;当IT0= 1IT0= 1时,下降沿有效时,下降沿有效*INT1——*INT1——外部中断外部中断0 0,当,当IT0= 0IT0= 0时,低电平有效;当时,低电平有效;当IT0= 1IT0= 1时,下降沿有效时,下降沿有效T0T0溢出溢出————T0T0溢出中断溢出中断T1T1溢出溢出————T1T1溢出中断溢出中断RI,TI——RI,TI——串行中断串行中断②②中断中断标志志INT0、、INT1、、T0、、T1在在TCON中;中;RI/TI在在SCON中中TF1TR1TF0TR0IE1IT1IE0IT0 D7 D6 D5 D4D3D2D1D0TF0TF0:为:为T0T0的溢出标志位的溢出标志位————定时器定时器T0T0溢出时该位置溢出时该位置1 1。
假设中假设中断开放,那么进入那么进入中断效劳程序后,由硬件自动清断开放,那么进入那么进入中断效劳程序后,由硬件自动清0 0;假;假设中断禁止,那么可用于判跳,用软件清设中断禁止,那么可用于判跳,用软件清0 0;;TF1TF1:为:为T1T1的溢出标志位的溢出标志位————定时器定时器T1T1溢出时该位置溢出时该位置1 1假设中断开放,那么进入那么进入中断效劳程序后,由硬件自动清断开放,那么进入那么进入中断效劳程序后,由硬件自动清0 0;假;假设中断禁止,那么可用于判跳,用软件清设中断禁止,那么可用于判跳,用软件清0 0;;IE1IE1::IE1= 1IE1= 1时,时,*INT1*INT1向向CPUCPU申请中断申请中断IE0IE0::IE0= 1IE0= 1时,时,*INT0*INT0向向CPUCPU申请中断申请中断IT1IT1、、IT0IT0:外部中断申请触发方式控制位:外部中断申请触发方式控制位TITI::发送完一帧,硬件置位响应中断后,必须软件清发送完一帧,硬件置位响应中断后,必须软件清0 0RIRI::接收完一帧,硬件置位响应中断后,必须软件清接收完一帧,硬件置位响应中断后,必须软件清0 0③③中断允中断允许控制控制〔〔1〕〕EA:中断允:中断允许总控制位控制位0::CPU屏蔽所有的中断屏蔽所有的中断请求求(CPU关中断关中断);;1::CPU开放所有中断开放所有中断(CPU开中断开中断)。
〔〔2〕〕ES:串行口中断允:串行口中断允许位位0:禁止串行口中断;:禁止串行口中断;1:允:允许串行口中断串行口中断 〔〔3〕〕ET1:定:定时器器/计数器数器T1的溢出中断允的溢出中断允许位位0:禁止:禁止T1溢出中断;溢出中断;1:允:允许T1溢出中断溢出中断〔〔4〕〕EX1:外部中断:外部中断1中断允中断允许位位0:禁止外部中断:禁止外部中断1中断;中断;1:允:允许外部中断外部中断1中断〔〔5〕〕ET0:定:定时器器/计数器数器T0的溢出中断允的溢出中断允许位位0:禁止:禁止T0溢出中断;溢出中断;1:允:允许T0溢出中断溢出中断〔〔6〕〕EX0:外部中断:外部中断0中断允中断允许位0:禁止外部中断:禁止外部中断0中断;中断;1:允:允许外部中断外部中断0中断例例 假假设允允许片内片内2个定个定时器器/计数器中断,禁止其它中断源的中断数器中断,禁止其它中断源的中断请求编写写设置置IE的相的相应程序段程序段〔〔1〕用位操作指令来〕用位操作指令来编写如下程序段:写如下程序段:CLR ES ;禁止串行口中断;禁止串行口中断 CLR EX1 ;禁止外部中断;禁止外部中断1中断中断CLR EX0;禁止外部中断;禁止外部中断0中断中断 SETB ET0 ;允;允许定定时器器/计数器数器T0中断中断SETB ET1 ;允;允许定定时器器/计数器数器T1中断中断 SETB EA ;;CPU开中断开中断〔〔2〕用字〕用字节操作指令来操作指令来编写:写: MOV IE,,#8AH 或者用:或者用: MOV 0A8H,,#8AH ;;A8H为IE存放器字存放器字节地址地址④④中断中断优先先级两个中断两个中断优先先级,可,可实现两两级中断嵌套。
如中断嵌套可归纳为下面两条根本规那么:可归纳为下面两条根本规那么:〔〔1 1〕低优先级可被高优先级中断,反之那么不能〕低优先级可被高优先级中断,反之那么不能〔〔2 2〕同级中断不会被它的同级中断源所中断〕同级中断不会被它的同级中断源所中断中断中断优先先级存放器存放器IP,其字,其字节地址地址为B8HIP各个位的含各个位的含义义::〔 〔1〕 〕PS——串行口中断串行口中断优优先先级级控制位控制位1:高:高优优先先级级中断;中断;0:低:低优优先先级级中断〔 〔2〕 〕PT1——定定时时器器T1中断中断优优先先级级控制位控制位1:高:高优优先先级级中断;中断;0:低:低优优先先级级中断〔 〔3〕 〕PX1——外部中断外部中断1中断中断优优先先级级控制位控制位1:高:高优优先先级级中断;中断;0:低:低优优先先级级中断〔 〔4〕 〕PT0——定定时时器器T0中断中断优优先先级级控制位控制位1:高:高优优先先级级中断;中断;0:低:低优优先先级级中断〔 〔5〕 〕PX0——外部中断外部中断0中断中断优优先先级级控制位控制位1:高:高优优先先级级中断;中断;0:低:低优优先先级级中断⑤⑤外部中断触外部中断触发方式方式两种触发方式两种触发方式:电平触发电平触发方式和方式和跳沿触发跳沿触发方式。
方式Ø电平触发方式电平触发方式ØCPUCPU在每个机器周期采样到的外部中断输入线的电平在中断效劳程序返回之在每个机器周期采样到的外部中断输入线的电平在中断效劳程序返回之前,外部中断请求输入必须无效〔即变为高电平〕,否那么前,外部中断请求输入必须无效〔即变为高电平〕,否那么CPUCPU返回主程序后会返回主程序后会再次响应中断再次响应中断Ø适于外中断以低电平输入且中断效劳程序能去除外部中断请求〔即外部中断输适于外中断以低电平输入且中断效劳程序能去除外部中断请求〔即外部中断输入电平又变为高电平〕的情况入电平又变为高电平〕的情况 Ø跳沿触发方式跳沿触发方式Ø连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,那么置为低,那么置“1“1〞中断请求标志,直到〞中断请求标志,直到CPUCPU响应此中断时,该标志才清响应此中断时,该标志才清0 0这样不会丧失中断,但输入的负脉冲宽度至少保持不会丧失中断,但输入的负脉冲宽度至少保持1 1个机器周期个机器周期⑥⑥中断中断请求的撤除求的撤除1 1.定时器.定时器/ /计数器中断请求的撤消计数器中断请求的撤消 中断请求被响应后。
硬件会自动清中断请求被响应后硬件会自动清TF0TF0或或TF1,IE0TF1,IE0或或IE1IE12 2.外部中断请求的撤消.外部中断请求的撤消〔〔1 1〕跳沿方式外部中断请求的撤消是自动撤消的〕跳沿方式外部中断请求的撤消是自动撤消的〔〔2 2〕电平方式外部中断请求的撤消〕电平方式外部中断请求的撤消: :除了标志位清除了标志位清“0“0〞之外,还需在中断响应后把中断请求信号引脚从低电平强制改变〞之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,如下图为高电平,如下图3 3 3 3.串行口中断请求的撤消.串行口中断请求的撤消.串行口中断请求的撤消.串行口中断请求的撤消响应串行口的中断后,响应串行口的中断后,响应串行口的中断后,响应串行口的中断后,CPUCPUCPUCPU无法知道是接收中断还是发送中断,还需测试这两个中断标无法知道是接收中断还是发送中断,还需测试这两个中断标无法知道是接收中断还是发送中断,还需测试这两个中断标无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能去除所以串行口中断请求的志位的状态,以判定是接收操作还是发送操作,然后才能去除。
所以串行口中断请求的志位的状态,以判定是接收操作还是发送操作,然后才能去除所以串行口中断请求的志位的状态,以判定是接收操作还是发送操作,然后才能去除所以串行口中断请求的撤消只能用软件去除撤消只能用软件去除撤消只能用软件去除撤消只能用软件去除CLR TI CLR TI CLR TI CLR TI ;清;清;清;清TITITITI标志位标志位标志位标志位CLR RI CLR RI CLR RI CLR RI ;清;清;清;清RIRIRIRI标志位标志位标志位标志位3. 中断响中断响应过程和中断矢量地址程和中断矢量地址进入中断入中断→保保护现场→中断中断处理理→恢复恢复现场 →中断返回中断返回首先由硬件自首先由硬件自动生成一条生成一条长调用指令用指令: LCALL addr16(中断效中断效劳程序入口地址程序入口地址)接着就由接着就由CPU执行行该指令指令,将将PC的内容的内容压入堆入堆栈以保以保护断点,再将中断入断点,再将中断入口地址装入口地址装入PC各中断源效各中断源效劳程序的入口地址是固定的,如下所示:程序的入口地址是固定的,如下所示: 中断源中断源 入口地址入口地址 外部中断外部中断0 0003H定定时器器/计数器数器T0 000BH外部中断外部中断1 0013H定定时器器/计数器数器T1001BH串行口中断串行口中断0023H中断响应是有条件的,遇到以下三种情况之一时,中断响应被封锁:中断响应是有条件的,遇到以下三种情况之一时,中断响应被封锁: 〔〔1 1〕〕CPUCPU正在处理同级的或更高优先级的中断。
正在处理同级的或更高优先级的中断〔〔2 2〕所查询的机器周期不是所当前正在执行指令的最后一个机器周期〕所查询的机器周期不是所当前正在执行指令的最后一个机器周期换句话就是,只有在当前指令执行完毕后,才能进行中断响应换句话就是,只有在当前指令执行完毕后,才能进行中断响应〔〔3 3〕正在执行的指令是〕正在执行的指令是RETIRETI或是访问或是访问IEIE或或IPIP的指令需要再去执行完一的指令需要再去执行完一条指令,才能响应新的中断请求条指令,才能响应新的中断请求 如果存在上述三种情况之一,如果存在上述三种情况之一,CPUCPU将丢弃中断查询结果,不能对中断进行将丢弃中断查询结果,不能对中断进行响应思考与练习?思考与练习?1.1.80C5180C51的的4 4个个I/OI/O口在使用上有哪些分工和特点?试比较各口的特点?何谓分口在使用上有哪些分工和特点?试比较各口的特点?何谓分时复用总线?时复用总线?P3P3口的第二替代功能有哪些?口的第二替代功能有哪些?2.2.定时器作定时使用时,定时时间与哪些因素有关?作计数时,对外界计数频定时器作定时使用时,定时时间与哪些因素有关?作计数时,对外界计数频率有哪些限制?率有哪些限制?3.3.在在80C5180C51单片机系统中,时钟频率为单片机系统中,时钟频率为6MHz6MHz,选用定时器,选用定时器T0T0设置方式设置方式3 3,请编程,请编程实现实现P1.0P1.0口分别输出周期为口分别输出周期为1ms1ms和和400us400us的方波。
的方波4.4.80C5180C51的串行口有几种工作方式及其功能特点?如何选择和设定?的串行口有几种工作方式及其功能特点?如何选择和设定?5.5.何谓波特率、溢出率?如何计算和设置何谓波特率、溢出率?如何计算和设置80C5180C51串行通信的波特率?串行通信的波特率?6.6.某异步通信接口,其帧格式由某异步通信接口,其帧格式由1 1个起始位个起始位0 0、、7 7个数据位、个数据位、1 1个奇偶校验位和个奇偶校验位和1 1个停止位个停止位1 1组成,当该口每分钟传送组成,当该口每分钟传送18001800个字符时,计算传送波特率个字符时,计算传送波特率7.7.80C5180C51有几个中断源,各中断标志是如何产生的,又如何清零的?有几个中断源,各中断标志是如何产生的,又如何清零的?CPUCPU响应中响应中断的入口地址各是多少?断的入口地址各是多少?。












