-
- 素材大小:
- 1.34 MB
- 素材授权:
- 免费下载
- 素材格式:
- .ppt
- 素材上传:
- ppt
- 上传时间:
- 2018-02-14
- 素材编号:
- 183494
- 素材类别:
- 仪器设备PPT
-
素材预览
这是一个关于单片机简介ppt,包括了MCS-51单片机的主要性能和特点,MCS-51单片机内部方框图,MCS-51单片机的引脚定义,MCS-51单片机的存储器的配置,震荡器、时钟电路和CPU的时序,输入输出端口,MCS-51单片机的定时/计数器,MCS-51单片机的串行接口,MCS-51的中断系统等内容,单片机原理与接口技术嵌入式微控制器的开发入门参考资料 1, 《单片机原理及其接口技术》 ----胡汉才 清华大学出版社(32元) 2,《MCS-51/96系列单片机原理及应用》 ----孙涵芳 徐爱卿 北京航空航天大学出版社(35元) 3,《MCS-51系列单片机实用接口技术》 ---- 李华北京航空航天大学出版社(40元) 4,《电子世界》 ----中国电子学会主办(期刊 6.00元/期)本课主要内容及课时安排 总讲课课时24学时 第一章:MCS-51系列单片机的基本硬件结构 (8课时) 介绍51单片机内部硬件结构(数据寄存器、程序存储器、输入输出端口、定时计数器、串行口及中断等) 第二章:MCS-51单片机的指令系统 (4课时) 51单片机的111条指令的分类、寻址方式、伪指令及使用中的注意事项 第三章:MCS-51单片机的系统扩展及应用 (12课时) 程序与数据存储器的扩展、定时/计数器的应用、串行口的应用及A/D、D/A转换器与单片机的接口和键盘扫描/动态显示接口电路,欢迎点击下载单片机简介ppt。
单片机简介ppt是由红软PPT免费下载网推荐的一款仪器设备PPT类型的PowerPoint.
单片机原理与接口技术嵌入式微控制器的开发入门参考资料 1, 《单片机原理及其接口技术》 ----胡汉才 清华大学出版社(32元) 2,《MCS-51/96系列单片机原理及应用》 ----孙涵芳 徐爱卿 北京航空航天大学出版社(35元) 3,《MCS-51系列单片机实用接口技术》 ---- 李华北京航空航天大学出版社(40元) 4,《电子世界》 ----中国电子学会主办(期刊 6.00元/期)本课主要内容及课时安排 总讲课课时24学时 第一章:MCS-51系列单片机的基本硬件结构 (8课时) 介绍51单片机内部硬件结构(数据寄存器、程序存储器、输入输出端口、定时计数器、串行口及中断等) 第二章:MCS-51单片机的指令系统 (4课时) 51单片机的111条指令的分类、寻址方式、伪指令及使用中的注意事项 第三章:MCS-51单片机的系统扩展及应用 (12课时) 程序与数据存储器的扩展、定时/计数器的应用、串行口的应用及A/D、D/A转换器与单片机的接口和键盘扫描/动态显示接口电路。 如何学习本门课程第一章是基础,只有熟知单片机的硬件结构和特点才能正确的使用单片机进行各种编程、应用和开发。 第二章的关键是要正确的理解和掌握指令的寻址方式。MCS-51单片机的111条指令,要正确理解和运用。 第三章要求要运用许多基础知识,将各种外围电路与单片机之间实现接口,因此要掌握外围电路的原理、特性和使用方法。这是进行系统设计的基础。 参加实验前认真做好预习。实验中独立地进行编程、调试。完整的掌握单片机的编程、调试过程是每一个从事单片机开发的工程师所必须跨出的第一步。 好的参考书。无论是初学入门,还是将来开发,它都是很好的“工具”和“钥匙”。硬件基本概念:微型计算机:由CPU、存储器、定时/计数器、并行输入/输出接口电路、中断控制器等大规模IC芯片安置在一个电路板上,加上键盘、显示器等构成了微型计算机的硬体部分。单片机将微型计算机系统所用的大多数IC芯片集成到一个芯片中。可以认为,单片机就是将微型计算机的CPU、存储器、I/O端口、中断控制器等全部做在一个芯片中去。美国INTEL公司生产的MCS-51单片机就是一种典型的、按照微型计算机的框架,采用大规模IC工艺制造的单片机,也是目前世界上使用量最大的一种较典型的产品。嵌入式微控制器是单片机发展的一个高级形式,也是单片机发展的必然趋势。它的设计理念不再停留在模仿微型计算机的结构,而是面向应用、加大功能、减少功耗、精简指令系统提高运行速度为出发点来设计单片机的框架。这种处理器的最大特征是不仅包含了一般单片机的所有硬件电路,还集成了放大器、比较器、A/D转换器和PWM电路等等。用它来设计一个智能化的产品,可以进一步简化外围电路,降低开发成本,甚至完成一般的单片机所不能完成的任务。美国Microchip公司生产的PIC单片机等产品就是这类产品的代表,实际上PIC单片机也称为“嵌入式微控制器”,如PIC16F877等。嵌入式计算机系统人们在工业控制、家电产品、智能仪表、汽车电子等领域进行智能化设计时,将嵌入到被控制对象(如:家电、汽车、机床等)中的、已经失去了原有的计算机形态及功能的专用计算机称之为“嵌入式计算机系统”。 在这些被控制对象中,往往要求嵌入式计算机系统要有极小的体积和极低的成本,要有极小的功耗和较高的可靠性。而这些又恰恰是通用计算机无法作到的。因此以单片机为代表的嵌入式计算机系统(也称嵌入式微控制器)极大的满足了这种市场的需求。反过来,市场的需要也迫使单片机去不断完善、发展,使其分类越来越细,品种越来越多。微型计算机与单片机在硬件结构上的比较 微型计算机 单片机第一章:MCS-51系列单片机的基本硬件结构 1.1 MCS-51单片机的主要性能和特点内部程序存储器ROM ( 以89C51为例 ):4K的存储容量;内部数据存储器RAM:256B(128B的RAM+21B的SFR) ;寄存器区:设有4个寄存器区,每一个区有R0-R7八个工作寄存器; 8位并行输入输出端口:P0、P1、P2和P3;定时/计数器:2个16位的定时/计数器;串型口: 全双工的端口(RXD:接收端,TXD发送端);中断系统:设有5个中断源;系统扩展能力:可外接64K的 ROM 和64K的 RAM;堆栈:设在RAM单元中,可以浮动既通过堆栈指针SP来确定堆栈的位置布尔处理机:配合布尔运算的指令进行各种逻辑运算;指令系统:111条指令。按功能可分为数据传送、算术运算、逻辑运算、 控制转移和布尔操作5大类。 1.2 : MCS-51单片机内部方框图 MCS-51系列芯片及制造工艺 1.3:MCS-51单片机的引脚定义 MCS-51单片机有两种封装形式: a.40脚的双列直插DIP封装; b.44脚的PLCC。 1,主电源引脚 :Vcc(+5V--- 40脚)和Vss(GND 20脚); 2,外接晶体引脚:XTAL1(19脚)、XTAL2(18脚),只要在这两脚之间接入一个晶体震荡器,单片机就可以以此晶体的频率开始工作。常用的晶体频率有0-24M,频率越高,单片机的工作速度就越快,但单片机的功耗就要增加。 3,控制或与电源复用引脚:RST/Vpd、ALE/PROG、/PSEN和Vdd RST/Vpd(9脚):在系统上电震荡器开始工作时, 在内部加在此引脚上有一个两个时钟周期的高电平使单片机复位。但为了使系统复位可靠,建议外加 一个上电复位电路,延长复位的时间。当单片机掉点时,此引脚可以接入备用电源向单片机内部的RAM供电,以防止RAM中的数据丢失。 在复位状态下:所有SFR的内容全变为“0”, 端口输出“1”。RAM内容不变。使用555电路构成的掉电保护电路掉电保护原理及过程电源监控电路对电源VCC进行监控,当VCC的电源开始下降时向单片机的/INT0或/INT1发一个中断申请信号。单片机收到中断信号,立即进入中断程序。在电源消失前: 1,迅速将一些重要的信息送RAM保存; 2,从P1.0引脚输出负脉冲,触发单稳进行电源切换。外部单稳电路进入但稳态后,由于VCC的消失,使电路无法对单稳电容充电,所以单稳电路一直处于“休眠状态”。当VCC电源恢复后,VCC对电容充电,经ΔΤ后脱离单稳态。 ALE/PROG(30脚):以一个不变的频率(系统时钟 fosc/6 )周期性输出正脉。 当单片机使用外部存储器时,此信号可作为低八位地址的锁存信。 对于EPROM型的单片机,此脚还是用于写程序时,输入编程脉冲。 /PSEN(29脚):外部程序程序存储器的选通信号。当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲。注意,访问外部数据存储器时,此信号无效。 /EA / Vdd (31脚):外部程序存储器的选择端控制端:当此脚加入“1”电平是,单片机使用内部的程序存储器;当EA加入低电平时,系统只使用外部的程序存储器。 但要特别注意:如果EA=1既使用单片机内部的程序存储器时,如果程序计数器PC的值超过0FFFH时,单片机将自动转向外部程序存储器1000H开始的单元。 对于EPROM型的单片机,此脚还是用于写程序时,加入21伏的编程电压。 4,并行输入输出端口引脚(P0-P3) P0.0 - P0.7 P0端口线(39-32脚):输出能力最强的端口,可以带动8个TTL负载。驱动一个MOS负载时,应接一个10K左右的上拉电阻。如果系统使用外接存储器时,该口还作为地址(低八位)总线和数据总线,注意在这种情况下,P0口就不能通用的I/O端口。 P1.0 - P1.7 P1端口线(1 – 8脚):负载能力为4个TTL负载。 P2.0 – P2.7 P2端口线(21 – 28脚):通用I/O端口。 除了做通用I/O端口外,当系统使用外接存储器时,该口还作为地址(高八位)总线,在这种情况下,P0口就不能通用的I/O端口。负载能力为4个TTL。 P3.0 – P3.7 P3端口线 (10 – 17脚): P3口除了做通用的I/O端口外,同时它还有第二功能),负载能力为4个TTL。 MCS-51单片机外型图(DIP封装) MCS-51单片机的逻辑符号图 1.4 MCS-51单片机的存储器的配置 1.4.0 MCS-51单片机的存储器的配置特点(89C51) 在MCS-51单片机的内部集成了4K的程序存储器和256B的数据存储器,同时还可以使用片外的程序存储器和数据存储器,其扩展能力都是64K。 从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。 从逻辑上讲(既用户编程的角度讲)51单片机的存储系统又可分为三个存储空间。既片内RAM,片外RAM和片内、外的程序存储器ROM。从物理结构上单片机系统的存储器结构图 (四个部分) 1.4.1 程序存储器(片内与片外) 程序存储器是用来存放编好的程序、常数和表格的。 在MCS-51单片机中,当引脚EA=1时,系统使用片内的4KROM来存储程序。EA=0时,系统使用片外的ROM。 无论是使用片内还是使用片外的ROM(既 EA=1或EA=0),其起始地址都是从0000H单元开始。 如果EA=1(使用片内的程序存储器时): 程序从0000H开始执行。 注意:在这种情况下,如果程序计数器的指针PC值超过0FFFH(4K)时,单片机就要自动的转向片外的ROM存储器(尽管EA=1),且从片外ROM的1000H单元开始执行程序。但单片机是无法使用片外ROM的0000H-0FFFH这4K单元。 MCS-51单片机片内、外程序存储器的使用示意图 程序存储器六个特殊的单元在程序存储器中,有六个单元是具有特定功能。编程者是不能随便使用的。 0000H单元:上电时,程序计数器PC所指向的单元 0003H单元:外部中断/INT0的入口地址; 000BH单元:定时器T0的溢出中断入口地址; 0013H单元:外部中断/INT1的入口地址; 001BH单元:定时器T1的溢出中断入口地址; 0023H单元:串行口接收、传送的中断入口地址。 1.4.2 内部数据存储器RAM 数据存储器无论在物理上还是逻辑上都分为两个地址空间,既一个内部和一个外部的数据存储空间。 访问内部数据存储单元时,使用 MOV 指令; 而访问外部数据存储器时,使用 MOVX 指令。 内部数据存储器从功能上又将256B空间分为二个不同的块: 1,低128B的RAM块; 2,高128B的SFR (Special Function Register)块。在低128B的RAM存储单元中又可划分为:工作寄存器区、可位寻址区、通用存储数据的便签区。高128B的专用寄存器区中仅仅使用了21寄存器(51系列),其它单元未定义不能使用。 MCS-51 片内 、片外 数据存储器示意图 片内RAM低 128B 字节功能分配图 片内 RAM(20H-2FH)中的位寻址区结构图 位寻址区内的地址是位地址。共有00-7FH(共128个位); 要区分字节地址和位地址这两个不同的地址概念: 从物理的角度,每一个字节地址内包含了8个位,既: D7,D6,D5,D4,D3,D2,D1,D0 在一般情况,我们提到的RAM地址都是字节地址。 从逻辑的角度讲,字节地址和位地址是靠不同类型的指令来区分的。如: MOV A, 20h ;将RAM的20单元内容送累加器A; MOV C ,20h ;将RAM位寻址区中20H位送CY中。 在这二个例子中,第一条指令为字节传送指令,所以20H为字节地址;第二个例子中的指令为位操作指令,所以20H为位地址。有关详细内容将在第二章中描述。 0区工作寄存器区结构图特殊功能寄存器SFR 特殊功能寄存器SFR (Special Function Register) 特殊用途寄存器的集合。用来设定单片机内部各个部件的工作方式,存放相关部件的状态,定时器初值寄存器,并行端口的锁存器等等。 尽管特殊功能寄存器与RAM在同一个单元中,但不能作为普通的RAM存储单元来使用。只有在编程中根据需要,进行一些特定功能的设定,或者是从中查寻相关部件的状态时,才能进行读、写操作。如中断方式的设定、定时器工作模式的设定,查询串行口发送或接收是否结束等等。 SFR(表二) 特殊功能寄存器SFR说明程序计数器PC: 用来存放下一条要执行的指令地址,长度为16位,所以寻址范围为0-65535(64K).在物理上是独立于SFR. 累加器A: 最常用的专用寄存器, 大多数的指令操作数都来自累加器A.所有的算术运算指令的运算结果都存放在A中. B寄存器:乘除法指令使用的寄存器. 数据指针DPTR: 一个16位的寄存器.由高八位DPH和低八位DPL构成.DPTR主要用来存放片内ROM的地址和片外RAM,ROM的地址.这样单片机可以通过间址的方式来访问片内ROM或片外的RAM,ROM。 例如:片外RAM的2000H单元中有一个数x,试将其送到累加器A中. MOV DPTR,#2000h ; DPTR ← 2000H MOVX A,@DPTR ; A ← x 程序状态字PSW: 8位寄存器. 表征程序执行的状态信息。 CY (PSW.7)进位标志: 在加减法运算中,累加器A的最高位A7有进位,则CY=1,否则CY=0.同理,在减法运算中,如果A7有借位,则CY=1.因此CY往往作为无符号数运算是否有溢出的标志。 AC(PSW.6):辅助进位位: 用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位).往往用来判断压缩的BCD码的运算处理. F0(PSW.5) 用户标志位: 完全由用户来定义和使用。 RS1,RS0工作寄存器区选择位:确定工作寄存器R0-R7在哪个区中. 单片机在上电或复位后RS1、RS0=00。当需要人为的修改RS1,RS0的值来改变工作寄存器区的位置。 OV(PSW.2) 溢出标志位: 判断符号数加减法运算时是否有溢出. OV的结果可以用一个算法来表示: OV=CP异或CS 其中:CP为A7的进位,CS为A6的进位OV=1表明有溢出。 P(PSW.0)奇偶标志位: 用来标志累加器A中运算后1的个数。 当P=1时,表明A中1的个数为奇数个,反之为偶数个。 【举例】:有两个数0FH和F8H,试将两数相加 MOV A,#0FH ;将立即数0f h 送累加器A ADD A,#0F 8H ;A的内容与立即数0f8h相加,结果送A 0000 1111 运算结果:A=07H,CY=1(既CP=1), + 1111 1000 CS=1,OV=0(因为CP=1,CS=1) Cy→1 0000 0111 AC=1,P=1 如何根据PSW来分析运算结果是否正确?是否有溢出? 1,若数据为无符号数。既15+248=263=107H 既CY=1,A=07H。 2,若数据为有符号数。既+15加-8=+7=07H,OV=0表明无溢出。 SP 堆栈指针:8位寄存器,用来指示堆栈的位置,可由软件修改。在MCS-51单片机的设计中,片内RAM区为堆栈的可用空间。上电或复位时,SP被初始化为07H,既堆栈底部被确定在RAM的07H单元。 堆栈操作过程: 进栈: PUSH ACC指令 (设 SP=07H), 1,SP+1送SP,此时SP=08H; 2,ACC送RAM的08H单元;出栈: POP ACC (设SP=08H); 1,将RAM 中08H单元内容送A; 2,SP-1送SP ,此时SP=07H。 并行端口P0-P3:SFR中的P0-P3实际上就是I/O端口的数据锁存器。与RAM中的任意一个单元一样,P0-P3都有自己的RAM地址:80H、90H、A0H、B0H。所以,在51单片机中的输入、输出操作实际上就是个普通的RAM单元操作一样:如 输出指令 MOV 80H,A ;将累加器中的数据送到P0口输出输入指令 MOV A,90H ;将P1口的数据输入到累加器A中 既MCS-51的指令系统中没有专用的输入、输出(IN、OUT)指令,而是把P0-P3作为普通的内存单元来使用。上面的第一个例子实际上就是MCS-51的输出指令;同理后者是MCS-51的输入指令。 串行数据缓冲器SBUF:它是专门用来存放发送或接收的数据,实际上它是两个独立的寄存器。尽管在SFR中的RAM地址只是99H,但根据指令“发送”或“接收”两种不同的操作,硬件会自动的区分,将数据送如对应的缓冲单元。 定时/计数器T0、T1:无论是定时还是计数,对于MCS-51单片机的定时/计数器来说,都是一个“计数器”在计数。这个“计数器”是由两个8位寄存器(高位和低位)构成的16位计数器,分别是TH0、TL0(T0);TH1、TL1(T1)。TH和TL中的数据直接与“定时操作”或“计数操作”有关,因此在使用定时/计数器之前,要对它进行初始化,其中就要对TH、TL赋初值。如: MOV 8CH,#01H MOV 8AH,#20H 大家试分析上面两条指令的作用。 有关SFR中其它寄存器的说明将相关的章节中作介绍。 1.4.3 外部数据存储器在片内RAM不能满足需要时,就要外接RAM。P0、P1作为外部RAM的地址和数据总线。 MCS-51对外部数据存储器的扩展能力为64KB。除了硬件电路外,系统主要是靠专门的指令来访问外部数据存储器。 如: MOV R0,#20H ;将外部RAM单元地址20H送R0寄存器 MOVX A,@R0 ;从外部RAM20H单元取数据到累加器A 这里使用了R0做间址寄存器,所以寻址范围为256KB。 同理: MOV DPTR,#2000H ;将外部 RAM 单元的地址的2000送DPTR MOVX A ,@DPTR ;从外部 RAM 2000H单元中取数据到 A 这里使用了16位的寄存器DPTR,所以寻址范围为64KB。 第一章第四节内容小结 1.4 MCS-51单片机的存储器的配置 片内4K的程序存储器ROM和256B的数据存储器RAM;片外可以扩展64K的ROM和RAM.从用户编程的角度可以将它们分为3个存储空间: 1,片内RAM; 2,片外RAM; 3,片内+片外的ROM. 1.4.1 程序存储器(片内与片外) 当引脚EA=1时,单片机上电复位后从片内ROM的0000H单元运行程序; 若引脚EA=0时,单片机上电复位后从片外ROM的0000H单元运行程序. 当引脚EA=1,且PC值大于1FFFH时,单片机就自动转到片外ROM的2000H单元继续运行程序. 无论是使用片内还是片外的ROM,有六个单元是有特定意义的: 1,0000H单元:上电,复位后的启动地址; 2,0003H单元:外部中断INT0的入口地址; 3,000BH单元:定时器T0的中断入口地址; 4,0013H单元:外部中断INT1的入口地址; 5,001BH单元:定时器T1的中断入口地址; 6,0023H单元:串行口中断的入口地址. 1.4.2 内部数据存储器RAM 内部RAM的256B分为低128B和高128B. 其中低128B中有 1,工作寄存器区;2,位寻址区;3,便笺区. 高128B中仅仅使用了小部分做特殊功能寄存器SFR用. 注意: 1,SFR不同于一般的数据RAM,它不是用于存储数据,而是用来存储和表 征单片机内部几个逻辑部件的特征,状态等重要信息. 2,在使用RAM时,要注意字节地址和位地址的概念. 3,访问内部RAM的指令为 MOV 指令. 1.4.3 外部数据存储器 在硬件具备的条件下,MCS-51单片机可以使用64KB的外部数据存储器.如果要访问外部数据存储器RAM时,只能使用间址的寻址方式. 间址寄存器有R0,R1或DPTR.前者寻址范围为256KB(00H-FFH);后者为64KB(0000H-FFFFH).使用的指令是 MOVX. 1.5 震荡器、时钟电路和CPU的时序 1.5.1 震荡器、与时钟电路: MCS-51内部有一个用于构成震荡器的高增益反相放大器.在单片机引脚的XTAL1和XTAL2分别是此放大器的输入和输出端.与作为反馈元件的晶体或陶瓷谐振器一起构成了一个自激震荡器(见右上图). 如果使用外部震荡器信号,其外来的信号加在XTAL1的引脚上(见右下图). 1.5.2 MCS-51单片机的时序时钟周期 ,T:时序中最小的时间单位.其值由外接晶体或外输入时钟来决定,其值为石英振荡器频率的倒数。 例如:在单片机外接1MH的晶体,则单片机的系统时钟的频率为1M, 时钟周期为1us. 机器周期:完成特定功能所需要的时间,在MCS-51单片机中机器周期由12个时钟周期构成,并分为6个状态(S1-S6),每个状态又分为P1和P2两拍.这样一个机器周期的12个震荡周期可以表示为: S1P1,S1P2,S2P1,S2P2,S3P1,S3P2 … S6P1,S6P2 将12个震荡周期用6个状态和2拍来替代。 指令周期:这是时序图中最大的时间单位,既执行一条指令所需要的时间.在MCS-51系统中,不同的指令它所包含的机器周期数不同.它们分别是: 1,单机器周期指令; 2,双机器周期指令; 3,四机器周期指令 我们知道:一个机器周期包含了12个震荡周期.如果我们使用一个12M的晶体震荡器,那么: 一个机器周期为1us, 两个机器周期为2us, 四个机器周期为4us. 可见一条指令的运算速度与它所包含的机器周期数有关.机器周期数越少,执行的速度就越快.在MCS-51单片机的指令系统中,除了乘、除法指令为四个机器周期外,其余都是单周期和双周期指令. 指令的字节数与指令周期之间的关系: 在MCS-51单片机的指令系统中有: 单字节; 双字节; 三字节指令。 在MCS-51的111条指令中,可以分为六种基本的时序: 1,单字节单周期指令; 4,双字节单周期指令; 2,单字节双周期指令; 5,双字节双周期指令; 3,单字节四周期指令; 6,三字节双周期指令. 单字节单周期指令的时序: 指令特点:在程序存储器ROM中仅占一个存储单元。 在ALE第一次有效(S2P1)时,从ROM中读取指令的操作码,送入指令寄存器IR中.并译码执行,在ALE第二次有效时,封锁PC加一,使第二次读数无效.可见: 1, ALE信号对应这从ROM中读指令,所以在一个机器周期中CPU可以读两次指令; 2,对于单字节单周期的指令,CPU通过译码后封死PC,实际上指令的后半部不做任何工作. 双字节单周期指令时序 指令特点:一条指令长度为两个字节,并存储在ROM相邻的两个单元中。要想完整的将这样的指令执行完,必须从ROM中读两次操作码. 在ALE第一次有效时,CPU 从ROM的n单元中取出指令的第一个字节OP1-1,并送入IR译码,通过译码CPU知道这是一条双字节指令,所以使PC加一,并在ALE第二次有效时,从ROM的n+1单元取出指令的第二个字节OP1-2送入IR进行译码,并产生对应的操作.最后在S6P2时完成本条指令的运行. 单字节双周期指令的时序指令特点:单字节, 需要两个机器周期运行.如: INC DPTR DPTR为两个8位的寄存器,加一时,必须分两步完成.既第一步 DPL加一,如果DPL加一有进位则还要进行第二步对DPH加一. 在指令周期的第一个ALE时,将ROM中的操作码OP取出, 经IR译码后得知为单字节双周期指令,所以一面执行该指令, 同时封锁后面三次ALE有效时的PC+1,在第二个机器周期的S6P2时,完成操作. 1.5.3 访问外部程序存储器ROM的时序: 设:单片机使用片外ROM,且要执行的是一条 : movc a,@a+dptr指令.(设a+dptr=2000H) 1,在S2P1时刻,P2口输出外部ROM的高八位地址A15-A8,P0口输出低八位地址A7-A0, 这时地址是由程序计数器PC提供的ROM中的指令地址; 2,在ALE的下降沿,P0口的数据(低八位地址)被锁存到74LS373中. 3,在S3P2到S4P1期间,/psen变低电平时,外部程序ROM被选中, 数据输出端的三态门被打开,被选中单元中的指令movc送到P0口上,且在S4P2时指令经P0口送至CPU的IR中. 4,CPU对指令译码后,在S4P2时进行常数地址计算并由P0、P2口输出. 5,在S5P2时,ALE将常数地址的低八位锁存 6,在S6P1时,外部ROM被再次选种打开,按照单片机所提供的16位常数地址,将外部ROM中的常数经P0口在S6P2时刻送入累加器A. 1.5.4 读外部数据存储器RAM的指令时序设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU 执行外部ROM中的指令: MOVX A,@DPTR ;将外RAM的x送A 1, 在S2P2时,ALE的第一个下降沿将P0口输出的外程序ROM的低八位地址锁存到74LS373锁存器中; 2, 在S3P2的Psen为低电平时,选中外ROM,并根据单片机P0、P2口输出的16位地址选中movx指令(单字节),通过P0口送至单片机内部IR中译码.经译码后产生下列的一系列操作; 3, CPU将DPTR中的高8位(20H)送P2口输出,低八位(00H)经P0口输出,节在S5P1时ALE第二次下降沿时,将P0口的低八位地址锁存; 4, 在第二个机器周期的S1-S3中单片机输出/RD信号(低电平),选中外部RAM,并根据单片机提供的2000H 这16位地址中取出数据x. 5, CPU在S2-S3期间,将外部RAM2000H单元送到P0口上的数据送入累加器A中. 上述过程可以分成两个指行的阶段: 1, 根据PC所指定的程序存储器的地址,将movx指令从片 外ROM中取出; 2, 经译码后将DPTR提供的外数据存储器RAM中的数据 地址取出数据,经P0口送累加器A. 在第一阶段CPU产生/Psen信号用来选通外部程序存储器ROM; 在第二阶段CPU输出/RD信号(低电平),用来选通并读取外部数据存储器RAM的数据. 1.6 输入输出端口 在MCS-51单片机的四个端口都是具有输出锁存功能的双向端口,这些锁存器的位置都在SFR中,其地址分别为:80H、90H、A0H 、B0H.出于系统的考虑,在硬件设计上对每一个端口都有不同的要求,所以每一个端口又具有不同的特点. 1.6.1 P0口: 特点:“通用数据I/O端口”和“地址、数据复用总线”端口. 1,在作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),与MOS负载连接时,需要外接一个上拉电阻。 2,作为“地址、数据复用总线”使用时,P0口首先输出外部存储器的低八位地址,然后再变为数据总线进行数据的输入或输出.此时,P0口不能再作为通用I/O口。 P0口的位结构图 1,P0口的I/O操作(通用I/O端口)在P0口作为通用I/O端口时,控制电路中的“控制”为“0”电平,多路开关MUX接入下方的锁存器的/Q端。 由于与门的一个输入端为“0”,所以它使上端的FET截止.这就是P0口在做I/O口时输出为“漏极开路”的结构原因. 输出操作:在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极.如:送“1”时,/Q=“0”,使下端的FET截止.这样出现输出极的两个FET全部截止.在这种情况下必须在端口线上外加上拉电阻.这样在上拉电阻的作用下,使端口为高电平.同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平. 输入操作(读引脚,读锁存,输入前写一) a,读引脚:读外部送到端口引脚的电平,即通常所说的输入操作(如:MOV A,P0).此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线. b,读锁存器:将进行读锁存器并进行处理,最后再写回锁存器的操作称之为: “读—修改—写”操作。在这种情况下, 读入的数据不是来自引脚,而是端口内部的锁存器的内容。 当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出,在MCS-51的指令系统中这种“读—修改—写”的操作有: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px,y 、 CLR Px,y和SET Px,y。 如: ORL P0,A ;P0 ∨ A → P0 c,输入时应先写“1”:在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入.例如:原来锁存器的状态为“0”态,既输出极的下端FET是饱和状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入.要解决的方法就是让下端的FET截止,既事先向端口写一个“1”. 请注意下面的一段程序: MOV A,#0FFH;0FFH送累加器A MOV P0,A ;向P0口“写1” MOV A,P0 ;从P0口输入数据到A 你能正确的分析出指令的操作吗? 2,P0口的总线方式(系统使用外存储器时)控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号.在这种情况下,输出极的两个FET都处于正常的工作状态 。访问外部存储器的指令movx、movc ,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。可以从:访问外部程序存储器ROM的时序; 读外部数据存储器RAM的指令时序中来清楚的观察P0口作为“地址/数据复用”总线的工作特点。在进行单片机的硬件系统的设计中,如果使用了外部存储器(或使用movx指令来访问外部接口电路)时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口的形式直接与外部连接。 P0口特点小结: 1, 做通用数据I/O端口时,输出级上端的FET处于截止状态,所以与MOS器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平; 2,在输入操作前,为了保证输入正确,必须先向端口“写1”; 3,“读引脚”与“读锁存器”是不同的两个数据通道。凡是“读—修改—写” 的操作,CPU读的都是端口锁存器中的数据。 4,为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻. 5,在总线方式时,P0口不能再做通用的I/O端口。它分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。特点:单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。 1.6.2 P1口的位结构图 1.6.3 P2口 特点: “通用数据I/O端口”和“高八位地址总线”端口 与P0口一样,P2口在系统使用外部存储器时,做高八位的地址总线。 应当注意的是:仅使用外部数据存储器时,P2口分两种情况: 1,仅仅使用256B的外部RAM时,既使用movx a,@r0指令访问外部RAM,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,所以在这种情况下,P2口仍然可以做通用I/O端口。 2,如果访问外部ROM或使用大于256BRAM时,P2口必须作为外存储器的高八位地址总线。 如:movx a,@dptr ;访问外部数据存储器 movc a,@a+dptr ;访问外部程序存储器 这里使用了16位的寄存器DPTR 1.6.4 P3口 特点:通用I/O端口、多用途端口在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。在通用I/O模式下,“替代输出功能”端为“1”电平,以保证与门打开。 1.6.5 并行端口在使用时应注意的几个问题 “拉电流”还是“灌电流”----与大电流负载的连接 (我们以美国ATMEL公司生产的AT8951为例) 1, 使用灌电流的方式与电流较大的负载直接连接时, 端口可以吸收约20mA的电流而保证端口电平不高于0.45V(见右上图)。 2,采用拉电流方式连接负载时,AT89C51所能提供“拉电流”仅仅为80μA,否则输出的高电平会急剧下降.如果我们采用右下图的方式,向端口输出一个高电平去点亮LED,会发现,端口输出的电平不是“1”而是“0”! 当然,不是所有的单片机都是这样,PIC单片机就可以提供30mA的拉电流和灌电流。单对于大多数IC电路,最好还是使用“灌电流”去推动负载。单片机与继电器等大电流负载的接口我们知道:AT89C51的端口可以吸收约20mA的电流.对于继电器等大于20mA的负载,单片机可以采用右图的接法,用一个三极管来承担负载所需的大电流. 若于负载电流易造成干扰单片机的环境,应采用右下图”光电隔离”的方式.其中: A 、 B两处没有 任何电的联系. 1.7 MCS-51单片机的定时/计数器定时/计数器工作方式与原理: 定时/计数器是一种应用非常广泛的逻辑电路,它可以完成两种不同的方式工作----“定时”、“计数”。 定时/计数器工作方式与原理: 1,定时:产生一个标准的时间间隔;如20mS,100mS或1000mS等.单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。 2,计数:对外部的事件(脉冲)进行统计.很明显外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但可以进行统计,当达到所要求的数值时,单片机进行相应的操作。 3,定时/计数器的工作原理:用一个简单的框图构造它的模型 :N位计数器构成了电路的核心。定时,计数两种方式的区别在于计数器的脉冲来源.初值寄存器是用来设定“定时/计数的具体参数” (1):何时控制启动计数? (2):如何控制定时还是计数? (3):如何控制定时/计数的长短? 1.7.1 定时/计数器的四种工作模式 1,模式0:13位计数器模式。 当计数器计满为全”1”时,再来一个计数脉冲时,就产生一个“溢出中断信号”TF1=1. 2,模式1 :既16位计数器模式(以T1为例). GATE=0时,TR1=1开始定时/计数; GATE=1时(门控方式), TR=1且INT1=1时,开始工作.此种方式主要用于测量加在INT1脚上一个正脉冲的脉宽. 3,模式2 : 自动重装初值模式由TL1做计数器,TH1做初值寄存器. 工作前TL1,TH1分别预置相同的初值.计数器TL1工作时,每当溢出产生中断的同时, 将TH1中的初值自动重装.此模式主要用于做串行口波特率发生器使用. 4,模式3 组合扩展模式在这种模式中,单片机将T0和T1重新进行“拆分、组合”. 将T0变为由TH0,TL0组成的两个独立的8位定时/计数器. 注意:模式3时T0(TH0,TL0)及T1的各自特点: 1, TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式; 2, TH0分别借用了定时器T1的TR1和TF1来为自己工作,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志; 3,由于T1缺少了启动控制信号TR1和溢出中断标志TR1,那么在模式3时,T1是如何工作? 没有溢出中断标志TF1,则T1就不用中断方式工作(实际上连查询也不行);没有启动控制信号TR1,可以让它在模式3之前就开始工作,并且让它事先设定为自动重装模式. 4, 模式3就是将单片机原有的T0,T1两个计数器变成三个独立的计数器,其中T1要事先设定为模式2(串行口的波特率发生器)并启动起来。在模式3时T0,T1的电路结构图定时/计数器4种模式比较 1.7.2 MCS-51定时/计数器的控制和状态寄存器 GATE 选通门:GATE=0时,只要TR=1,计数器就开始工作. GATE=1时,只有INT脚和TR同时为“1”时,计数器才开始工作.主要用于测量INT脚上高电平脉冲的宽度. C/T 计数、定时方式选择位:C/T=0时,计数方式.既计数器的计数脉冲来自T0或T1引脚的外部事件.C/T=1时:定时方式,计数脉冲来自内部震荡频率fosc的12分频. M1 、M0 模式选择:分别对应四种模式. 2,控制寄存器TCON (SFR地址:88H) TF1,TF0 定时器T1,T0的溢出标志:计数器溢出时硬件自动置位即TF=1,进入中断后再由硬件自动清除; TR1.TR0 计数器T1,T0的控制位:由软件置位(计数器开始工作)或清零(计数器停止工作). IE1,IE0 外部中断INT1,INT0的请求标志:当单片机检测到INT引脚上有下降沿时,IE=1申请中断.进入中断服务程序时,硬件自动清除IE标志. IT1,IT0 外中断触发类型控制:IT=1时,外中断信号的下降沿出发IE标志,IT=0时,外中断信号的低电平引发IE标志. (关于中断部分将在后面相关章节中再做详细介绍) 1.8 MCS-51单片机的串行接口第八节目录二单片机系统中的串行接口既特点串行口的设计使MCS-51单片机的功能 大大增加.可以用串行通讯的方式实现单片机与单片机或者是单片机与微机等设备之间的数据交换. 串行通讯电路简单,成本低,可以实现远距离的数据传输。缺点是传输速度低于并行数据传输。 在一个嵌入式系统中,往往采用多单片机构成一个完整的控制系统,它们之间以串行通信的方式进行数据交换---多机通讯(如图). 串行通讯应用示意图关于串行通讯中的基本概念: 字符帧:也称数据帧,它是由“起始位”“数据位” 和“停止位”构成(如下图所示)。波特率:每秒钟传输二进制数据的个数.波特率 使用的单位是:bps(bit per scond),既 位/秒。异步通讯:数据是以字符或字节为单位组成字符帧传送的.数据是从发送端一帧一帧的发送,通过传输线为接收端一帧一帧的接收.发送与接收相互独立,互不同步。 1.8.1 数据缓冲寄存器 SBUF SBUF是用来存放串行口发送和接收数据的寄存器,在SFR的地址为99H.在物理上它对应两个不同的单元:发送寄存器和接收寄存器。 CPU写SBUF就是开始发送数据(MOV SBUF,A); CPU读SBUF就是接收数据到A (MOV A,SBUF)。 由于发送SBUF与接收的SBUF是两个不同的逻辑部件,所以在硬件设计上保证了51单片机串行口是一个可以同时发送与接收的”全双工”接口。 1.8.2 串行口控制寄存器SCON 地址:98H SM0 SM1: 串行口操作模式选择位.可以确定串行口的四种模式之一(如下表); SM2 RI :完成一帧数据接收的标志,原始应清零,接收完成RI=1并申请中断; TI :完成一帧数据发送的标志,原始应清零,发送完成TI=1同时申请中断; RB8:在9位数据传送的模式2、3时,接收到的第9位数据; TB8:在9位数据传送的模式2、3时,将要发送的第9位数据; REN:允许接收位,REN=1时允许接收.由软件置位或清零; SM2 :多机通信使能位. 1,模式0、1时: SM2不用,应设为0。时RI才能被正常激活并引发中断; 2,模式2、3时: 若SM2=0时,无论RB8如何,RI都能被激活(RI=1)。 但是RI=1并不能引发中断!所以只能用查询的方式接收 数据。 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活;若SM2=1且RB8=1时,RI才能被激活=1并引发中断。如何使用RI,TI标志(中断和查询) CPU与串行口之间不是同步工作的,两者之间的数据交换通过SBUF,何时交换必须借助于标志信号进行。 RI(SCON.0):接收完一帧数据的标志。 如果系统中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。 MOV A,SBUF 。也可以使用查询的方式对RI进行检测,如果RI=1则执行: MOV A,SBUF 。 TI (SCON.1):发送完一帧数据标志。 如果系统中断是开放的,则TI会自动引发中断。用户可以通过中断服务程序向SBUF输送下一个数据: MOVSBUF, A 。也可以使用查询的方式对TI进行检测,如果TI=1则执行: MOV SBUF , A 。使用查询RI、TI标志方式进行发送与接收N个数据 1.8.3 串行口的模式0 特点:串行口做同步移位寄存器用,其波特率为 fosc/12.在这种模式下RXD(P3.0)做数据口;TXD(P3.1)做移位脉冲输出端.在移位过程中,先移数据的低位.注意:移位脉冲的频率就是模式0的波特率. 模式0的主要功能是:可以使用一个串行口来扩展出8位、16位等并行口,且理论上可以扩展n*8位的并行口. 模式0 电路框图串行口模式0的时序信号(发送)模式0的工作原理(发送)单片机执行mov sbuf,a指令的S6P2时,出现“写sbuf ”信号: 1,打开总线三态门使累加器中的数据送到SBUF中; 2,使D型触发器置一, 触发器的输出构成了SBUF的第9位; 3,启动“发送控制器”开始发送。在“写SBUF信号”有效相隔一个机器周期后,“发送控制器”的SEND=1使RXD,TXD端的与门打开,使数据和移位脉冲输出。在TXD端,每一个机器周期中发出一个同步脉冲,同时在SEND=1期间,每一个S6P2时控制器发出一个SHIFT移位信号将SBUF中的数据右移一次(同时D型触发器清零)。这样:每当SBUF中的数据右移(发送)一位时,SBUF的左端便移入1个“0”。当SBIUF中的数据右移7次后,检零器的7个输入端全为“0”,向控制器发出一个信号:通知控制器作最后一次移位,然后控制器的SEND=0停止发送数据和同步信号,TI被置位。模式0的工作原理(接收) 在满足REN=1且RI=0的条件下(实际上是一条写SCON指令),就会引发一次接收过程。在下一个机器周期的S6P2时刻,接收控制器将11111110写入移位寄存器。在下一个周期的S1P1使RECEIVE=1从而使TXD端的与门打开。 同发送的过程类似:在后面的每一个机器周期从TXD端发出同步移位脉冲,在每一个S5P2时刻对RXD线进行采样。在S6P2时刻,控制器对寄存器进行移位,每左移一次右端就补进一位由RXD端输入的数据。 当从RXD端输入7位数据时,开始最右端的“0”被移到寄存器的最左端,寄存器向控制器发信号,通知控制器做最后一次接收,并将完整的8位数据装入SBUF中。最后清RECEIVE,SCON中的RI置位,向CPU发中断申请。模式0的时序信号(接收) 1.8.4串行口模式1 特点:10位传输格式 (1个起始位+8个数据位+1个停止位); 波特率:可变波特率,由定时器T1的溢出率来确定,所以在此种模式下,首先要对T1进行初始化以确定串行口的波特率;发送操作:在TI=0,执行mov sbuf,a 指令后从TXD端开始发送数据。当发送完8位数据后自动的添加一个高电平的停止位,并将TI置位。接收操作:在REN=1且RI=0的条件下进行。串行口的接收控制器对RXD线进行采样,其采样频率是接收时钟的16倍。当连续8次采集到RXD线上为低电平时,检测电路便认定RXD线上有了“起始位”,在此后,便开始在每次第7 、 8 、9三个脉冲时进行RXD采样,采取“三中取二”的原则来确定接收的数据(如图所示)。当接收到停止位时,必须满足:RI=0且SM2=0,才能把接收的数据送到SBUF中(停止位送SCON的RB8中,并使RI=1),否则数据丢失。串行口模式1时数据帧格式及接收采样示意图 1.8.5 串行口模式2、3 特点:模式2、3都是11位传输格式 (1个起始位+9个数据位+1个停止位),不同处是波特率; 波特率: 模式2:固定为fosc/64或fosc/32(具体由PCON中的 SMOD位来确定)。 模式3:由定时器T1的溢出波特率来确定。模式2、3的发送过程类似于模式1,唯一的区别在于数据帧中数据是9位。这样,在发送一帧数据时,CPU除了要把8位数据送SBUF外(mov sbuf,a),还要把第9位数据送到SCON.TB8中 set scon.tb8 或:clr scon.tb8 但注意要先设定好scon.tb8,然后再向SBUF送数,因为mov sbuf,a指令一执行,串行口就开始发送。 例如: set scon.tb8 或: clr scon.tb8 mov sbuf,a mov sbuf,a 模式2、3的接收过程类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位(“1”);而模式2、3时,RB8是接收到的第9位。 在模式1,接收操作只有在RI=0,且REN=1时数据才能接收。而模式2、3的接收条件是: a,RI=0且SM2=0 或 b, RI=0且RB8=1。 只有满足a或满足b的条件时,接收到的数据才能送到SBUF,并使RI=1激活,否则接收无效且RI不能置位。 RI=0是保证SBUF空(每次取走数据时通过软件复位RI,如果没有取走数据则RI=1),以保证接收到的数据不丢失。后一个条件是由SM2和RB8共同来控制接收。 令SM2=0可以保证RB8正确的接收奇偶校验位; 令SM2=1可以利用接收到的RB8控制接收是否有效。 即 RB8=1时,接收有效。RB8=0时,接收无效。串行口模式2、3时数据帧格式发送时:将SCON中的TB8作为第9位数据发送;接收时:将接收来的第9位送到SCON中的RB8中。 1.8.5.1 模式2、3的应用之一 带奇偶校验位的数据传送奇偶校验:接收到的第9位数据是发送方送来的奇偶校验位。 在这种情况下,必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8是根据8位数据进行奇偶校验的结果来设定,有时为“1”,而有时为“0”)。 当接收到数据后,用指令对 PSW.P位进行判断。将此结果与RB8中的数据进行“异或”,看结果是否与约定的相符合。 例如:发送、接收双方约定为奇校验: 若发送的数据和第9位分别是:00011010 、0 (第9位数据是发送方用根据奇校验自动生成的) 若接收后SBUF送A的数据是:00011010,这时,PSW.P=1,且 RB8=0 。则进行: P异或RB8=1, 满足约定条件既接收正确。反之若SBUF送A=00011011,使PSW.P=0,且RB8=0 。 P异或RB8=0 表明不符合约定条件,接收出错。 总之,使用模式2、3发送带“奇偶校验”位的数据时: 1,一定要使SM2=0。 2,又因为SM2=0,所以尽管RI能够激活,但不会引发中断,所以只能采用“查询”的方式接收数据。利用模式2,3进行带奇校验的串行通讯程序流程图 1.8.5.2 模式2、3的应用之二:多机通讯在传统的多路数据采集系统中,存在着许多缺点。使它在采集的点数和引线长度都受到限制。 采用多CPU的方式可以构成一个多机通讯系统。如在一个生产线上要对许多参数(温度、压力、流量等)进行采集检测,并且要对这些数据进行处理、显示、打印或保存。 我们可以将这些单片机进行分工:选一台单片机作为主机,专门负责接收其他单片机传回的数据,并进行数据的后期处理如:保存、显示等。而其它的单片机则完成对传感器的信号检测、A/D转换,最后将数据上传给主机。我们称这些单片机为从机。传统方式的多路数据采集系统采用“智能传感器”组成的多路数据采集系统主从式多机通讯原理主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯; 主机和从机的设置为模式2或3,其中主机的SM2=0,从机的SM2=1。 主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1”,且被从机接收为RB8),所以,所有的从机都能接收到主机发出的地址码(因为:RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0,而未被选中的从机仍保持SM2=1。 当主机找到从机后,开始向从机发数据、命令,其特征为第9位=0。由于从机SM2=0,所以尽管接收到的RB8=0,同样可以激活从机的RI,使其以查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其SM2=1,主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息。多机通讯原理在模式2、3中, 1,SM2=0时:RB8=1或RB8=0 都可以激活RI, 但不能引发中断。 2,SM2=1时:RB8=1才能激活RI并引发中断。 而RB8=0时,RI不能激活。小 结 1,主机的SM2=0,从机的SM2=1; 2,主机向从机发送的地址码第9位为“1”; 3,所有的从机SM2=1、RB8=1、RI=0,接收主机的地址进入中断服务程序。在程序中比较、确认是否为被寻从机。 4,被寻从机将SM2清零,以保证能以查询的方式接收主机的数据、命令。同时向主机返回地址供主机核实。没有被选种的从机保持SM2=1并退出服务程序。 5,被寻中的从机以查询RI的方式与主机之间进行数据交换(注意:因为SM2=0时,RI虽然能被激活,但不能引发中断),完成后,重新将SM2置1。 1.8.5.3 模式2、3使用时要注意的问题在模式2、3中,可以实现较为特殊的通讯方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式。 1.8.6 波特率及定时器T1的设定在串行口的异步通讯中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同(如图所示)。在这种条件下使通讯正确的条件是:1,要有相同的字符帧格式;2,要有相同的波特率。 MCS-51单片机的串行口四种模式其波特率各不相同。其中模式1、3的波特率就是由定时器T1的溢出率来决定的(另外PCON中的SMOD位起着波特率加倍的作用)。如何设定波特率?在编制串行口通讯(模式1、3)程序时,在程序的初始化中,必须进行波特率的设定,既对T1进行初始化。 T1初始化的主要任务就是: 1,设置T1的工作方式为定时(C/T=0); 工作模式为模式2 :自动重装。 2,计算定时常数并分别送给TH1、TL1。 波特率计算公式:B = T1溢出率:=(计数速率)/ [ 256-(TH1)] = (fosc/12) / [ 256-(TH1)] 波特率、初值TC计算公式 B= fosc / [ 96 X(256-TH)]; (SMOD=1时)或 B= fosc / [ 192 X(256-TH)]; (SMOD=0时) 其中:fosc为系统时钟频率,TH为定时器T1的初值。所以可以推出: TH=256-[ fosc/(384XB)] ; (SMOD=0时)或: TH=256-[ fosc/(192XB)] ; (SMOD=1时)【举例】设系统时钟为11.059MHz,要求波特率为1200Hz,求TH。【解】用上述公式TH=256-[11.059MHz /(384X1200)]=232 =0E8H 设:SMOD=0 参考资料: « PC机及单片机数据通信技术 »李朝青 ---------北京航空航天大学出版社 28.00 1.9 MCS-51的中断系统中断: CPU中止正在运行的程序,转向为外部设备服务的过程称为中断。当完成中断后,CPU再回到原来的“断点”继续原来的程序。中断源是由外部产生,具有随机性、不可知性。 MCS-51的中断系统结构图 MCS-51单片机共有5个中断源(如图所示)。 1.9.1中断允许寄存器IE(0A8H) EA:总允许位。EA=0:禁止一切中断;EA=1中断开放。 ES:串行口中断允许位。ES=1:允许RI、TI引发中断; ES=0:禁止中断。 ET1、ET0:定时器T1、T0允许位。ET=1允许,=0禁止。 EX1、EX0:外中断 int1、int0允许位。ET =1允许,=0禁止。 1.9.2中断优先级寄存器IP(0B8H) PS:串行口中断优先级设定位; PT1、PT0:定时器T1、T0中断优先级设定位; PX1、PX0:外中断 int1、0中断优先级设定位; 1.9.3 优先级结构由于IP寄存器的设定,将5个中断源分为两个级别。中断的发生将遵循下面的3条基本原则: 1,低级中断在响应执行中,可以被高级中断所中断,反之则不能。 2,一个中断(不论是什么优先级)一旦得到响应,与它同级的中断则不能在中断它。 3,当CPU同时收到几个同一级别的中断要求时,CPU响应哪个中断源取决于硬件的查询顺序(见图)。 如何改变中断源的优先级顺序从中断系统的硬件结构图可以清楚地看出同一级别中5个中断源的查询顺序。很明显,要改变这种顺序只能通过IP的设置。 如:要想将串行口的级别设为最高时,将IP中的PS置一。 既使用指令:setb ip.ps 或 mov 0b8h,#10h 完成对IP设置。 1.9.4 中断查询与响应协议在每一个机器周期中,所有的中断源都要按照其顺序检查一遍,到S6状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的S1状态,只要不受阻断,就开始响应高级中断。 如果发生下列情况,中断将被阻止: 1,同级或高级中断正在执行时; 2,当前的机器周期不是指令的最后一个机器周期; 3,CPU正在执行的指令是RETI或访问IE、IP寄存器时,CPU是不会响应中断,而且要等到该指令的下一条指令执行完后中断才能响应。 CPU查询到某一中断源后,使相应的“优先级激活”触发器置位用以阻断同级或低级中断。在硬件的控制下,程序自动转向对应的矢量单元,执行其服务程序。 CPU响应中断时,将当时程序计数器PC的内容进栈,并将相应的中断矢量装入PC中,使CPU转向对应的服务程序。中断服务程序的最后一条指令是RETI,指令将清除“优先级激活触发器”,然后从堆栈中弹出断点地址并装入到PC中。矢量入口的指令应当是转移指令。 1.9.5 外部中断在MCS-51引脚上有:INT0、INT1两个外部的中断输入,作为外部事件的触发信号。CPU在每一个机器周期对它们进行一次检测。系统设定了两种触发方式:边沿触发(下降沿)和电平触发(低电平)。具体由TCON中的IT0、IT1来确定。 1,在边沿触发方式中,在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则TCON中的标志IE0或IE1置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,否则信号将可能漏检。 2,如果采用“电平”触发方式,CPU采集到INT0或INT1的引脚为低电平时将激活标志IE0或IE1。所以在这种触发方式中,外部的低电平至少应保留一个机器周期。 1.9.6 中断请求的撤除以外中断电平触发为例:当CPU响应该中断并进入到服务程序后,在执行RETI返回主程序前,必须将外部的低电平撤掉,否则,当CPU返回主程序后,会因为外部的低电平信号而再次进入中断,使程序无法正常运行。 同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚在响应某一中断时,其中断请求(标志)是否要撤除,如何撤除等问题。 MCS-51的中断请求的撤除方法撤除外部电平请求信号的方案 1.9.7 中断响应时间(以外部中断INTx为例)每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。 1,最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。 2,最长时间:如果中断信号发生在前面所说的3种情况时, 响应时间就要变长: 第1种情况:响应时间取决于高级中断的执行时间; 第2种情况:指当前CPU执行的指令是多周期指令,如乘除 法指令(4个周期),最坏情况,还要等3个周 期。这样响应周期变为3+3=6个周期; 第3种情况:CPU当前执行的指令是RETI或访问IE、IP寄存器 时,本指令(1个周期)没有响应,且下一条指 令执行完后才能响应,这样附加的等待时间最长 不会超过5个周期(1+4)。整个响应为5+3=8个 周期。这样,如果不考虑第1种情况,整个中断 响应的时间范围应当是: 3~8个机器周期。 中断响应时间的不确定,在大多数场合下可能是无关紧要的,但是对于一些较特殊的场合下,这种响应时间的不确定往往会带来一些问题。 如:利用中断来编制一个时钟程序时,便不可避免的带来误差,所以是要提醒大家注意。在程序中可以使用一些算法来减少这种误差(参考清华的资料) 。 相对比较美国mircchip公司的PIC单片机由于使用单字节、单周期指令,使中断响应时间固定,所以从根本上消除了这种的情况。 (本章结束)
单片机中断ppt:这是单片机中断ppt,包括了中断计数流水灯电路,问题的提出——中断的概念,中断响应过程,MCS-51中断系统结构,3级中断控制开关设置,中断计数流水灯硬件电路设计等内容,欢迎点击下载。
c单片机编程ppt:这是c单片机编程ppt,包括了C51与标准C的差异,C语言与汇编语言,存储模式,使用C51扩展关键字等内容,欢迎点击下载。
单片机毕业设计ppt模板:这是单片机毕业设计ppt模板,包括了课题完成情况,研究背景及意义,课题设计情况,课题设计过程,存在的不足,致谢等内容,欢迎点击下载。