资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,*,吉林大学通信工程学院,Page,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,以,MCS-51,单片机为例讲解,单片机原理及应用,课程安排,第一章,MCS-51,单片机概述,第二章,MCS-51,单片机的硬件结构,第三章 单片机,C,语言程序设计,第四章,MCS-51,单片机的中断系统,第五章,MCS-51,单片机的定时器,/,计数器,第六章,MCS-51,单片机的串行通信,第七章,MCS-51,单片机的外围器件及扩展,2024/11/18,2,吉林大学通信工程学院,2024/11/18,吉林大学通信工程学院,Page,3,第三章 单片机,C,语言程序设计,3.1 C,语言与,MCS-51,单片机,3.2 C51,的数据类型与运算,3.3 C51,流程控制语句,3.4 C51,构造数据类型,3.5 C51,函数,3.6,模块化程序设计,2024/11/18,吉林大学通信工程学院,Page,4,3.3 C51,流程控制语句,3,种基本结构组成:顺序结构、选择结构、循环结构。,1,、顺序结构 顺序结构是最基本、最简单的结构,在这种结构中,程序由低地址到高地址依次执行,如图给出顺序结构流程图,程序先执行,A,操作,然后再执行,B,操作。,A,B,2024/11/18,吉林大学通信工程学院,Page,5,2,、选择结构,选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支。,条件,P,语句,A,语句,B,成立,不成立,2024/11/18,吉林大学通信工程学院,Page,6,3,、循环结构 程序中的语句按先后顺序逐条执行。,条件,P,语句,A,成立,不成立,1),当(,while,)型循环,该循环的特点是:当条件满足时,就执行循环体,否则就退出循环结构。,2024/11/18,吉林大学通信工程学院,Page,7,2),直到,(do while),型循环,该循环的特点是:先执行循环体,再判断循环条件,条件不满足时,就退出循环结构。,条件,P,语句,A,成立,不成立,2024/11/18,吉林大学通信工程学院,Page,8,break,语句和,continue,语句,1,、,break,语句,break,语句可以用在循环语句和,switch,语句中。在循环语句中用来结束内部循环;在,switch,语句中用来跳出,switch,语句。,2,、,continue,语句,continue,语句的作用是结束本次循环,忽略,continue,后面的语句,进行下一次循环判定。,2024/11/18,吉林大学通信工程学院,Page,9,3.4 C51,构造数据类型,数组,1,、一维数组和二维数组,2,、字符数组,指针,结构,共用体,枚举,2024/11/18,吉林大学通信工程学院,Page,10,一、数组,将一组排列有序的、个数有限的变量作为一个整体,用一个统一的名字来表示,则这些有序变量的全体称为数组;或者说,数组是用一个名字代表顺序排列的一组数,顺序号就是下标变量的值。,例如:,int a =1, 2, 3, 4, 5 ;,int a5=1, 2, 3, 4, 5 ;,int a 1010=0,2024/11/18,吉林大学通信工程学院,Page,11,二、指针,指针,就是变量的地址。与此对应,在,C,语言中使用一类专门的变量,指针变量,来存放变量的地址。也就是说,,指针变量是存放地址数据的变量。,1,)定义一个指针变量,如何定义一个指针变量,形式:基类型 *指针变量名,例如:,float *pointer_3;,char *pointer_4;,2024/11/18,吉林大学通信工程学院,Page,12,2,)指针变量的引用,指针变量中只能存放地址(指针)。,3,)指针变量作为函数参数,函数的参数可以是整型、实型、字符型等数据,还可以是指针类型的。它的作用是将一个变量的地址传送到另一个函数中。,2024/11/18,吉林大学通信工程学院,Page,13,3.5 C51,函数,函数定义的一般格式如下:,函数类型 函数名(形式参数表),reentrantinterrupt musing n,形式参数说明,局部变量定义,函数体,前面部件称为函数的首部,后面称为函数的尾部。,2024/11/18,吉林大学通信工程学院,Page,14,关于重入函数,注意以下几点:,(,1,)用,reentrant,修饰的重入函数被调用时,实参表内不允许使用,bit,类型的参数。函数体内也不允许存在任何关于位变量的操作,更不能返回,bit,类型的值。,(,2,)编译时,系统为重入函数在内部或外部存储器中建立一个模拟堆栈区,称为重入栈。重入函数的局部变量及参数被放在重入栈中,使重入函数可以实现递归调用。,(,3,)在参数的传递上,实际参数可以传递给间接调用的重入函数。无重入属性的间接调用函数不能包含调用参数,但是可以使用定义的全局变量来进行参数传递。,2024/11/18,吉林大学通信工程学院,Page,15,在,interrupt,修饰符中,,m,的取值为,0-31,,对应的中断情况如下:,0,外部中断,0,1,定时,/,计数器,T0,2,外部中断,1,3,定时,/,计数器,T1,4,串行口中断,5,定时,/,计数器,T2,其它值预留。,2024/11/18,吉林大学通信工程学院,Page,16,对于,using n,修饰符的使用,注意以下几点:,(,1,)加入,using n,后,,C51,在编译时自动的在函数的开始处和结束处加入以下指令。,PUSH PSW,;标志寄存器入栈,MOV PSW,,,#,与寄存器组号相关的常量,POP PSW,;标志寄存器出栈,(,2,),using n,修饰符不能用于有返回值的函数,因为,C51,函数的返回值是放在寄存器中的。如寄存器组改变了,返回值就会出错。,2024/11/18,吉林大学通信工程学院,Page,17,3.6,模块化程序设计,一、基本思想:,将一个大的程序按功能分割成一些小模块。,特点:,.,各模块相对独立、功能单一、结构清晰、接口简单;,.,控制了程序设计的复杂性;,.,提高元件的可靠性;,.,缩短开发周期、可多人合作开发;,.,避免程序开发的重复劳动;,.,易于查错、维护和功能扩充。,开发方法:自上向下,逐步分解,分而治之,2024/11/18,吉林大学通信工程学院,Page,18,二、,C51,程序结构,C,程序,源程序文件1,源程序文件,2,源程序文件,n,预编译命令,函数1,函数,n,说明部分,执行部分,2024/11/18,吉林大学通信工程学院,Page,19,三、模块化程序开发过程,2024/11/18,吉林大学通信工程学院,Page,20,第四章,MCS-51,单片机的中断系统,4.1,中断概述,4.2 MCS-51,单片机的中断系统,4.3,中断系统的编程,4.4 MCS-51,扩展外部中断请求输入口,2024/11/18,吉林大学通信工程学院,Page,21,4.1,中断概述,一、什么是中断,CPU,正在执行程序时,单片机外部或内部发生的某一,事件,,请求,CPU,迅速去处理。,CPU,暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为,中断,。,CPU,处理事件的过程,称为,CPU,的,中断响应过程。,对事件的整个处理过程,称为,中断处理,(,或中断服务,),。,2024/11/18,吉林大学通信工程学院,Page,22,中断响应的过程,2024/11/18,吉林大学通信工程学院,Page,23,二、为什么要设置中断,1,、提高,CPU,的工作效率,2,、具有实时处理能力,3,、具有故障处理能力,4,、实现分时操作,中断功能的强弱是衡量计算机性能的重要指标。,2024/11/18,吉林大学通信工程学院,Page,24,三、中断的相关概念,1,、中断源,中断源是指引起中断的设备或事件,或发出中断请求的源头。,2,、中断系统,中断系统是指能够实现中断功能的硬件电路和软件程序。,3,、中断优先级与中断嵌套,为了避免在同一瞬间因响应若干个中断源的中断请求而带来的混乱,必须给每个中断源的中断请求赋予一个特定的中断优先级,以便,CPU,按照中断优先级的高低来响应中断请求。,2024/11/18,吉林大学通信工程学院,Page,25,四、中断的响应过程,CPU,响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的一般处理流程如下:,(,1,)保护断点,(,2,)寻找中断源,(,3,)中断处理,(,4,)中断返回,2024/11/18,吉林大学通信工程学院,Page,26,1,、,实现优先权排队,计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,也可通过软件查询来实现。,2,、,实现中断嵌套,在某一瞬间,,CPU,因响应某一中断源的中断请求而正在执行它的中断服务程序时,若又有一优先级更高的中断源向,CPU,发出中断请求,且,CPU,的中断是开放的,则,CPU,可以把正在执行的中断服务程序暂停下来,转而响应和处理优先级更高的中断源的中断请求,等处理完再转回来,继续执行原来的中断服务程序,这就是中断嵌套。,2024/11/18,吉林大学通信工程学院,Page,27,中断嵌套执行流程,2024/11/18,吉林大学通信工程学院,Page,28,4.2 MCS-51,的中断系统,MCS-51,提供了,5,个中断源,两个中断优先级控制,可实现两个中断服务嵌套。当,CPU,支持中断屏蔽指令后,可将一部分或所有中断关断,只有打开相应的中断控制位,之后,方可接收响应的可屏蔽中断请求。,可以通过程序设置中断的允许或屏蔽,设置中断的优先级。,2024/11/18,吉林大学通信工程学院,Page,29,一、,MCS-51,的中断源,2024/11/18,吉林大学通信工程学院,Page,30,1,、中断控制,定时器控制寄存器,串口控制寄存器,2024/11/18,吉林大学通信工程学院,Page,31,中断允许控制寄存器,中断优先级控制寄存器,2024/11/18,吉林大学通信工程学院,Page,32,2,、响应中断的条件,一个中断请求被响应,需满足以下必要条件:,(1),IE,寄存器中的中断总允许位,EA=1。,(2),该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。,(3)该中断源的中断允许位=1,即该中断没有被屏蔽。,(4)无同级或更高级中断正在被服务。,2024/11/18,吉林大学通信工程学院,Page,33,3,、,中断的入口,2024/11/18,吉林大学通信工程学院,Page,34,4,、中断请求的撤除,(,1,)定时器中断请求的撤除,中断请求被响应后。硬件会自动清,TF0,或,TF1。,(,2,)串行口中断请求的撤除,响应串行口的中断后,,CPU,无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能用软件清除。,2024/11/18,吉林大学通信工程学院,Page,35,(,3,)外部中断请求的撤除,跳沿方式外部中断请求的撤消是自动撤消的。,电平方式外部中断请求的撤消,:,除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平。,2024/11/18,吉林大学通信工程学院,Page,36,2024/11/18,吉林大学通信工程学院,Page,37,4.3,中断系统的编程,一、中断源地址及编号,编 号,中 断 源,入 口 地 址,0,外部中断,0,0003H,1,定时器,/,计数器,0,000BH,2,外部中断,1,0013H,3,定时器,/,计数器,1,001BH,4,串行口中断,0023H,2024/11/18,吉林大学通信工程学院,Page,38,二、中断服务程序设计的任务,(1)设置中断允许控制寄存器,IE。,(2)设置中断优先级寄存器,IP。,(3)对外中断源,是采用电平触发还是跳沿触发。,(4)编写中断服务程序,处理中断请求,。,前,2,条一般放在主程序的初始化程序段中。,2024/11/18,吉林大学通信工程学院,Page,39,三、中断服务流程,2024/11/18,吉林大学通信工程学院,Page,40,例 中断服务汇编例序,INT:CLR EA;CPU,关中断,PUSH PSW;,现场保护,PUSH ACC;,SETB EA;CPU,开中断,中断处理程序段,CLR EA;CPU,关中断,POP ACC;,现场恢复,POP PSW,SETB EA;CPU,开中断,RETI;,中断返回,恢复断点,2024/11/18,吉林大学通信工程学院,Page,41,四、中断应用的,C,语言编程,中断服务程序的函数定义的语法格式如下:,返回值 函数名,(,参数,) interrupt musing n,中断处理程序段,2024/11/18,吉林大学通信工程学院,Page,42,例 中断服务,C51,例序,void service_int1( ) interrupt 2 using 2 /* INT1,中断服务程序,使用第,2,组工作寄存器 *,/,中断处理程序段,2024/11/18,吉林大学通信工程学院,Page,43,例 利用外部中断,0(P3.2,口,),,使,P1.0,口接的,LED,作为中断响应,按钮,SB,接在,P3.2,脚上,硬件简图如图所示,要求每按动一次按键,使发光二极管改变一次状态。,2024/11/18,吉林大学通信工程学院,Page,44,ORG 0000H,AJMP MAIN,ORG0003H;,外部中断地址入口,AJMP INT_0;,转到真正的处理程序处,ORG 0030H,MAIN,:,MOV SP,#5FH;,初始化堆栈,MOV P1,#0FFH;,灯全灭,MOV P3,#0FFH;P3,口置高电平,SETB IT0;,下降沿触发,SETB EA;,开总中断,SETB EX0;,开外部中断,0,AJMP$;,在本行等待,INT_0,:,PUSH ACC;,数据进栈,PUSH PSW,CPL P1.0;,取反,POPPSW;,数据出栈,目的是保护现场,POP ACC,RETI;,中断返回,END,2024/11/18,吉林大学通信工程学院,Page,45,4.4 MCS-51,扩展外部中断请求输入口,一、定时器/计数器作为外部中断源的使用方法,定时器/计数器选为计数器工作模式,,T0 (,或,T1),引脚上发生负跳变时,,T0(,或,T1),计数器加1,利用该特性,可以把,T0(,或,T1),引脚作为外部中断请求输入引脚,计数器初值设为,FFH,,,TF0(,或,TF1),作为外部中断请求标志。,2024/11/18,吉林大学通信工程学院,Page,46,例 利用计数器作外部中断的例程,ORG 0000H,AJMP IINI ;,跳到初始化程序,IINI:MOV TMOD,#06H;,设置,T0,的工作方式,MOV TL0,#0FFH;,设置计数器初值,MOV TH0,#0FFH,SETB TR0;,启动,T0,,开始计数,SETB ET0;,允许,T0,中断,SETB EA;CPU,开中断,2024/11/18,吉林大学通信工程学院,Page,47,二、中断和查询结合的方法,2024/11/18,吉林大学通信工程学院,Page,48,例 查询方式扩展外部中断例程,ORG 0013H,; INT1,的中断入口,LJMP INT1 ;,INT1: PUSH PSW,;,保护现场,PUSH ACC,JB P1.0,IR1;,P1.0,高,,IR1,有请求,JB P1.1,IR2;,P1.1,高,,IR2,有请求,JB P1.2,IR3;,P1.2,高,,IR3,有请求,JB P1.3,IR4;,P1.3,高,,IR4,有请求,2024/11/18,吉林大学通信工程学院,Page,49,INTIR: POP ACC;,恢复现场,POP PSW,RETI;,中断返回,IR1:,IR1,的中断处理程序,AJMP INTIR ;,IR2:,IR2,的中断处理程序,AJMP INTIR ;,IR3:,IR3,的中断处理程序,AJMP INTIR ;,IR4: IR4,的中断处理程序,AJMP INTIR ;,2024/11/18,吉林大学通信工程学院,Page,50,三、使用专用芯片扩展外部中断请求输入口,2024/11/18,吉林大学通信工程学院,Page,51,74LS148,三线,-,八线优先编码器,2024/11/18,吉林大学通信工程学院,Page,52,例 使用,74LS148,扩展外部中断例程,# include ,unsigned char status,;,bit flag,;,void service_int1( ) interrupt 2 using 2,/* INT1,中断服务程序,使用第,2,组工作寄存器 *,/,flag=1,;,/,设置标志,status=P1,;,/,存输入口状态,2024/11/18,吉林大学通信工程学院,Page,53,void main(void),IP=0x04,;,/,置,INT1,为高优先级中断,IE=0x84,;,/ INT1,开中断,,CPU,开中断,for(,; ;,),if(flag) /*,有中断 *,/,2024/11/18,吉林大学通信工程学院,Page,54,switch(status) /*,根据中断源分支 *,/,case 0,:,break,;,/*,处理,IN0 */,case 1,:,break,;,/*,处理,IN1 */,case 2,:,break,;,/*,处理,IN2 */,case 3,:,break,;,/*,处理,IN3 */,default,: ;,flag=0,;,/*,处理完成清标志 *,/,提问与解答环节,Questions And Answers,谢谢聆听,学习就是为了达到一定目的而努力去干,是为一个目标去战胜各种困难的过程,这个过程会充满压力、痛苦和挫折,Learning Is To Achieve A Certain Goal And Work Hard, Is A Process To Overcome Various Difficulties For A Goal,
展开阅读全文