单片机技术及应用精选PPT.ppt
《单片机技术及应用精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机技术及应用精选PPT.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机技术及应用第1页,此课件共46页哦一、输入一、输入 输出控制输出控制 单片机I/O 口即输入/输出接口,它可对开关量进行检测、判断、处理,从而去控制开关量设备。单片机I/O 口是单片机与外界发生联系的窗口,只有了解和掌握I/O 口的特点、性能、原理,才能真正发挥I/O 口的功能,才能使单片机作为一种嵌入式微控制器,应用到各种领域,发挥单片机的功能。下面是reg51.h和reg52.h中并行I/O口的定义。使用I/O口时,不用关心I/O口的具体地址,直接使用P0、P1、P2、P3这些变量名就可以了。sfr P0=0 x80;/*8位I/O口P0*/sfr P1=0 x90;/*8位I/O口
2、P1*/sfr P2=0 xA0;/*8位I/O口P2*/sfr P3=0 xB0;/*8位I/O口P3*/在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看做状态口,这是由用户决定的。在前面我们介绍的流水灯就是一个很好的例子。这里不再赘述。下面看是有关I/O应用的例子。第2页,此课件共46页哦一、输入一、输入一、输入一、输入 输出控制输出控制输出控制输出控制【例7-1】I/O应用 设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED灯亮;否则,LED等灭。分析:设计电路图如图7.1所示。开关接在P1.4口,LED灯接在P1.0口,当开关断开时,P
3、1.4为Vcc,对应数字量为“1”,开关合上时,P1.1电平为0,对应数字量为“0”。根据LED的解法,当P1.0输出为“0”时,LED灯亮,反之输出为“1”时,灯则熄灭。用C 语言编程如下:注意:书上有误注意:书上有误第3页,此课件共46页哦一、输入一、输入一、输入一、输入 输出控制输出控制输出控制输出控制#include sbit p1_0=P10;sbit p1_4=P14;/*定义位变量*/void main()p1_0=0;/*使发光二极管灭*/for(;)p1_4=1;if(p1_4=0)p1_0=1;else p1_0=0;第4页,此课件共46页哦二二二二、中断系统、中断系统、中
4、断系统、中断系统首先有关中断的几个基本概念。1.中断 所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。1 1 1 1、中断的基本概念、中断的基本概念、中断的基本概念、中断的基本概念第5页,此课件共46页哦二二二二、中断系统、中断系统、中断系统、中断系统2.中断源 中断源即引起中断的原因,中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设置。3.中断优先级和中断的嵌套 当有多个中断源同时 向CPU申请中断时,CPU优先响应最需
5、紧急处理的中断请求,处理完毕再响应优先级别较低的,这种预先安排的响应次序就叫做中断优先级。值得一提的是,在中断系统中,高优先级的中断请求能中断正在进行的较低级的中断源处理,我们把这叫做中断的嵌套。1 1 1 1、中断的基本概念、中断的基本概念、中断的基本概念、中断的基本概念第6页,此课件共46页哦二二二二、中断系统、中断系统4.中断系统 能实现中断功能并能对中断进行管理的硬件和软件称为中断系统。中断请求是在执行程序的过程中随机发生的,中断系统要解决的问题是:(1)CPU在不断地执行指令中,是如何检测到随机发生的中断请求的?(2)如何使中断的双方(CPU方和中断源方)均能人为控制允许中断或禁止中
6、断?(3)由于中断产生的随机性,因此不可能在程序中使用调用子程序指令或转移指令,那么如何在实现正确的转移,从而更好地为该中断源服务呢?(4)中断源有多个,而CPU只有一个,当有多个中断源同时有中断请求时,用户怎么控制CPU按照自己的需要安排响应次序?(5)中断服务完毕,如何正确地返回到原断点处?1 1 1 1、中断的基本概念、中断的基本概念、中断的基本概念、中断的基本概念第7页,此课件共46页哦二二二二、中断系统、中断系统、中断系统、中断系统 51单片机有5个中断源,3个在片内,2个在片外,它们在程序存贮器中有固定的中断入口地址,当CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;
7、5个中断源有两级中断优先级,可形成中断嵌套;这6个中断源的符号、名称、产生条件及中断服务程序的入口地址如表7-1。2 2 2 2、中断源及其中断的入口地址、中断源及其中断的入口地址、中断源及其中断的入口地址、中断源及其中断的入口地址第8页,此课件共46页哦二二二二、中断系统、中断系统、中断系统、中断系统2 2 2 2、中断源在芯片引脚的定义、中断源在芯片引脚的定义、中断源在芯片引脚的定义、中断源在芯片引脚的定义8051中断系统的5个中断源为:外部中断0请求,通过P3.2引脚输入。外部中断1请求,通过P3.3引脚输入。T0 定时器/计数器0溢出中断请求。T1 定时器/计数器1溢出中断请求。TI/
8、RI 串行口中断请求。第9页,此课件共46页哦二二二二、中断系统、中断系统1.中断允许控制寄存器IE(地址0A8H)每个中断源都可以通过置位或清除中断允许寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。中断允许寄存器格式如下表7-2。3 3 3 3、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器第10页,此课件共46页哦二二二二、中断系统、中断系统2.定时器/计数器控制寄存器(TCON)(地址88H)该寄存器用于保存外部中断请求以及定时器的计数溢出。寄存器的内容及位地址表7-3如下:3
9、 3 3 3、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器第11页,此课件共46页哦二二二二、中断系统、中断系统3.串行口控制寄存器(SCON)(98H)串行口控制寄存器与中断有关的控制位共2位,如表7-4所示3 3 3 3、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器第12页,此课件共46页哦二二二二、中断系统、中断系统、中断系统、中断系统4.中断优先级寄存器IP(地址8BH)单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级。AT89S52可设置两个
10、中断优先级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。六个中断源的自然优先级(由高到低排列)为:外部中断0定时器0中断外部中断1定时器1中断串口中断定时器2中断。中断优先级由中断优先级寄存器IP(见表7-5)来设置的,IP中某位设为1,相应的中断就是高优先级,否则就是低优先级。3 3 3 3、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器、中断控制相关的寄存器第13页,此课件共46页哦二二二二、中断系统、中断系统 单片机在每个机器周期的S5P2期间,顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在再
11、下一个机器周期S1期间按优先级进行中断处理。中断得到响应后自动清除中断标志,由硬件将程序计数器PC内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。在下列三种情况之一时,CPU将封锁对中断的响应:(1)CPU正在处理一个同级或更高级别的中断请求。(2)现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。(3)当前正执行的指令是返回指令(RETI)或访问IP
12、、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。4 4 4 4、中断响应过程、中断响应过程、中断响应过程、中断响应过程第14页,此课件共46页哦二二二二、中断系统、中断系统、中断系统、中断系统具体地说,CPU响应中断的过程分为以下几个步骤:(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。(2)寻找中断入口,根据6个不一样的中断源所产生的中断,查找6个不一样的入口地址。这6个中断源的编号和
13、入口地址如表7-6所示各中断服务程序入口地址仅间隔8字节,编译器在这些地址放入无条件转移指令,跳转到服务程序的实际地址。以上工作是由计算机自动完成的,与编程者无关。(3)执行中断处理程序。(4)中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。4 4 4 4、中断响应过程、中断响应过程、中断响应过程、中断响应过程第15页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计 C51使用户能编写高效的中断服务程序,编译器在规定的中断源的矢量地址中放入无条件转移指令,使CPU响应
14、中断后自动地从矢量地址跳转到中断服务程序的实际地址,而无需用户去安排。中断服务程序定义为函数,函数的完整定义如下:返回值 函数名(参数)模式再入interrupt nusing m下面分别介绍后面3个参数:再入:通过属性关键字reentrant将函数定义为再入函数,这样函数才能才能递归调用。这是因为在C51中,普通函数(非再入的)不能递归调用,只有再入函数才可被递归调用。interrupt n:表示将函数声明为中断服务函数,n 为中断源编号,它可以是031间的整数,不允许为带运算符的表达式。n 通常取以下值:0 外部中断0;1 定时器/计数器0溢出中断2 外部中断1;3 定时器/计数器1溢出中
15、断4 串行口发送与接收中断第16页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计 using m:定义函数所使用的工作寄存器组,m的取值范围为03,可缺省,它对目标代码有如下作用:函数入口处将当前寄存器保存,使用m指定的寄存器组,函数退出时原寄存器组恢复。选不同的工作寄存器组,可方便实现寄存器组的现场保护。值得注意的是,中断服务函数不允许用于外部函数,因为它对目标代码有下面这些影响:当调用函数时,SFR中的ACC、B、DPH、DPL和PSW实际需要时应该入栈。如果不使用寄存器组切
16、换,中断函数所需的所有工作寄存器Rn都入栈。函数退出前,所有工作寄存器出栈。函数由“RETI”指令终止。【例7-2】中断应用 要求:电路原理图如图7.2所示。每按一次键,产生一次中断,P1口输出并取反,用C语言编程如下:第17页,此课件共46页哦二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计/按键中断程序#includemain()P1=0 x55;/P1口初始值 EA=1;/全局中断开 EX0=1;/外部中断0开 IT0=1;/低电平产生中断 while(1);/等待中断,也是中断的返回点void Izdcs(void
17、)interrupt 0 using 1 P1=P1;/按下触发一次,P1取反一次第18页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计【例7-3】利用中断来点亮灯。硬件电路图如图7.2,用INT1 引脚的按钮控制P1口的灯,要求每按一下按钮就申请一次中断,点亮一盏灯,依次点亮八盏灯中的一盏。采用边沿触发。程序如下:#include bit flag;/*中断申请标志*/unsigned char ledstatus;/*每一位分别对应P1口灯亮状态,用于计算*/void int
18、1_isr(void)interrupt 2/*INT1的中断服务程序*/flag=1;第19页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计void main(void)P1=0 xFF;/*初始化P1口的八盏灯,全灭*/ledstatus=0 x01;/*第一次是P1.0口的灯亮*/*初始化中断相关的寄存器*/EX1=1;/*允许 EX1 中断*/IT1=1;/*边沿触发*/EA=1;/*允许总中断*/while(1)if(flag)P1=(ledstatus);/*取反,因
19、为低电平时灯亮*/ledstatus=(ledstatus 1);/*下一次中断时灯的状态*/flag=0;/*处理完成清标志*/第20页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计【例7-4】多中断源控制灯 采用图7.3的硬件电路图,要求每按一下INT1 引脚的按钮就依次点亮八盏灯中的一盏,而每按一下INT0 就使灯的亮灭变为相反的状态,INT1 为最高优先级。均采用边沿触发。第21页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C5
20、1C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计 因为INT1 的自然优先级比INT0 低,如果我们想让INT1 为高优先级,就要设置中断优先级寄存器为0 x04。程序如下:#include unsigned char ledstatus;/*对应P1口的灯亮状态,用于计算*/void delay(void)/*延时子程序*/int x,y;for(x=0;x100;x+)for(y=0;y5000;y+);第22页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序
21、设计void int1_isr(void)interrupt 2/*INT1的中断服务程序*/P1=(ledstatus);/*取反,因为低电平时灯亮*/delay();/*延时*/ledstatus=(ledstatus 1);/*下一次中断时灯的状态*/flag1=0;/*处理完成清标志*/void int0_isr(void)interrupt 0 /*INT0的中断服务程序*/flag0=1;P1=P1;/*灯由亮变灭或由灭变亮*/delay();/*延时*/flag0=0;/*处理完成清标志*/第23页,此课件共46页哦二、中断系统二、中断系统二、中断系统二、中断系统5 5 5 5、
22、C51C51C51C51中断的程序设计中断的程序设计中断的程序设计中断的程序设计void main(void)/*初始化中断相关的寄存器*/IP=0 x04;/*设INT1为高优先级*/EX1=1;/*允许 EX1 中断*/EX0=1;/*允许 EX0 中断*/IT1=0;/*INT1低电平触发*/IT0=0;/*INT0低电平触发*/EA=1;/*允许总中断*/ledstatus=0 x01;/*按下INT1开关时,第一次是P1.0口的灯亮*/while(1)P1=0 xff;/*复位P1口的八盏灯,全灭*/第24页,此课件共46页哦三、定时三、定时三、定时三、定时/计数器计数器计数器计数器
23、1 1 1 1、定时定时定时定时/计数器的结构和工作方式计数器的结构和工作方式计数器的结构和工作方式计数器的结构和工作方式 51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。定时器T1有寄存器TH1、TL1组成,定时器T0由寄存器TH0、TL1组成,他们均为8位寄存器。图7.4是定时器T0的内部结构和控制信号。定时器T1也是一样。T0和T1由如下功能:两个定时器都有定时或事件计数的功能,由软件选择是定时工作方式还是计数工作方式 定时/计数器实际上是16位加1计数器。T0由2个8位持殊功能寄存器TH0和TL0构成,T1由2个8位持殊功能寄存TH1和TL1构成。T0和
24、T1受特殊功能寄存器TMOD和TCON控制。对于一些增强型的单片机中,增加了定时器2(T2)。T2除了具有T1,T0的计数功能外,还有16位自动重装载、捕获方式和加、减计数方式。定时器0和定时器1实质上是一个加1计数器,可以工作于定时方式,也可以工作于计数方式。两种工作方式实际都是对脉冲计数,只不过所计脉冲的来源不同。第25页,此课件共46页哦三、定时三、定时三、定时三、定时/计数器计数器计数器计数器1 1 1 1、定时定时定时定时/计数器的结构和工作方式计数器的结构和工作方式计数器的结构和工作方式计数器的结构和工作方式1.定时方式 C/T=0,开关S打向上,计数器TH0、TL0的计数脉冲来自
25、振荡器的12分频后的脉冲(即fosc/12),即对系统的机器周期计数。当开关K受控合上时,每过一个机器周期,计数器TH0,TL0加1;当计数了预设的个数,TH0,TL0回零,置位定时/计数器溢出中断标志位TF0(或TF1),产生溢出中断。例如,机器周期为2us,计满了3个机器周期即定时了6us,中断标志位TF0(或TF1)被置位。如果允许中断,产生溢出中断。由于51单片机的定时/计数器是加1计数,预定计数初值应载入负值(补码),TH0,TL0才可能加1回零。定时时计数脉冲的最高频率为f=fosc/12。第26页,此课件共46页哦三、定时三、定时三、定时三、定时/计数器计数器计数器计数器1 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 技术 应用 精选 PPT
限制150内