2020PIC单片机原理及应用2ppt课件_第1页
2020PIC单片机原理及应用2ppt课件_第2页
2020PIC单片机原理及应用2ppt课件_第3页
2020PIC单片机原理及应用2ppt课件_第4页
2020PIC单片机原理及应用2ppt课件_第5页
已阅读5页,还剩130页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PICPIC单片机原理及应用单片机原理及应用第五章第五章 功能模块功能模块1主要内容主要内容第第1 1节节 I/O I/O端口端口I/OI/O端口介绍端口介绍I/OI/O端口的控制方法端口的控制方法I/OI/O端口的应用举例端口的应用举例I/OI/O端口实验端口实验输出数据时输出数据时输出使能输出使能输出使能输出使能=1输出数据输出数据输出数据输出数据输出数据输出数据1.1 I/O1.1 I/O端口介绍端口介绍1. I/O1. I/O端口结构图端口结构图输入数据时输入数据时输入使能输入使能输入使能输入使能=0输入数据输入数据输入数据输入数据输入引脚数据输入引脚数据数据传送给数据总线数据传送给数

2、据总线52. I/O 2. I/O 端口特点端口特点所有所有I/O I/O 输入端口都输入端口都是施密特触发器输是施密特触发器输入,以增强抗干扰入,以增强抗干扰性。性。有些端口除有些端口除VDDVDD、VSSVSS、MCLR MCLR 和和OSC1/CLKIOSC1/CLKI之外为之外为多功能复用端口。多功能复用端口。I/O I/O 引脚可复用多种引脚可复用多种外设功能外设功能1.1 I/O1.1 I/O端口介绍端口介绍6注:复用多种外设功能时,名字在前的外设优先级高注:复用多种外设功能时,名字在前的外设优先级高71.2 I/O1.2 I/O端口控制端口控制1. I/O1. I/O端口分组管理

3、端口分组管理82. I/O2. I/O端口的控制寄存器端口的控制寄存器TRISxTRISx寄存器:寄存器:I/OI/O端口方向控制寄存器。端口方向控制寄存器。TRISxTRISx的位为的位为“1“1时,其对应的时,其对应的I/O I/O 端口为输入。端口为输入。TRISxTRISx的位为的位为“0“0时,其对应的时,其对应的I/O I/O 端口为输出。端口为输出。复位以后,所有端口引脚被定义为输入。复位以后,所有端口引脚被定义为输入。PORTxPORTx寄存器:寄存器:I/OI/O端口读引脚电平状态寄存器。读时,端口读引脚电平状态寄存器。读时,读入的是端口引脚值;写时,数据写到端口数据锁读入的

4、是端口引脚值;写时,数据写到端口数据锁存器输出。存器输出。LATxLATx寄存器:寄存器:I/OI/O端口电平输出锁存寄存器。读时,读端口电平输出锁存寄存器。读时,读入数据锁存器里锁存的值;写时,数据写到端口数入数据锁存器里锁存的值;写时,数据写到端口数据锁存器输出。据锁存器输出。1.2 I/O1.2 I/O端口控制端口控制dsPIC30F4011 dsPIC30F4011 端口寄存器端口寄存器例例1:1:实现发光二极管实现发光二极管D1D1闪烁功能。闪烁功能。硬件分析:发光二极管硬件分析:发光二极管D1D1连接着连接着3838引脚,即引脚,即RE0RE0端口;端口; RE0 RE0输出高电平

5、时(输出高电平时(=1=1),),D1D1亮;亮; RE0 RE0输出低电平时(输出低电平时(=0=0),),D1D1不亮;不亮;1.3 I/O1.3 I/O端口应用举例端口应用举例高电平(高电平(=1)低电平(低电平(=0)软件分析:软件分析:RE0RE0管脚对应的寄存器及对应位管脚对应的寄存器及对应位方向控制寄存器方向控制寄存器TRISETRISE的的 TRISE0 TRISE0位;位;LATELATE寄存器的寄存器的 LATE0 LATE0位;位;PORTEPORTE寄存器的寄存器的 RE0 RE0位;位;控制步骤:控制步骤:将将TRISETRISE寄存器的寄存器的TRISE0TRISE

6、0位置位置0 0,设置,设置RE0RE0为数据输出端口;为数据输出端口;给给LATELATE寄存器的寄存器的LATE0LATE0位赋值为位赋值为1/0, RE01/0, RE0输出高低电平;输出高低电平;软件设计为:软件设计为:int main()int main() TRISEbits.TRISE0 = 0; /TRISEbits.TRISE0 = 0; /设置设置RE0RE0为输出为输出(1(1输入,输入,0 0输出输出) );while(1)while(1) LATEbits.LATE0 =1;LATEbits.LATE0 =1; /RE0=1 /RE0=1输出高电平输出高电平+5V+5

7、V,亮灯,亮灯delay(); /delay(); /延时延时LATEbits.LATE0 =0; /RE0=0LATEbits.LATE0 =0; /RE0=0输出低电平输出低电平0V0V,灭灯灭灯 delay(); / delay(); /延时延时 12例例2 2、实现、实现6 6个发光二极管流水灯功能。个发光二极管流水灯功能。硬件分析:硬件分析:6 6个发光二极管个发光二极管D1-D6D1-D6分别连接着分别连接着33-3833-38引脚,即引脚,即RE0-RE5RE0-RE5端口;每个引脚输出高电平时(端口;每个引脚输出高电平时(=1=1灯亮;输出低灯亮;输出低电平时(电平时(=0=0

8、灯不亮。灯不亮。1.3 I/O1.3 I/O端口应用举例端口应用举例软件分析:软件分析:(1 1RE0-RE5RE0-RE5管脚对应的寄存器及对应位管脚对应的寄存器及对应位方向控制寄存器方向控制寄存器TRISETRISE的的 TRISE0-TRISE5 TRISE0-TRISE5位;位;LATELATE寄存器的寄存器的 LATE0-LATE5 LATE0-LATE5位;位;PORTEPORTE寄存器的寄存器的 RE0-RE5 RE0-RE5位;位;(2 2控制步骤:控制步骤:将将TRISETRISE寄存器的寄存器的TRISE0-RISE5TRISE0-RISE5位置位置0 0,设置,设置RE0

9、-RE5RE0-RE5为输出端口;为输出端口;分别对分别对LATELATE寄存器的寄存器的LATE0-LATE5LATE0-LATE5位赋值为位赋值为1/01/0,6 6个端口分别输出高个端口分别输出高低电平;低电平;流水灯的实现方法流水灯的实现方法发光发光LEDD6D5D4D3D2D1端口端口RE5RE4RE3RE2RE1RE0输出值输出值1000001输出值输出值2000010输出值输出值3000100输出值输出值4001000输出值输出值5010000输出值输出值61000000 x010 x020 x040 x080 x100 x20方法一方法一循环输出循环输出方法二方法二移位输出移位

10、输出软件设计软件设计方法一:循环输出方法一:循环输出int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; /存放存放6 6个输出值个输出值int main(void)int main(void) TRISE =0 x00; TRISE =0 x00; /设置设置RE0-RE5RE0-RE5为输出为输出while(1)while(1) for (i=0;i6;i+) for (i=0;i6;i+) LATE=ledcodei;LATE=

11、ledcodei;/6/6个输出值依次输出循环点灯个输出值依次输出循环点灯 delay(); /delay(); /延时延时 软件设计软件设计方法二:移位输出方法二:移位输出int led=0 x01; int led=0 x01; /存放输出值,初值是第一个存放输出值,初值是第一个输出值输出值int main(void)int main(void) TRISE =0 x00; TRISE =0 x00; /设置设置RE0-RE5RE0-RE5为输出为输出while(1)while(1) LATE =led; LATE =led; /点灯点灯 delay(); delay(); /延时延时 l

12、ed = led1; led = ledSelect ToolsPICkit 3 选择调试工具;选择调试工具;(3点击点击DebuggerSettings,在,在Settings窗口中点击窗口中点击Power栏,选择由栏,选择由PICkit3向实验板供电;向实验板供电;(4完成实现发光完成实现发光LED灯闪烁实验;灯闪烁实验;(5完成实现流水灯或花样彩灯实验;完成实现流水灯或花样彩灯实验;(6完成实现按按键加完成实现按按键加1计数实验。计数实验。五五. 实验报告内容与要求实验报告内容与要求(1简述简述3个实验任务的程序设计方法;个实验任务的程序设计方法;(2分析观察到的实验结果;分析观察到的实

13、验结果;(3分析分析PIC单片机单片机IO端口输入与输出操作的不同之处。端口输入与输出操作的不同之处。主要内容主要内容第第2 2节节 中断中断中断介绍中断介绍中断控制方法中断控制方法中断应用举例中断应用举例外部中断实验外部中断实验1. 1. 中断中断中断是指在程序运行过程中,当出现情况时,中断是指在程序运行过程中,当出现情况时,CPUCPU暂暂时停止当前程序的执行,转而执行处理新情况的过程叫做时停止当前程序的执行,转而执行处理新情况的过程叫做中断。中断。 简单来说:中断是一种发生了一个外部的事件时调用简单来说:中断是一种发生了一个外部的事件时调用相应的处理程序的过程。相应的处理程序的过程。2.

14、2.中断源中断源引起中断的原因,或能够发出中断请求信号的来源统引起中断的原因,或能够发出中断请求信号的来源统称为中断源。称为中断源。(1 1软件中断源:软件陷阱产生的中断为软件中断源不软件中断源:软件陷阱产生的中断为软件中断源不可屏蔽中断)可屏蔽中断)(2 2硬件中断源:外设发出的请求为硬件中断源可屏蔽硬件中断源:外设发出的请求为硬件中断源可屏蔽中断)中断)2.1 2.1 中断介绍中断介绍3.3.中断处理过程中断处理过程 一个完整的中断处理过程应该包括:中断请求、中一个完整的中断处理过程应该包括:中断请求、中断排队或中断判优、中断响应、中断处理和中断返回。断排队或中断判优、中断响应、中断处理和

15、中断返回。2.1 2.1 中断介绍中断介绍正在执行的程序正在执行的程序中断请求中断请求继续执行原程序继续执行原程序中断服务程序中断服务程序中断状态标志位置中断状态标志位置126(1 1中断排队或中断判优中断排队或中断判优 在程序运行过程中,几个中断请求可能同时出现,但中在程序运行过程中,几个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理。这些中断请求被按断系统只能按一定的次序来响应和处理。这些中断请求被按照优先级别顺序进行处理。最先被响应的中断具有最高优先照优先级别顺序进行处理。最先被响应的中断具有最高优先级别。级别。PICPIC单片机中断优先级原则:单片机中断优先级原则:用户可

16、设置中断源优先级为用户可设置中断源优先级为1-7 1-7 级。级。优先级设置中,优先级设置中,1 1为最低优先级,为最低优先级,7 7 为最高优先级。为最高优先级。如果中断源的优先级设置为零,则中断源被禁止。如果中断源的优先级设置为零,则中断源被禁止。在用户分配的优先级相同时,单片机内部提供自然顺序优先级在用户分配的优先级相同时,单片机内部提供自然顺序优先级解决优先级冲突。每个中断源在中断向量表解决优先级冲突。每个中断源在中断向量表IVTIVT中的位置是中的位置是其自然顺序优先级,中断向量的编号越低,自然优先级越高;其自然顺序优先级,中断向量的编号越低,自然优先级越高;向量的编号越高,自然优先

17、级越低。向量的编号越高,自然优先级越低。高高低低自然顺序优先级自然顺序优先级(2 2中断响应中断响应(3 3中断服务程序中断服务程序保护现场:目的是为了保护那些与保护现场:目的是为了保护那些与主程序中有冲突的寄存器,没主程序中有冲突的寄存器,没有冲突的话,这一步骤可以省有冲突的话,这一步骤可以省略。略。开中断:是为了能实现中断的嵌套。开中断:是为了能实现中断的嵌套。为产生中断的相应设备提供服务为产生中断的相应设备提供服务恢复现场:与保护现场对应的,要恢复现场:与保护现场对应的,要注意数据恢复的次序,以免混注意数据恢复的次序,以免混乱。乱。 前往:将压入堆栈的断点地址返回前往:将压入堆栈的断点地

18、址返回PCPC301. 1. 中断控制相关的寄存器中断控制相关的寄存器INTCON1 INTCON1 和和INTCON2 INTCON2 寄存器:中断控制寄存器,实现全局中断控制功能。寄存器:中断控制寄存器,实现全局中断控制功能。NSTDISNSTDIS位:中断嵌套禁止位位:中断嵌套禁止位INTCON1INTCON1)。默认为)。默认为0 0;该位置;该位置1 1,则,则禁止中断嵌套,即如果正在处理一个中断,将禁止处理新的中断,即使禁止中断嵌套,即如果正在处理一个中断,将禁止处理新的中断,即使新中断的优先级比当前正在处理的中断优先级高。新中断的优先级比当前正在处理的中断优先级高。ALTIVTA

19、LTIVT位:使能备用中断向量表位。使用标准向量表时该位置位:使能备用中断向量表位。使用标准向量表时该位置0 0默许);默许);使用备用向量表时该位置使用备用向量表时该位置1 1 。INT2EP- INT0EPINT2EP- INT0EP位:外部中断边沿检测极性选择位。该位置位:外部中断边沿检测极性选择位。该位置1 1,是来负边沿,是来负边沿时产生中断;该位置时产生中断;该位置0 0默许),是来正边沿时产生中断默许),是来正边沿时产生中断2.2 2.2 中断控制方法中断控制方法31中断标志状态寄存器中断标志状态寄存器IFSxIFSx:所有中断请求标志都保存在这些寄存:所有中断请求标志都保存在这

20、些寄存器中,标志状态位记载是否已经发生了中断请求,每个中断源的器中,标志状态位记载是否已经发生了中断请求,每个中断源的中断请求标志由各自的外设置中断请求标志由各自的外设置1 1 ,通过软件清零。,通过软件清零。置置1 = 1 = 发生中断请求发生中断请求置置0 = 0 = 未发生中断请求未发生中断请求32中断允许控制寄存器中断允许控制寄存器IECxIECx:所有中断允许控制位都保存在这些:所有中断允许控制位都保存在这些寄存器中。这些控制位用于控制是否允许来自外的中断请求被寄存器中。这些控制位用于控制是否允许来自外的中断请求被响应。响应。置置1 =1 =允许中断请求允许中断请求置置0 =0 =不

21、允许中断请求不允许中断请求33中断优先级控制寄存器中断优先级控制寄存器IPCxIPCx:用于为每个中断源设置中断优先:用于为每个中断源设置中断优先级。每个用户中断源都可以设置为级。每个用户中断源都可以设置为1-7 1-7 的优先级,用三位二进的优先级,用三位二进制数表示。如果中断源的优先级设置为零,则中断源被禁止。制数表示。如果中断源的优先级设置为零,则中断源被禁止。342. 2. 中断程序设计中断程序设计(1 1中断初始化配置中断初始化配置若禁止中断嵌套,设置若禁止中断嵌套,设置NSTDIS NSTDIS 控制位控制位INTCON1 )INTCON1 )为为1 1;不做设置时该;不做设置时该

22、位默认为位默认为0 0,即中断可以嵌套;,即中断可以嵌套;设置中断源优先级,给设置中断源优先级,给IPCxIPCx寄存器中的相应中断置寄存器中的相应中断置1-71-7的优先级;的优先级;将中断标志状态寄存器将中断标志状态寄存器IFSxIFSx中的中断标志状态位清零;中的中断标志状态位清零;设置中断允许控制寄存器设置中断允许控制寄存器IECxIECx中的中断允许控制位为中的中断允许控制位为1 1,允许中断请求,允许中断请求void Initializeint0() void Initializeint0() INTCON1bits. NSTDIS= 1; INTCON1bits. NSTDIS=

23、 1; / /中断嵌套禁止中断嵌套禁止IFS0bits.INT0IF = 0; IFS0bits.INT0IF = 0; / /清除清除INT0INT0的中断标志的中断标志 IPC0bits.INT0IP = 7; IPC0bits.INT0IP = 7; / /中断优先级为中断优先级为7 7 IEC0bits.INT0IE = 1; IEC0bits.INT0IE = 1; / /使能中断使能中断 2.2 2.2 中断控制方法中断控制方法(2中断服务程序中断服务程序ISR的编写的编写void _attribute_(_interrupt_(_save_(variable1,variable2

24、) _INT0Interrupt(void)/中断服务程序代码中断服务程序代码_attribute_(_interrupt_ ( _save_ (symbol-list) , _ irq_ (irqid) , _ altirq_ (altirqid) , _ preprologue_ (asm) ) )save 参数指定进入和退出参数指定进入和退出ISR时需要保护和恢复的一个或多个变量;时需要保护和恢复的一个或多个变量;irq 参数允许将一个中断向量对应于一个特定的中断,括号括起来的是中断参数允许将一个中断向量对应于一个特定的中断,括号括起来的是中断ID号;号;altirq 参数允许将一个中断

25、向量对应于一个指定的备用中断;参数允许将一个中断向量对应于一个指定的备用中断;preprologue 参数允许在生成的代码中,编译器生成的函数参数允许在生成的代码中,编译器生成的函数prologue前插入汇前插入汇编语句。编语句。MPLAB C30 的关键字的关键字_attribute_ 用来指定特殊属性。用来指定特殊属性。双括弧中的内容是可选的属性说明。双括弧中的内容是可选的属性说明。属性说明属性说明中断向量名中断向量名例例1.1.单中断应用。按键单中断应用。按键S8S8链接链接1717管脚管脚RE8RE8端口做为外部中断端口做为外部中断INT0INT0使用。无中断时程序执行流水灯,来中断时

26、使用。无中断时程序执行流水灯,来中断时6 6个发光个发光LEDLED全亮,中断结束返回后继续执行流水灯程序。全亮,中断结束返回后继续执行流水灯程序。硬件分析:硬件分析:S8S8不按下时,不按下时,5 5管脚输入为高电平;管脚输入为高电平;S8S8按下再松开时,按下再松开时,1717管脚输入一个低电平脉冲信号,即产生外部中断管脚输入一个低电平脉冲信号,即产生外部中断INT0INT0。2.3 2.3 中断应用举例中断应用举例软件分析:软件分析:(1 1外部中断外部中断INT0INT0对应的寄存器对应的寄存器中断标志状态寄存器中断标志状态寄存器IFS0IFS0的的 INT0IF INT0IF位;位;

27、中断允许控制寄存器中断允许控制寄存器IEC0IEC0的的 INT0IE INT0IE位;位;中断优先级控制寄存器中断优先级控制寄存器IPC0IPC0的的 INT0IP INT0IP位;位;(2 2外部中断外部中断INT0INT0的产生及设置:的产生及设置:外部中断输入正或负边沿时产生中断;外部中断输入正或负边沿时产生中断;INTCON2 INTCON2 寄存器的寄存器的INT0EPINT0EP位置位置1 1是负边沿时产生中断;置是负边沿时产生中断;置0 0是正边是正边沿时产生中断默认设置);沿时产生中断默认设置);(3 3程序设计程序设计编写外部中断编写外部中断INT0INT0初始化程序,设置

28、并使能初始化程序,设置并使能INT0INT0;编写中断服务程序编写中断服务程序ISRISR,点亮,点亮6 6个发光个发光LEDLED;编写主程序,调用初始化程序,实现流水灯功能程序;编写主程序,调用初始化程序,实现流水灯功能程序;38#include void Initializeint0() IFS0bits.INT0IF = 0; /清除清除INT0的中断标志的中断标志 IPC0bits.INT0IP = 7; /中断优先级为中断优先级为7 IEC0bits.INT0IE = 1; /使能中断使能中断void _attribute_(_interrupt_) _INT0Interrupt(

29、void)IFS0bits.INT0IF = 0; /清清INT0中断标志中断标志 PORTE =0 x3f;/6个个LED灯全亮灯全亮 delay(); /延时延时int main() Initializeint0(); /调用调用INT0初始化程序初始化程序 int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; TRISE =0 x0100; /RE0-RE5配置为输出,配置为输出,RE8外部外部INT0输入输入while(1) for (i=0;iSelect ToolsPICkit 3 选择调试工具;选择调试工具;(3点击点击Deb

30、uggerSettings,在,在Settings窗口中点击窗口中点击Power栏,选择由栏,选择由PICkit3向实验板供电;向实验板供电;(4完成单中断程序实验;完成单中断程序实验;(5完成多中断程序实验;完成多中断程序实验;五五. 实验报告内容与要求实验报告内容与要求(1简述中断程序设计方法;简述中断程序设计方法;(2分析单中断实验结果,总结中断处理过程;分析单中断实验结果,总结中断处理过程;(3分析多中断实验结果,总结优先级处理原则;分析多中断实验结果,总结优先级处理原则;(4分析多中断实验结果,总结中断嵌套工作原理。分析多中断实验结果,总结中断嵌套工作原理。主要内容主要内容第第3 3

31、节节 定时器定时器定时器介绍定时器介绍定时器的控制方法定时器的控制方法定时器应用举例定时器应用举例定时器实验定时器实验3.1 3.1 定时器介绍定时器介绍模式模式定时器定时器模块模块16位定时器位定时器模式模式同步计数器同步计数器模式模式异步计数器异步计数器模式模式门控时间累门控时间累加模式加模式32位定时器位定时器Timer1Timer2Timer3Timer4Timer51. 1. 定时器模块及其工作模式定时器模块及其工作模式3.1 3.1 定时器介绍定时器介绍2.2.工作模式工作模式(1 1定时器模式定时器模式定时器顾名思义就是定时定时器顾名思义就是定时 ,单片机的定时功能可产生精确的定

32、时时间。,单片机的定时功能可产生精确的定时时间。 定时器是单片机里最定时器是单片机里最“活泼活泼的部件之一的部件之一, ,很多程序、应用系统都离不很多程序、应用系统都离不开它。开它。定时器的核心是计数器定时器的核心是计数器例如一个闹钟,将它定时在例如一个闹钟,将它定时在1 1个小时后闹响,也能说是秒针走了个小时后闹响,也能说是秒针走了36003600次后闹响。因秒针每一次走动的时间正好是次后闹响。因秒针每一次走动的时间正好是1 1秒,所以定时时间秒,所以定时时间就转化为秒针走的次数,也就是计数的数值就转化为秒针走的次数,也就是计数的数值36003600次)。可见,定时次)。可见,定时时间与秒针

33、基准时钟源)、计数值之间具有密切关系。时间与秒针基准时钟源)、计数值之间具有密切关系。(2 2计数器模式计数器模式计数器是记录外界发生的事情,即统计外部输入的脉冲次数。计数器是记录外界发生的事情,即统计外部输入的脉冲次数。计数的例程处处可见,如录音的时长、家里用的电度表、汽车上计数的例程处处可见,如录音的时长、家里用的电度表、汽车上的里程表等。的里程表等。计数器的核心也是计数器计数器的核心也是计数器计数器时钟源由外部提供:计数器时钟源由外部提供:外部输入时钟源与系统指令周期时钟外部输入时钟源与系统指令周期时钟TCY TCY 同步的是同步计数器同步的是同步计数器外部输入时钟源与系统指令周期时钟外

34、部输入时钟源与系统指令周期时钟TCY TCY 不同步的是异步计数器不同步的是异步计数器(3 3门控时间累加模式门控时间累加模式当外部门控信号为由低变高时,对应的定时器开始递增计数;当外部门控信号为由低变高时,对应的定时器开始递增计数;当外部门控信号为由高变低时,对应的定时器停止递增计数。当外部门控信号为由高变低时,对应的定时器停止递增计数。定时器时钟源来自于内部系统时钟。定时器时钟源来自于内部系统时钟。3.2 3.2 定时器的控制方法定时器的控制方法1. Timer1模块内部结构( Timer2/3/4/5结构基本相同 )指令周期时钟指令周期时钟Fosc/4)时钟选择时钟选择定时器开关定时器开

35、关PR1周期寄存器:决定定时时间周期寄存器:决定定时时间定时模式工作时定时模式工作时TMR1计数寄存器计数寄存器定时中断标志位置定时中断标志位置12.2.时钟时钟定时器的输入时钟由内部系统时钟提供定时器的输入时钟由内部系统时钟提供系统时钟系统时钟FoscFosc四分频产生内部指令周期时钟四分频产生内部指令周期时钟FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4定时器按照指令周期时钟进行计数预分频比为定时器按照指令周期时钟进行计数预分频比为1:11:1时时 )。)。3.3.定时器预分频器定时器预分频器定时器预分频器把系统时钟的频率按倍数分频,那么一个计数周期定时器预分频器把系统时钟的

36、频率按倍数分频,那么一个计数周期就按倍数变大。就按倍数变大。1616位定时器的输入时钟位定时器的输入时钟FOSC/4 FOSC/4 或外部时钟的预分频比选项为或外部时钟的预分频比选项为1:11:1、1:81:8、1:64 1:64 和和1:2561:256。例如:原本例如:原本1 1个指令周期时钟计数个指令周期时钟计数1 1次如次如1ms1ms计数计数1 1次),预分频次),预分频器设为器设为1 1:4 4 后,就是后,就是4 4个指令周期计数个指令周期计数1 1次即次即4ms4ms计数计数1 1次)。次)。3.2 3.2 定时器的控制方法定时器的控制方法定时器开控制位定时器开控制位1= 启动

37、定时器启动定时器0= 停止定时器停止定时器定时器门控时间累加使能位定时器门控时间累加使能位1= 门控时间累加使能门控时间累加使能0= 门控时间累加禁止门控时间累加禁止定时器输入时钟定时器输入时钟预分频选择位预分频选择位11 = 预分频比是预分频比是1:25610 = 预分频比是预分频比是1:6401 = 预分频比是预分频比是1:800 = 预分频比是预分频比是1:1定时器外部时钟输入同定时器外部时钟输入同步选择位步选择位当当TCS=1 时:时:1= 同步外部时钟输入同步外部时钟输入0= 不同步外部时钟输入不同步外部时钟输入当当TCS=0 时,时, Timer1 使使用内部时钟。用内部时钟。3.

38、2 3.2 定时器的控制方法定时器的控制方法4. Timer4. Timer模块相关的寄存器模块相关的寄存器TMR1TMR1计数寄存器:存放计数的值;计数寄存器:存放计数的值;PR1PR1周期寄存器:存放周期值,该值决定定时时间;周期寄存器:存放周期值,该值决定定时时间;T1CONT1CON控制寄存器:控制控制寄存器:控制Timer1Timer1模块所有操作。模块所有操作。定时器时钟源选择位定时器时钟源选择位1= 来自来自TxCK 引脚的外部时钟引脚的外部时钟0= 内部时钟内部时钟FOSC/4)32 位定时器模式选择位位定时器模式选择位1=TMR2 和和TMR3 形成形成32 位定时器位定时器

39、0=TMR2和和TMR3为独立的为独立的16 位定时器位定时器32 位定时器模式选择位位定时器模式选择位1=TMR4 和和TMR5 形成形成32 位定时器位定时器0=TMR4和和TMR5为独立的为独立的16 位定时器位定时器545 5、定时器周期值计算、定时器周期值计算(1 1系统时钟系统时钟FoscFosc四分频产生内部指令周期时钟四分频产生内部指令周期时钟FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4 Tcy Tcy指令周期指令周期=1/Fcy=1/=1/Fcy=1/(fosc/4) fosc/4) (2 2定时器的周期值计算公式:定时器的周期值计算公式:定时器周期值定时器周

40、期值= =所需定时时间所需定时时间/ /(指令周期分频比(指令周期分频比) )例如:系统时钟频率为例如:系统时钟频率为fosc=7.3728MHzfosc=7.3728MHz,定时,定时1 1秒。周期值秒。周期值计算如下:计算如下: 指令周期指令周期=1/=1/(fosc/4)=1/1843200fosc/4)=1/1843200 定时器周期值定时器周期值= =所需定时时间所需定时时间/ /(分频比指令周期(分频比指令周期) ) =1s/(256 =1s/(256* *1/1843200)1/1843200) =7200 =7200 =0 x1c20 =0 x1c203.2 3.2 定时器的控

41、制方法定时器的控制方法6. 6. 定时器中断定时器中断设置定时器中断使能位设置定时器中断使能位TxIETxIE,可使能定时器中断。,可使能定时器中断。16 16 位定时器在发生周期匹配时位定时器在发生周期匹配时TMRxTMRx中的值与中的值与PRxPRx中的值相中的值相等时产生定时中断,相应的定时器中断标志状态位等时产生定时中断,相应的定时器中断标志状态位TxIF TxIF 会被置会被置1 1。3.2 3.2 定时器的控制方法定时器的控制方法周期匹配周期匹配 定时器中断相关寄存器定时器中断相关寄存器3.3 3.3 定时器应用举例定时器应用举例例例1:流水灯时间间隔为:流水灯时间间隔为1s。vo

42、id InitializeTMR1() TMR1 = 0; /计数寄存器计数寄存器TMR10,从,从0开始计数开始计数 T1CON = 0 x0030;/关闭定时器,使用内部时钟,预分频关闭定时器,使用内部时钟,预分频比比1:256 PR1 =0 x1c20; /周期寄存器赋值,使定时时间为周期寄存器赋值,使定时时间为1s IFS0bits.T1IF = 0; /清除清除TMR1的中断标志的中断标志 IPC0bits.T1IP = 7; /中断优先级为中断优先级为7 IEC0bits.T1IE = 1; /使能定时中断使能定时中断void _attribute_(_interrupt_) _T

43、1Interrupt(void) TMR1=0; IFS0bits.T1IF = 0; /清定时器中断标志状态位清定时器中断标志状态位 led = led1;int main() InitializeTMR1(); T1CONbits.TON = 1;/打开定时器打开定时器 .3.3 3.3 定时器应用举例定时器应用举例例例2:设计简易计时器,在:设计简易计时器,在LCD上显示计时时间上显示计时时间mm:ss)。)。void InitializeTMR1() TMR1 = 0; /计数寄存器计数寄存器TMR10,从,从0开始计数开始计数 T1CON = 0 x0030;/关闭定时器,使用内部时

44、钟,预分频关闭定时器,使用内部时钟,预分频比比1:256 PR1 =0 x1c20; /周期寄存器赋值,使定时时间为周期寄存器赋值,使定时时间为1s IFS0bits.T1IF = 0; /清除清除TMR1的中断标志的中断标志 IPC0bits.T1IP = 7; /中断优先级为中断优先级为7 IEC0bits.T1IE = 1; /使能定时中断使能定时中断int main() OpenLCD( ) ;putrsLCD(mm:ss) ;InitializeTMR1();T1CONbits.TON = 1;/打开定时器打开定时器void _attribute_(_interrupt_) _T1I

45、nterrupt(void) if(seconds59)seconds+;elseseconds=0;if(minutesSelect ToolsPICkit 3 选择调试工具;选择调试工具;(3点击点击DebuggerSettings,在,在Settings窗口中点击窗口中点击Power栏,选择由栏,选择由PICkit3向实验板供电;向实验板供电;(4完成间隔完成间隔1s/5s/10s的流水灯实验;的流水灯实验;(5完成简易计数器实验;完成简易计数器实验;(6完成交通灯实验;完成交通灯实验;五五. 实验报告内容与要求实验报告内容与要求(1简述定时器工作原理;简述定时器工作原理;(2总结定时器

46、的设计方法。总结定时器的设计方法。主要内容主要内容第第4 4节节 输出比较输出比较输出比较介绍输出比较介绍输出比较的工作模式输出比较的工作模式输出比较的控制寄存器输出比较的控制寄存器输出比较应用举例输出比较应用举例输出比较实验输出比较实验631.1.输出比较输出比较输出比较模块工作时,把所选的定时器的时基值与输出比较模块工作时,把所选的定时器的时基值与1/21/2个比个比较寄存器的值作比较,在比较匹配相等发生时能产生较寄存器的值作比较,在比较匹配相等发生时能产生单个脉冲输出或连续脉冲输出。单个脉冲输出或连续脉冲输出。输出比较模块从引脚输出的脉冲频率和占空比可调,该信号输出比较模块从引脚输出的脉

47、冲频率和占空比可调,该信号可以用来控制外部设备以满足不同用途的需要,如延时驱可以用来控制外部设备以满足不同用途的需要,如延时驱动、功率控制、直流或步进电机、可控硅触发等。动、功率控制、直流或步进电机、可控硅触发等。dsPIC30F4011dsPIC30F4011有有4 4个输出比较通道,以符号个输出比较通道,以符号OC1/2/3/4OC1/2/3/4等表示。等表示。所有输出比较通道功能上是都相同的。所有输出比较通道功能上是都相同的。4.1 4.1 输出比较介绍输出比较介绍4.1 4.1 输出比较介绍输出比较介绍2.2.输出比较模式框图输出比较模式框图定时器时基值定时器时基值比较寄存器比较寄存器

48、定时器周期匹配信号定时器周期匹配信号比较匹配比较匹配周期匹配周期匹配654.2 4.2 输出比较工作模式输出比较工作模式1.1. 每个输出比较模块均有以下工作模式:每个输出比较模块均有以下工作模式:2.2. 单比较匹配模式单比较匹配模式3.3. 比较强制比较强制I/O I/O 引脚为低电平输出引脚为低电平输出4.4. 比较强制比较强制I/O I/O 引脚为高电平输出引脚为高电平输出5.5. 比较使比较使I/O I/O 引脚状态翻转输出引脚状态翻转输出6.6. 双比较匹配模式产生双比较匹配模式产生7.7. 单个输出脉冲单个输出脉冲8.8. 连续输出脉冲连续输出脉冲9.9. 简单脉冲宽度调制简单脉

49、冲宽度调制PWMPWM方式方式662.2.单比较匹配模式单比较匹配模式 输出比较模块把一个值装入输出比较模块把一个值装入OCxR OCxR 寄存器,并将该值与所选定寄存器,并将该值与所选定时器的计数器寄存器时器的计数器寄存器TMRTMR的值作比较,当比较匹配事件发生时:的值作比较,当比较匹配事件发生时:(1 1OCx OCx 引脚的初始状态为低电平时,比较匹配事件强制该引引脚的初始状态为低电平时,比较匹配事件强制该引脚为高电平;两个指令时钟后,相应通道的中断标志位脚为高电平;两个指令时钟后,相应通道的中断标志位OCxIF OCxIF 被置被置1 1。4.2 4.2 输出比较工作模式输出比较工作

50、模式寄寄存存器器值值预预先先设设置置(2 2当当OCx OCx 引脚的初始状态为高电平时,比较匹配事件强引脚的初始状态为高电平时,比较匹配事件强制该引脚为低电平;两个指令时钟后,相应通道的中断标制该引脚为低电平;两个指令时钟后,相应通道的中断标志位志位OCxIF OCxIF 被置被置1 1 。寄寄存存器器值值预预先先设设置置68(3 3输出引脚输出引脚Ocx Ocx 初始化驱动为低电平,比较匹配事件使初始化驱动为低电平,比较匹配事件使OCx OCx 引脚电平交替翻转输出高低电平。引脚电平交替翻转输出高低电平。寄存器值预先设置寄存器值预先设置PR2 OCxROCOC引脚输出脉冲信号的周期由引脚输

51、出脉冲信号的周期由2 2* *PRPR的值决定的值决定OCOC引脚输出脉冲信号的占空比为引脚输出脉冲信号的占空比为50%50%693. 3. 双比较匹配模式双比较匹配模式单个输出脉冲单个输出脉冲连续输出脉冲连续输出脉冲 输出比较模块把输出比较模块把2 2个值分别装入个值分别装入OCxR OCxR 寄存器和寄存器和OCxRS OCxRS 寄存器,寄存器,OCxROCxR寄存器的值与所选的定时器的计数器寄存器寄存器的值与所选的定时器的计数器寄存器TMRTMR的值作比的值作比较,在比较匹配事件发生时,在较,在比较匹配事件发生时,在OCx OCx 引脚上产生脉冲的前引脚上产生脉冲的前上升沿。上升沿。O

52、CxRSOCxRS寄存器的值与所选的定时器的计数器寄存器寄存器的值与所选的定时器的计数器寄存器TMRTMR的值作比的值作比较,在比较匹配事件发生时,在较,在比较匹配事件发生时,在OCx OCx 引脚上产生脉冲的后引脚上产生脉冲的后下降沿。下降沿。4.2 4.2 输出比较工作模式输出比较工作模式70(1单个输出脉冲寄寄存存器器值值预预先先设设置置71(2连续输出脉冲OC引脚输出脉冲信号的周期由引脚输出脉冲信号的周期由PRy的值决定的值决定OC引脚输出脉冲信号的占空比引脚输出脉冲信号的占空比OCxRS-OCxR)/PRy寄寄存存器器值值预预先先设设置置4. 4. 简单简单PWMPWM模式模式脉冲宽

53、度调制脉冲宽度调制PWMPWM是英文是英文“Pulse Width “Pulse Width ModulationModulation的缩写,简称脉宽调制。它是利用微处理器的缩写,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通讯,功率控制与变换等许多领域。广泛应用于测量,通讯,功率控制与变换等许多领域。 不带故障保护输入的不带故障保护输入的PWM PWM 方式方式 带故障保护输入的带故障保护输入的PWM PWM 方式故障保护通过方式故障保护通过OCFA OCFA 引脚提供,引脚提供,当引脚

54、上检测到了逻辑当引脚上检测到了逻辑“0”“0”,所选的,所选的PWM PWM 输出引脚将被置输出引脚将被置于高阻态,于高阻态,PWM PWM 输出立即关闭)输出立即关闭)724.2 4.2 输出比较工作模式输出比较工作模式输出比较模块配置为输出比较模块配置为PWM PWM 工作模式时,工作模式时,通过写入所选定时器的周期寄存器通过写入所选定时器的周期寄存器PRyPRy设置设置PWM PWM 周期;周期;OCxR OCxR 是主锁存器只读);是主锁存器只读);OCxRS OCxRS 是辅助锁存器,用户通过写入是辅助锁存器,用户通过写入OCxRS OCxRS 寄存器设置寄存器设置PWM PWM 占

55、空占空比;比;在每个定时器与周期寄存器匹配事件产生时在每个定时器与周期寄存器匹配事件产生时PWM PWM 周期结束时),周期结束时),寄存器寄存器OCxROCxR被装载被装载OCxRSOCxRS的内容。的内容。73PWM 周期周期 = (PR) + 1 4 TOSC (TMR 预分频值预分频值)PWM 输出波形输出波形寄寄存存器器值值预预先先设设置置75每个输出比较通道均有下列寄存器:每个输出比较通道均有下列寄存器:OCxCON OCxCON :通道的控制寄存器:通道的控制寄存器OCxR OCxR :输出比较通道的数据寄存器:输出比较通道的数据寄存器OCxRS OCxRS :输出比较通道的辅助

56、数据寄存器:输出比较通道的辅助数据寄存器4.3 4.3 输出比较的控制寄存器输出比较的控制寄存器76输出比较定时器选择位输出比较定时器选择位1 = Timer 3 是比较是比较x 的时钟源的时钟源0 = Timer 2 是比较是比较x 的时钟源的时钟源OCM:输出比较模式选择位:输出比较模式选择位111 = OCx 处于处于PWM 方式,错误引脚使能方式,错误引脚使能110 = OCx 处于处于PWM 方式,错误引脚禁止方式,错误引脚禁止101 = 初始化初始化OCx 引脚为低电平,在引脚为低电平,在OCx 引脚上产生连续的输出脉冲双)引脚上产生连续的输出脉冲双)100 = 初始化初始化OCx

57、 引脚为低电平,在引脚为低电平,在OCx 引脚上产生单个输出脉冲引脚上产生单个输出脉冲011 = 比较匹配事件使比较匹配事件使OCx 引脚的电平交替翻转单)引脚的电平交替翻转单)010 = 初始化初始化OCx 引脚为高电平,比较匹配事件强制引脚为高电平,比较匹配事件强制OCx 引脚为低电平引脚为低电平001 = 初始化初始化OCx 引脚为低电平,比较匹配事件强制引脚为低电平,比较匹配事件强制OCx 引脚为高电平引脚为高电平000 = 输出比较通道禁止输出比较通道禁止例例1 1:采用单比较匹配模式在:采用单比较匹配模式在OC4OC4RD3RD3引脚产生引脚产生1.6k Hz1.6k Hz占空比为

58、占空比为50%50%)的连续信号。)的连续信号。设置分析:设置分析:(1 1要求输出的信号要求输出的信号 f= 1.6k Hz f= 1.6k Hz 系统时钟频率为系统时钟频率为 Fosc=7.3728MHz Fosc=7.3728MHz 指令周期时钟频率为指令周期时钟频率为 Fcy=Fosc/4=1.8432MHz Fcy=Fosc/4=1.8432MHz(2 2输出比较模块采用输出比较模块采用1616位定时器位定时器Time2Time2,Time2Time2使用内部使用内部时钟,预分频时钟,预分频1:11:1,可得:,可得:2 2* *PR=T/Tcy=Fcy/f =1.8432MHz /

59、1.6kHz=1152PR=T/Tcy=Fcy/f =1.8432MHz /1.6kHz=1152PR=576=0 x240PR=576=0 x240774.4 4.4 输出比较的应用举例输出比较的应用举例void ConfigOC4()/输出比较模块配置输出比较模块配置 OC4CON = 0 x0000; /Timer2是比较是比较4的时钟源的时钟源 OC4R = 0 x0200; /设置匹配值设置匹配值0 x0200 T2CON = 0 x0000;/预分频预分频1:1,16位定时器,使用内部时钟位定时器,使用内部时钟 PR2 = 0 x0240; /周期寄存器赋值周期寄存器赋值0 x02

60、40,TMR2在在0 x0240处复位处复位 TMR2 = 0 x00; /TMR2初值初值0 x00 IFS1bits.OC4IF = 0; /清除输出比较中断标志位清除输出比较中断标志位 IEC1bits.OC4IE = 1; /使能输出比较中断使能输出比较中断 IPC5bits.OC4IP = 7; /设置中断优先级设置中断优先级7 IEC0bits.T2IE = 0; /不使能不使能Timer2定时器中断定时器中断/*中断子程序:输出比较中断子程序:输出比较3中断,比较匹配时产生中断中断,比较匹配时产生中断*/void _attribute_(_interrupt_) _OC4Inte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论