《单元五MCS-51单片机内部资源.ppt》由会员分享,可在线阅读,更多相关《单元五MCS-51单片机内部资源.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单元五MCS-51单片机内部资源 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望学学习习目目标标:通通过过任任务务九九的的学学习习、完完成成,掌掌握握单单片片机机硬硬件件资资源源定定时时计计数数器的使用。器的使用。5.1任务九任务九单片机计数并显示单片机计数并显示任务描述任务描述:单片机:单片机对按键次数(对按键次数(99次)进次)进行计数,并在发光二极管行计数,并在发光二极管上实时显示。上实时显示。5.1.1硬件电路与工作原理硬件电路与工作原理1.硬件电路硬件电
2、路2.工作原理工作原理用手按动按键用手按动按键S3,每按键一次,每按键一次S3引脚上出现一引脚上出现一个负脉冲,单片个负脉冲,单片机计数一次,并机计数一次,并实时将按键次数实时将按键次数以以BCD码方式,码方式,在发光二极管上在发光二极管上面显示。面显示。定时计数器定时计数器定时计数器定时计数器T0T0初始化初始化初始化初始化 启动计数器启动计数器启动计数器启动计数器T0T0 开始开始开始开始 计数值送计数值送计数值送计数值送 P1P1口显示口显示口显示口显示 结束结束结束结束 5.1.2控制程序控制程序1.主程序流程主程序流程2.控制程序控制程序ORG 0000HLJMP MAINORG 0
3、030HMAIN:MOV TMOD,#06H;设定;设定T0的工作方式的工作方式MOV TH0,#00H;设定计数初值;设定计数初值MOV TL0,#00H;SETB TR0;启动计数器;启动计数器MOV P1,TL0;送显示;送显示END5.1.3 5.1.3 源程序的编辑、编译、下载源程序的编辑、编译、下载1.1.打开打开“伟福伟福”模拟仿真软件进行程序的编辑、编译。模拟仿真软件进行程序的编辑、编译。1 1、正确选择单片机类型、正确选择单片机类型87518751或或80318031 2 2、正确选择编译器伟福编译器、正确选择编译器伟福编译器 3 3、选择模拟仿真功能、选择模拟仿真功能 4
4、4、打开或新建文件进行编辑、打开或新建文件进行编辑 5 5、编译、编译2.2.打开打开“ISPISP下载软件下载软件”将目标文件下载到将目标文件下载到ISP-4ISP-4实验开发实验开发板上的板上的AT89S51AT89S51单片机芯片,观察程序运行结果。单片机芯片,观察程序运行结果。1 1、编译成功后打开下载软件、编译成功后打开下载软件 2 2、选择好单片机、选择好单片机8989S51S51并测试并测试 3 3、打开伟福、打开伟福60006000编译生成的编译生成的.BINBIN或或.HEXHEX文件文件 4 4、选择自动写完成擦除、写、读、校验过程、选择自动写完成擦除、写、读、校验过程 5
5、 5、观看运行结果、观看运行结果5.1.4相关知识相关知识1.单片机是如何进行计数的?单片机是如何进行计数的?本次任务中,单片机完成了对本次任务中,单片机完成了对S3键按键次数的累计,那键按键次数的累计,那么,单片机是如何进行计数的?么,单片机是如何进行计数的?在单片机的内部结构中,我们知道在在单片机的内部结构中,我们知道在MCS-51的单片机内的单片机内有两个有两个16位可编程的定时位可编程的定时/计数器,它们具有四种工作方式,计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当
6、的工作方式。寄存器的编程,就可方便地选择适当的工作方式。T1T1由由由由TH1TH1、TL1TL1构成,字节地址构成,字节地址构成,字节地址构成,字节地址为为为为8 8DHDH、8BH8BHT0T0由由由由TH0TH0、TL0TL0构成,字节地址构成,字节地址构成,字节地址构成,字节地址为为为为8 8CHCH、8AH8AHTCON则用于控制定时计则用于控制定时计数器数器T0和和T1的启动和停止的启动和停止计数,同时管理定时器计数,同时管理定时器T0和和T1的溢出标志等。的溢出标志等。特殊功能寄特殊功能寄存器存器TMOD控制定时计控制定时计数器的工作数器的工作方式方式D7D6D5D4D3D2D1
7、D0GATAM1M0GATAM1M0T1方式字段方式字段T0方式字段方式字段GATE门控位。门控位。GATE=0启动不受启动不受/INT0或或/INT1的控制;的控制;GATE=1启动受启动受/INT0或或/INT1的控制。的控制。C/T外部计数器外部计数器/定时器方式选择位定时器方式选择位C/T=0定时方式;定时方式;C/T=1计数方式计数方式。M1M0工作模式选择位(编程可决定四种工作模式)工作模式选择位(编程可决定四种工作模式)。C/T=0定时;定时;C/T=1对外计数。对外计数。定时:定时:fosc/12=1/(12/fosc)=1/TN个方波个方波T计数:脉冲不等间隔。计数:脉冲不等
8、间隔。波形等间隔,次数已定,时间确定波形等间隔,次数已定,时间确定即对机器周期进行计数。即对机器周期进行计数。左图定时时间为左图定时时间为N*T每个下降沿计数一次每个下降沿计数一次确认一次负跳变需两个机器周期,确认一次负跳变需两个机器周期,所以,计数频率最高为所以,计数频率最高为fosc/24。D7D6D5D4D3D2D1D0TF1TR1TF0TR0TR0定时定时/计数器计数器0运行控制位。运行控制位。软件置位,软件复位。软件置位,软件复位。TR1定时定时/计数器计数器1运行控制位。(运行控制位。(用法与用法与TR0类似)类似)TF0、TF1分别是定时、计数器分别是定时、计数器T0、T1的溢出
9、标志位。的溢出标志位。(1)定时)定时/计数器的工作方式计数器的工作方式M1M0工作模式选择位(编程可决定四种工作模式)工作模式选择位(编程可决定四种工作模式)0013位定时位定时/计数器计数器模式模式00116位定时位定时/计数器计数器模式模式1108位定时位定时/计数器(自动重装初值)计数器(自动重装初值)模式模式2211T08位定时位定时/计数计数模式模式3311T1停止工作停止工作模式模式341)工作方式)工作方式0T0的等效逻辑结构的等效逻辑结构在计数工作方式下,计数器的计数值范围是:在计数工作方式下,计数器的计数值范围是:18192(2的的13方)方)当为定时工作方式时,定时时间的
10、计算公式为:当为定时工作方式时,定时时间的计算公式为:(8192-计数初值)计数初值)晶振周期晶振周期12或或(8192-计数初值)计数初值)机器周期机器周期其时间单位与晶振周期或机器周期相同。其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为如果单片机的晶振选为6.000MHz,则最小定时时间为:,则最小定时时间为:8192(81921)1/610-612=210-6(s)=2(us)最长定时时间为:最长定时时间为:(81920)1/610-612=1638410-6(s)=16384(us)。2)工作方式)工作方式1T0的等效逻辑结构的等效逻辑结构在工作方式在工作方式1下,计数器的计
11、数值范围是:下,计数器的计数值范围是:165536(2的的16方)方)当为定时工作方式当为定时工作方式1时,定时时间的计算公式为:时,定时时间的计算公式为:(65536计数初值)计数初值)晶振周期晶振周期12或或(65536计数初值)计数初值)机器周期机器周期其时间单位与晶振周期或机器周期相同。其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为如果单片机的晶振选为6.000MHz,则最小定时时间为:,则最小定时时间为:65536(655361)1/610-612=210-6(s)=2(us)最长定时时间为:最长定时时间为:(655360)1/610-612=13107210-6(s)=1
12、31072(us)。3)工作方式)工作方式2T0的等效逻辑结构的等效逻辑结构方式方式2与方式与方式0、1的区别:的区别:工作方式工作方式0和工作方式和工作方式1的最大特点就是计数溢出后,计的最大特点就是计数溢出后,计数器为全数器为全0,因而循环定时或循环计数应用时就存在反复设,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。响计时精度。工作方式工作方式2就具有自动重装载功能,即自动加载计数初值,就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作所以也
13、有的文献称之为自动重加载工作方式。在这种工作方式中,方式中,16位计数器分为两部分,即以位计数器分为两部分,即以TL0为计数器,以为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至作为预置寄存器,初始化时把计数初值分别加载至TL0和和TH0中,当计数溢出时,不再象方式中,当计数溢出时,不再象方式0和方式和方式1那样需要那样需要“人工干预人工干预”,由软件重新赋值,而是由预置寄存器,由软件重新赋值,而是由预置寄存器TH以以硬件方法自动给计数器硬件方法自动给计数器TL0重新加载。重新加载。方式方式2在串口通讯时,常用作波特率发生器。在串口通讯时,常用作波特率发生器。4)工作方式)工作方
14、式3如果定时如果定时/计数器计数器0工作于工作方式工作于工作方式3,那么定时,那么定时/计数器计数器1的的工作方式就因为自己的一些控制位已被定时工作方式就因为自己的一些控制位已被定时/计数器计数器0借用,借用,只能工作在方式只能工作在方式0、方式、方式1或方式或方式2下,等效电路参见下图:下,等效电路参见下图:2.怎样编制计数程序?怎样编制计数程序?从前面的任务中,我们看到了,首先必须对定时计数器从前面的任务中,我们看到了,首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括以下内容。定时计数器的初始化包
15、括以下内容。(1)确定工作方式)确定工作方式对对TMOD赋值;赋值;如:任务中的如:任务中的MOV TMOD,#06H指令,设定指令,设定T0为计数为计数器工作方式。器工作方式。(2)预置定时计数器中计数的初值)预置定时计数器中计数的初值直接写入直接写入TH和和TL;如:任务中的如:任务中的MOVTH0,#00H两条指令,设定计数初两条指令,设定计数初值。值。MOVTL0,#00H(3)根据需要开放定时器)根据需要开放定时器/计数器的中断计数器的中断对对IE位赋值;位赋值;(4)启动定时器)启动定时器/计数器;计数器;如:任务中的如:任务中的SETBTR0指令指令初值的计算方法初值的计算方法X
16、=M-计数值计数值M是定时器的最大计数值。视工作方式不同而不同。是定时器的最大计数值。视工作方式不同而不同。工作方式工作方式工作方式工作方式0 0:13位定时位定时/计数方式,因此,最多可以计到计数方式,因此,最多可以计到2的的13次方,也就是次方,也就是8192次。次。工作方式工作方式工作方式工作方式1 1:16位定时位定时/计数方式,因此,最多可以计到计数方式,因此,最多可以计到2的的16次方,也就是次方,也就是65536次。次。工作方式工作方式工作方式工作方式2 2和和工作方式工作方式工作方式工作方式3 3:都是都是8位的定时位的定时/计数方式,因此,最计数方式,因此,最多可以计到多可以
17、计到2的的8次方,也说是次方,也说是256次。次。预置值计算预置值计算:用最大计数量减去需要的计数次数即可。用最大计数量减去需要的计数次数即可。通过上面的任务,我们掌握了计数程序的编制方法,下面通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。我们再看看定时程序怎样编制。首先我们看一下下面的程序段。首先我们看一下下面的程序段。MOVTMOD,#01HMOV TL0,#00HMOVTH0,#4CHSETB TR0以上程序是任务一中的定时程序段,它的初始化过程和计以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。数方式类似。小结:小结:1.定时计数器的基本结
18、构及其四种工作方式?定时计数器的基本结构及其四种工作方式?2.定时计数程序的编制方法?定时计数程序的编制方法?实验实训实验实训项目8 定时器控制流水灯课题 项目9 计数器课题要求:课外完成编程、相关硬件安装、仿真与调试思考与练习:思考与练习:5.35.55.2任务十任务十单片机流水灯控制单片机流水灯控制学习目标学习目标:通过任务十的学习、完成,掌握单片:通过任务十的学习、完成,掌握单片机硬件资源中断系统的使用。机硬件资源中断系统的使用。任务描述任务描述:单片机上电,单灯按单片机上电,单灯按1HZ频率循环,频率循环,一旦按下一旦按下P3.2所接的按键,发光二极管按双灯循环,所接的按键,发光二极管
19、按双灯循环,松开此键,单灯继续原来的循环。松开此键,单灯继续原来的循环。5.2.1硬件电路与工作原理硬件电路与工作原理1.硬件电路硬件电路2.工作原理工作原理一旦按下一旦按下P3.2所接按键后,所接按键后,P3.2口线上会出现这样两个口线上会出现这样两个变化,第一,口线上出现由变化,第一,口线上出现由高到低的变化,即出现下降高到低的变化,即出现下降沿。第二,沿。第二,P3.2按住后口线按住后口线保持低电平直到松键为止。保持低电平直到松键为止。单片机就是利用口线上的这单片机就是利用口线上的这种变化,实现上述各种状态种变化,实现上述各种状态的切换。的切换。1.程序流程图程序流程图5.2.2控制程序
20、控制程序2.控制程序控制程序ORG 0000HLJMPMAINORG 0003HLJMP INT_0ORG 001BHLJMP DELAYMAIN:SETB IT0MOV TMOD,#01HMOV TL0,#00HMOV TH0,#4CHSETB PT0SETB EASETB EX0SETB ET0MOV B,#20SETB TR0MOV A,#0FEHBEGIN:MOV P1,ACJNE B,#00,$MOV B,#20RLASJMP BEGININT_0:PUSHACCMOV A,#0FBHLOOP:MOV P1,ACJNE B,#00,$MOV B,#20RLAJNBP3.2,LOOPP
21、OPACCRETIDELAY:MOV TL0,#00HMOV TH0,#4CHDJNZ B,LOOP1LOOP1:RETIEND5.2.3源程序的编辑、编译、下载源程序的编辑、编译、下载1.1.打开打开“伟福伟福”模拟仿真软件进行程序的编辑、编译。模拟仿真软件进行程序的编辑、编译。1 1、正确选择单片机类型、正确选择单片机类型87518751或或80318031 2 2、正确选择编译器伟福编译器、正确选择编译器伟福编译器 3 3、选择模拟仿真功能、选择模拟仿真功能 4 4、打开或新建文件进行编辑、打开或新建文件进行编辑 5 5、编译、编译2.2.打开打开“ISPISP下载软件下载软件”将目标文
22、件下载到将目标文件下载到ISP-4ISP-4实验开发实验开发板上的板上的AT89S51AT89S51单片机芯片,观察程序运行结果。单片机芯片,观察程序运行结果。1 1、编译成功后打开下载软件、编译成功后打开下载软件 2 2、选择好单片机、选择好单片机8989S51S51并测试并测试 3 3、打开伟福、打开伟福60006000编译生成的编译生成的.BINBIN或或.HEXHEX文件文件 4 4、选择自动写完成擦除、写、读、校验过程、选择自动写完成擦除、写、读、校验过程 5 5、观看运行结果、观看运行结果5.2.4相关知识相关知识1.单片机如何中断原来的工作?单片机如何中断原来的工作?在本任务中当
23、按键在本任务中当按键S1按下后,原来单片机正在进行的工按下后,原来单片机正在进行的工作被打断,按键松开后单片机又恢复了原来的工作,这就作被打断,按键松开后单片机又恢复了原来的工作,这就是我们在前面所说的中断。是我们在前面所说的中断。或者说,或者说,CPU正在执行原程序时,突然,被意外事情打正在执行原程序时,突然,被意外事情打断,转去执行新程序。断,转去执行新程序。CPU执行新程序结束后,又回到原执行新程序结束后,又回到原程序中继续执行。这样的过程就叫程序中继续执行。这样的过程就叫中断中断。(1)MCS-51的中断结构的中断结构5个中断源,两个中断优先级控制个中断源,两个中断优先级控制。(2)中
24、断处理流程)中断处理流程CPU响应中断请求后,就立即转入执行中断服务程响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。理方法,但它们的处理流程一般都如下所述。1)现场保护和现场恢复)现场保护和现场恢复2)中断打开和中断关闭)中断打开和中断关闭3)中断服务)中断服务4)中断返回)中断返回(3)MCS-51的中断源的中断源8051有有5个中断源,它们是两个外中断个中断源,它们是两个外中断INT0(P3.2)和和INT1(P3.3)、两个片内定时)、两个片内定时/计数器
25、溢出中断计数器溢出中断TF0和和TF1,一个是片内串行口中断,一个是片内串行口中断TI或或RI,这几个中断源由,这几个中断源由TCON和和SCON两个特殊功能寄存器进行控制。两个特殊功能寄存器进行控制。TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0位地址位地址8FH 8EH 8DH 8CH 8BH 8AH 89H88HIE1:外部边沿触发中断外部边沿触发中断1请求标志,其功能和操作类似于请求标志,其功能和操作类似于TF0。IT1:外部中断外部中断1类型控制位,通过软件设置或清除,用于类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。控制外中
26、断的触发信号类型。IT1=1,边沿触发。,边沿触发。IT=0是是电平触发。电平触发。IE0:外部边沿触发中断外部边沿触发中断0请求标志,其功能和操作类似于请求标志,其功能和操作类似于IE1。IT0:外部中断外部中断0类型控制位,通过软件设置或清除,用于类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于控制外中断的触发信号类型。其功能和操作类似于IE1。必须注意必须注意:在不同外部中断触发方式下,标志清除方法:在不同外部中断触发方式下,标志清除方法不一样。不一样。SCOND7D6D5D4D3D2D1D0-TIRI位地址99H98HTI:MCS-51串行口的发送中断标
27、志。中断响应后,必须串行口的发送中断标志。中断响应后,必须软件清除标志。软件清除标志。RI:MCS-51串行口的接收中断标志。中断响应后,必须串行口的接收中断标志。中断响应后,必须软件清除标志。软件清除标志。(4)中断的控制)中断的控制MCS-51的对中断的开放和屏蔽是由中断允许寄存器的对中断的开放和屏蔽是由中断允许寄存器IE(A8H)控制来实现的,)控制来实现的,IE的结构格式如下。的结构格式如下。IED7D6D5D4D3D2D1D0EA-ESET1EX1ET0EX0位地址位地址AFHACH ABH AAHA9HA8HEA:中断总控制位,中断总控制位,EA=1,CPU开放中断。开放中断。EA
28、=0,CPU禁止所有中断。禁止所有中断。ES:串行口中断控制位,串行口中断控制位,ES=1允许串行口中断,允许串行口中断,ES=0,屏蔽串行口中断。屏蔽串行口中断。ET1:定时定时/计数器计数器T1中断控制位。中断控制位。ET1=1,允许,允许T1中断,中断,ET1=0,禁止,禁止T1中断。中断。EX1:外中断外中断1中断控制位,中断控制位,EX1=1,允许外中断,允许外中断1中断,中断,EX1=0,禁止外中断,禁止外中断1中断。中断。ET0:定时定时/计数器计数器T0中断控制位。中断控制位。ET1=1,允许,允许T0中断,中断,ET1=0,禁止,禁止T0中断。中断。EX0:外中断外中断0中断
29、控制位,中断控制位,EX1=1,允许外中断,允许外中断0中断,中断,EX1=0,禁止外中断,禁止外中断0中断。中断。MCS-51的中断系统有两个不可寻址的优先级状态触的中断系统有两个不可寻址的优先级状态触发器,一个指出发器,一个指出CPU是否在执行高优先级中断服务程序,是否在执行高优先级中断服务程序,另一个指出另一个指出CPU是否正在执行低优先级的中断服务程序,是否正在执行低优先级的中断服务程序,这两个中断触发器的这两个中断触发器的1状态分别屏蔽所有中断申请和同一状态分别屏蔽所有中断申请和同一级别的其他中断申请。此外,级别的其他中断申请。此外,MCS-51还有一个申请优先还有一个申请优先级寄存
30、级寄存IP,IP的格式如下,字节地址是的格式如下,字节地址是B8H。IPD7D6D5D4D3D2D1D0-PSPT1Px1PT0PX0位地址位地址BCH BBH BAH B9HB8HPS:串行口中断口优先级控制位,串行口中断口优先级控制位,PS=1,串行口中断声明,串行口中断声明为高优先级中断,为高优先级中断,PS=0,串行口定义为低优先级中断。,串行口定义为低优先级中断。PT1:定时器定时器1优先级控制位。优先级控制位。PT1=1,声明定时器,声明定时器1为高优为高优先级中断,先级中断,PT1=0定义定时器定义定时器1为低优先级中断。为低优先级中断。PX1:外中断外中断1优先级控制位。优先级
31、控制位。PT1=1,声明外中断,声明外中断1为高优为高优先级中断,先级中断,PX1=0定义外中断定义外中断1为低优先级中断。为低优先级中断。PT0:定时器定时器0优先级控制位。优先级控制位。PT1=1,声明定时器,声明定时器0为高优为高优先级中断,先级中断,PT1=0定义定时器定义定时器0为低优先级中断。为低优先级中断。PX0:外中断外中断0优先级控制位。优先级控制位。PT1=1,声明外中断,声明外中断0为高优为高优先级中断,先级中断,PX1=0定义外中断定义外中断0为低优先级中断。为低优先级中断。(5)中断的响应)中断的响应MCS-51CPU在每一个机器周期顺序检查每一个中断源,在每一个机器
32、周期顺序检查每一个中断源,在机器周期的在机器周期的S6按优先级处理所有被激活的中断请求,此时,按优先级处理所有被激活的中断请求,此时,如果如果CPU没有正在处理更高或相同优先级的中断,或者现在没有正在处理更高或相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者的机器周期不是所执行指令的最后一个机器周期,或者CPU不是正在执行不是正在执行RETI指令或访问指令或访问IE和和IP的指令(因为按的指令(因为按MCS-51中断系统的特性规定,在执行完这些指令之后,还要在继中断系统的特性规定,在执行完这些指令之后,还要在继续执行一条指令,才会响应中断),续执行一条指令,才会响应中
33、断),CPU在下一个机器周期在下一个机器周期响应激活了的最高级中断请求。响应激活了的最高级中断请求。中断响应的主要内容就是由硬件自动生成一条长调用中断响应的主要内容就是由硬件自动生成一条长调用LCALLaddr16指令,这里的指令,这里的addr16就是程序存储器中相应就是程序存储器中相应的中断区入口地址,这些中断源的服务程序入口地址如下:的中断区入口地址,这些中断源的服务程序入口地址如下:中断源中断源入口地址入口地址外中断外中断00003H定时定时/计数器计数器0000BH外中断外中断10013H定时定时/计数器计数器0001BH串行口中断串行口中断0023H生成生成LCALL指令后指令后,
34、CPU紧跟着便执行之紧跟着便执行之.首先将首先将PC(程序程序计数器计数器)的内容压入堆栈保护断点,然后把中断入口地址赋予的内容压入堆栈保护断点,然后把中断入口地址赋予PC,CPU便按新的便按新的PC地址(即中断服务程序入口地址)执地址(即中断服务程序入口地址)执行程序。行程序。2.单片机中断程序怎样编制?单片机中断程序怎样编制?从上面的任务程序中,我们来体会以下中断服务程序的编从上面的任务程序中,我们来体会以下中断服务程序的编制方法。制方法。(1)首先必须对中断系统进行初始化,包括:)首先必须对中断系统进行初始化,包括:1)开中断,即设定)开中断,即设定IE寄存器。寄存器。如上面程序中的如上
35、面程序中的SETBEA;开总中断控制位;开总中断控制位SETBEX0;开外部中断;开外部中断0SETBET0;开定时器中断;开定时器中断02)设定中断优先级,即设置)设定中断优先级,即设置IP寄存器。寄存器。如上面程序中的如上面程序中的SETBPT0;设定时器;设定时器0中断为高优先级中断为高优先级3)如果是外部中断,还必须设定中断响应方式,即设定)如果是外部中断,还必须设定中断响应方式,即设定IT0、IT1位。位。如上面程序中的如上面程序中的SETB IT0;设外部中断;设外部中断0为边沿为边沿触发方式触发方式4)如果是计数、定时中断必须先设定定时、计数的初)如果是计数、定时中断必须先设定定
36、时、计数的初始值。始值。如上面程序中的如上面程序中的MOV TL0,#00HMOV TH0,#4CH5)初始化结束后,对于定时、计数器而言,还应该记)初始化结束后,对于定时、计数器而言,还应该记得启动定时或计数,即设定得启动定时或计数,即设定TR0、TR1位。串口接位。串口接收中断,要记得允许接收位收中断,要记得允许接收位REN应该设置。应该设置。如上面程序中的如上面程序中的SETB TR0(2)中断初始化结束后,就可以编制中断服务程序,编制中)中断初始化结束后,就可以编制中断服务程序,编制中断服务程序时注意:断服务程序时注意:1)中断服务程序,第一条指令必须安排在相应的中断入口)中断服务程序
37、,第一条指令必须安排在相应的中断入口地址,并且应该是转移指令,由于中断响应时,已经由硬地址,并且应该是转移指令,由于中断响应时,已经由硬件执行了件执行了LCALL指令,中断程序断点地址已经入栈,所指令,中断程序断点地址已经入栈,所以不能再用子程序调用指令。以不能再用子程序调用指令。如任务程序中的如任务程序中的ORG 0003H;外部中断;外部中断0入口地址入口地址LJMP INT_0ORG 001BH;定时器;定时器T0中断入口地中断入口地;址;址LJMP DELAY2)由于中断的产生是随机的,所以对程序中的公共单元)由于中断的产生是随机的,所以对程序中的公共单元(其他程序中已经使用,中断程序
38、中也使用了的单元),(其他程序中已经使用,中断程序中也使用了的单元),必须在中断服务程序开始处,采用堆栈进行保护,即入必须在中断服务程序开始处,采用堆栈进行保护,即入栈。子程序返回前再出栈。栈。子程序返回前再出栈。如任务程序中的如任务程序中的PUSHACCPOPACC3)中断服务程序必须以)中断服务程序必须以RETI结束,因为结束,因为RETI指令具指令具有有两个功能:第一,将断点地址弹回两个功能:第一,将断点地址弹回PC指针,以保证能继指针,以保证能继续原来的程序,第二,能将中断优先级状态触发器清零,续原来的程序,第二,能将中断优先级状态触发器清零,以保证新的中断请求能够被相应。以保证新的中
39、断请求能够被相应。小结:小结:1.MCS-51中断系统的结构及与中断有关的寄存器是什么中断系统的结构及与中断有关的寄存器是什么?2.怎样编制中断服务程序?怎样编制中断服务程序?思考与练习:思考与练习:5.45.16实验实训:实验实训:项目10 中断方式实现流水灯控制 项目11 外部中断课题项目12 按键使用课题要求:课外完成编程、相关硬件安装、仿真与调试5.3任务十一两台单片机数据互传任务十一两台单片机数据互传学习目标学习目标:通过任务十一的学习、完成,掌握单:通过任务十一的学习、完成,掌握单片机硬件资源串行通讯接口的使用片机硬件资源串行通讯接口的使用任务描述任务描述:两台单片机之间,要求将对
40、方单片机两台单片机之间,要求将对方单片机的按键值(的按键值(S1=1)通过串口传送给另外一方,并在发)通过串口传送给另外一方,并在发光二极管显示。光二极管显示。5.3.1硬件电路与工作原理硬件电路与工作原理1.硬件电路硬件电路2.工作原理工作原理单片机扫描到单片机扫描到S1(P3.2)键合上后,即启动串行)键合上后,即启动串行发送,将发送,将01H这个数发送给对方单片机,对方单片机这个数发送给对方单片机,对方单片机收到数据后,再从收到数据后,再从P1口送出来显示。口送出来显示。5.3.2控制程序控制程序1.程序流程图程序流程图2.控制程序控制程序 ;发送程序段;发送程序段ORGORG0000H
41、0000HLJMPLJMPMAINMAINORGORG0030H0030HMAIN:MAIN:MOVMOVSCON,#40HSCON,#40H;串口初始化,设置工串口初始化,设置工 ;作方式作方式1 1MOVMOVPCON,#80HPCON,#80H;波特率加倍波特率加倍MOVMOVTMOD,#20HTMOD,#20H;定时器定时器1 1工作在方式工作在方式2 2MOVMOVTH1,#0FDHTH1,#0FDH;设置波特率为设置波特率为96009600SETBSETBTR1TR1LOOP:JBLOOP:JBP3.2,$P3.2,$;判键是否合上?判键是否合上?LCALL DELAY ;LCAL
42、L DELAY ;延时延时1010MSMS去抖去抖JBJBP3.2,LOOPP3.2,LOOPMOVMOVSBUF,#01H ;SBUF,#01H ;启动串行发送启动串行发送JNBJNBTI,$TI,$;判断是否发送完毕?判断是否发送完毕?CLRCLRTITISJMP$SJMP$DELAY:DELAY:MOVMOVR3,#100R3,#100DEL:DEL:MOVMOVR4,#50R4,#50DJNZDJNZR4,$R4,$DJNZDJNZR3,DELR3,DEL RETRETENDEND ;接收程序段;接收程序段ORGORG0000H0000HLJMPLJMPMAINMAINORGORG00
43、30H0030HMAIN:MAIN:MOVMOVSCON,#40HSCON,#40H;串口初始化,设置工串口初始化,设置工 ;作方式作方式1 1MOVMOVPCON,#80HPCON,#80H;波特率加倍波特率加倍MOVMOVTMOD,#20HTMOD,#20H;定时器定时器1 1工作在方式工作在方式2 2MOVMOVTH1,#0FDHTH1,#0FDH;设设置置波波特特率率为为96009600 SETBSETBTR1TR1SETBSETBRENREN;允许接收允许接收LOOP:LOOP:JBJBRI,$RI,$;判键是否合上?判键是否合上?CLRCLRRI RI ;延时延时1010MSMS去
44、抖去抖MOVMOVP1,SBUFP1,SBUFSJMP$SJMP$ENDEND5.3.3源程序的编辑、编译、下载源程序的编辑、编译、下载1.1.打开打开“伟福伟福”模拟仿真软件进行程序的编辑、编译。模拟仿真软件进行程序的编辑、编译。1 1、正确选择单片机类型、正确选择单片机类型87518751或或80318031 2 2、正确选择编译器伟福编译器、正确选择编译器伟福编译器 3 3、选择模拟仿真功能、选择模拟仿真功能 4 4、打开或新建文件进行编辑、打开或新建文件进行编辑 5 5、编译、编译2.2.打开打开“ISPISP下载软件下载软件”将目标文件下载到将目标文件下载到ISP-4ISP-4实验开
45、发实验开发板上的板上的AT89S51AT89S51单片机芯片,观察程序运行结果。单片机芯片,观察程序运行结果。1 1、编译成功后打开下载软件、编译成功后打开下载软件 2 2、选择好单片机、选择好单片机8989S51S51并测试并测试 3 3、打开伟福、打开伟福60006000编译生成的编译生成的.BINBIN或或.HEXHEX文件文件 4 4、选择自动写完成擦除、写、读、校验过程、选择自动写完成擦除、写、读、校验过程 5 5、观看运行结果、观看运行结果5.3.4相关知识相关知识1.单片机如何能收、发数据?单片机如何能收、发数据?MCS-51单片机内部有一个单片机内部有一个全双工的串行通信口,即
46、串全双工的串行通信口,即串行接收和发送缓冲器行接收和发送缓冲器(SBUF),),这两个在物理这两个在物理上独立的接收发送器,既可上独立的接收发送器,既可以接收数据也可以发送数据。以接收数据也可以发送数据。但接收缓冲器只能读出不能但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入,而发送缓冲器则只能写入不能读出,它们的地址写入不能读出,它们的地址为为99H。这个通信口既可以这个通信口既可以用于网络通信,亦可实现串用于网络通信,亦可实现串行异步通信,还可以构成同行异步通信,还可以构成同步移位寄存器使用。步移位寄存器使用。(1)基本概念基本概念 0010001001P1.0P1.1P1.2P1.3
47、RXDTXD单片机单片机外设外设1外设外设21111110101000【并行通信和串行通信】【并行通信和串行通信】【并行通信和串行通信】【并行通信和串行通信】并行通信:并行通信:并行通信:并行通信:数据的各位同时送出。数据的各位同时送出。数据的各位同时送出。数据的各位同时送出。串行通信:串行通信:串行通信:串行通信:数据的各位逐位送出。数据的各位逐位送出。数据的各位逐位送出。数据的各位逐位送出。1 1)数据通信的传输方式)数据通信的传输方式)数据通信的传输方式)数据通信的传输方式【单工方式】【单工方式】数据仅按一个固定方数据仅按一个固定方向传送。向传送。【半双工方式】【半双工方式】数据可实现双
48、向传数据可实现双向传送,但不能同时进行,实际的应用采送,但不能同时进行,实际的应用采用某种协议实现收用某种协议实现收/发开关转换。发开关转换。【全双工方式】【全双工方式】允许双方同时进行允许双方同时进行数据双向传送数据双向传送,但一般全双工传输方但一般全双工传输方式的线路和设备较复杂。式的线路和设备较复杂。2 2)串行数据通信两种形式)串行数据通信两种形式)串行数据通信两种形式)串行数据通信两种形式【异步通信】在这种通信方【异步通信】在这种通信方式中,接收器和发送器有各式中,接收器和发送器有各自的时钟,它们的工作是非自的时钟,它们的工作是非同步的,异步通信用一帧来同步的,异步通信用一帧来表示一
49、个字符,其内容如下:表示一个字符,其内容如下:一个起始位,仅接着是若干一个起始位,仅接着是若干个数据位个数据位。【同步通信】发送器和接【同步通信】发送器和接收器由同一个时钟源控制,收器由同一个时钟源控制,同步传输方式去掉了起始同步传输方式去掉了起始位和停止位,只在传输数位和停止位,只在传输数据块时先送出一个同步头据块时先送出一个同步头(字符)标志即可。(字符)标志即可。这两种方式各有何优劣?这两种方式各有何优劣?3 3)串行数据通信的传输速率)串行数据通信的传输速率)串行数据通信的传输速率)串行数据通信的传输速率 串行数据传输速率有两个概念,即每秒转送的位数串行数据传输速率有两个概念,即每秒转
50、送的位数bps(Bitpersecond)和每秒符号数和每秒符号数波特率(波特率(Bandrate),),在具有调制解调器的通信中,波特率与调制在具有调制解调器的通信中,波特率与调制速率有关。速率有关。举举例例:设设有有一一帧帧信信息息,1个个起起始始位位、8个个数数据据位位、1个个停停止位,传输速率为每秒止位,传输速率为每秒240个字符。求波特率。个字符。求波特率。解:解:(181)240=2400b/s=2400波特。波特。(2 2)MCS-51MCS-51的串行口和控制寄存器的串行口和控制寄存器的串行口和控制寄存器的串行口和控制寄存器 11)串行口数据缓冲器)串行口数据缓冲器)串行口数据