单片机原理及应用系统设计第11章--STC15系列单片机的PCA模块课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机原理及应用系统设计第11章--STC15系列单片机的PCA模块课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 系统 设计 11 STC15 系列 PCA 模块 课件
- 资源描述:
-
1、第11章 STC15系列单片机PCA模块单片机原理及应用系统设计本章主要内容 PCA的结构PCA模块控制寄存器PCA模块的工作模式与应用11.1 PCA的结构的结构 IAP15W4K58S4单片机内部集成了单片机内部集成了2路可编程计数器阵路可编程计数器阵列(列(PCA)模块,可用于软件定时)模块,可用于软件定时(Compare)、外部脉、外部脉冲捕获冲捕获(Capture)、高速输出以及脉宽调制(、高速输出以及脉宽调制(PWM)输)输出等功能,常简称为出等功能,常简称为PCA模块的模块的CCP功能。功能。IAP15W4K58S4单片机的PCA模块含有一个特殊的16位定时器(CH和CL),有2
2、个16位的捕获/比较模块与之相连,PCA模块结构如图11-1所示。11.1 PCA的结构模块模块0连接到连接到P1.0/CCP1或或P3.6/CCP1_2或或P2.6/CCP1_3 模块模块1连接到连接到P1.1/CCP0或或P3.5/CCP0_2或或P2.5/CCP0_3 11.1 PCA的结构每个模块可编程工作在每个模块可编程工作在4种模式下:种模式下:1.1.上升上升/下降沿捕获下降沿捕获2.2.软件定时器软件定时器3.3.高速脉冲高速脉冲4.4.可调制脉冲输出可调制脉冲输出16位PCA定时器/计数器是2个模块的公共时间基准,其结构如下图11-2所示。寄存器CH和CL构成16位PCA的自
3、动递增计数器,CH是高8位,CL是低8位。PCA计数器的时钟源有以下几种:1/12系统时钟、系统时钟、1/8系统时钟、系统时钟、1/6系统时钟、系统时钟、1/4系统系统时钟、时钟、1/2系统时钟、定时器系统时钟、定时器T0溢出脉冲或溢出脉冲或ECI引脚的输入脉冲引脚的输入脉冲(ECI引脚为P1.2或通过设置为P2.4或P3.4)。定时器的计数源由CMOD特殊功能寄存器中的CPS2,CPS1和CPS0位来确定(见CMOD特殊功能寄存器说明)。PCA计数器主要由PCA工作模式寄存器CMOD和PCA控制寄存器CCON进行管理和控制。1.PCA工作模式寄存器工作模式寄存器CMOD寄存器寄存器CMOD用
4、于选择用于选择PCA计数器的脉冲源及计数溢出计数器的脉冲源及计数溢出中断管理。地址为中断管理。地址为D9H,复位值为,复位值为0 xxx 0000B,其各位定,其各位定义如表义如表11-1所示。所示。CIDL:空闲模式下是否停止:空闲模式下是否停止PCA计数的控制位计数的控制位 CIDL=0;空闲模式下PCA计数器继续计数;CIDL=1;空闲模式下PCA计数器停止计数。CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位计数脉冲源选择控制位 PCA计数脉冲选择如表11-2所示。ECF:PCA计数溢出中断使能位计数溢出中断使能位 ECF=0:禁止寄存器CCON中CF位的中断;ECF=1:允许
5、寄存器CCON中CF位的中断。2.PCA控制寄存器控制寄存器CCON寄存器寄存器CCON用于控制用于控制PCA计数器的运行及记录各计数器的运行及记录各PCA模块模块的中断请求标志位。地址为的中断请求标志位。地址为D8H,复位值为,复位值为00 xx x000B。其各位。其各位定义如表定义如表11-3所示。所示。CFCF:PCAPCA计数器溢出标志位。计数器溢出标志位。当当PCAPCA计数器溢出时,计数器溢出时,CFCF由硬件置位。如果由硬件置位。如果CMODCMOD寄寄存器的存器的ECFECF位置位置1 1,则,则CFCF标志可用来作为计数器计满溢出标志可用来作为计数器计满溢出中断标志。中断标
6、志。CFCF位可通过硬件或软件置位,位可通过硬件或软件置位,但只可通过软但只可通过软件清零。件清零。CRCR:PCAPCA计数器运行控制位。计数器运行控制位。CR=0CR=0:启动:启动PCAPCA计数器计数器:计数。计数。CR=1CR=1:关闭:关闭PCAPCA计数器计数。计数器计数。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。CCF0:PCA模块模块0中断标志。中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。3.PCA3.PCA模块比较模块比较/捕获寄存器捕获寄存器CCAPMnCCAPMn(n=0,1)(n=0,1)比较比较/捕获寄存器捕获寄存器CCAPM0对
7、应对应PCA模块模块0,CCAPM1对应对应PCA模块模块1。地址为。地址为DBH,复位值均为,复位值均为0000 0000B。CCAPMn寄存器的各位定义如表寄存器的各位定义如表11-4所示。所示。ECOMnECOMn:比较器功能使能位。:比较器功能使能位。当ECOM01时,允许比较器功能。CAPPnCAPPn:正捕获控制位。正捕获控制位。当CAPP01时,允许上升沿捕获。CAPNnCAPNn:负捕获控制位。:负捕获控制位。当CAPN01时,允许下降沿捕获。MATnMATn:匹配控制位。匹配控制位。当MATn1时,PCA计数器(CH、CL)的计数值与模块n的比较/捕获寄存器(CCAPnH、C
8、CAPnL)的值匹配时,将置位CCON寄存器中的中断请求标志位CCFn.。TOGn:翻转控制位。翻转控制位。当TOGn1时,PCA模块工作在高速脉冲输出模式。即PCA计数器(CH、CL)的数值与模块n的比较/捕获存器(CCAPnH、CCAPnL)的值匹配时,PCA模块n引脚的输出状态翻转。PWMn:脉宽调制模式控制位。脉宽调制模式控制位。当PWMn1时,PCA模块工作在脉宽调制模式,PCA模块n引脚用于脉宽调制输出。ECCFn:PCA模块模块n中断使能控制位。中断使能控制位。ECCFn=1:允许PCA模块n的CCFn标志位被置1,产生中断。ECCFn=0:禁止中断。CCAPMn寄存器各位的不同
9、取值对应PCA模块n不同的工作模式,如表11-5所示。4.PCA的的16位计数器位计数器CH、CL寄存器CH是PCA计数器的高8位,其地址为F9H。寄存器CL是PCA计数器的低8位,其地址为E9H,复位值均为0000 0000B,用于保存PCA的装载值。5.PCA的捕捉的捕捉/比较寄存器比较寄存器CCAPnH、CCAPnL(n=0,1)当PCA模块工作在捕获或比较模式时,CCAPnH、CCAPnL寄存器用于存储16位捕获计数值;当PCA模块工作在PWM模式时,CCAPnH、CCAPnL寄存器用于控制输出的占空比。其复位值均为00H。它们对应的地址分别为:CCAP0L EAH、CCAP0H FA
10、H:模块0的捕捉/比较寄存器。CCAP1L EBH、CCAP1H FBH:模块1的捕捉/比较寄存器。6.PCA模块模块PWM寄存器寄存器PCA_PWMn(n=0,1)PCA模块PWM寄存器PCA_PWMn用于设置PCA模块工作在PWM模式时的功能选择。PCA_PWM0对应模块0,其地址为F2H,PCA_PWM1对应模块1,其地址为F3H,复位值均为00H,各位定义如表11-6所示。EBSn_1、EBSn_0:PCA模块模块n工作于工作于PWM模式时的功能选模式时的功能选择位。择位。位数选择如表11-7所示。EPCnH:在:在PWM模式下,与模式下,与CCAPnH组成组成9位数。位数。EPCnL
11、:在:在PWM模式下,与模式下,与CCAPnL组成组成9位数。位数。11.3.1 11.3.1 捕获模式捕获模式CCAPMn寄存器的CAPNn和CAPNn两位中至少一位为1时,PCA模块n工作在捕获模式,其结构如图11-3所示。PCA模块工作于捕获模式时,对模块的外部模块工作于捕获模式时,对模块的外部CCPn输入输入(CCP0/P11,CCP1/P10,CCP2/P37)的跳变进行采样。当采)的跳变进行采样。当采样到有效跳变时,样到有效跳变时,PCA硬件就将硬件就将PCA计数器阵列寄存器计数器阵列寄存器(CH和和CL)的值装载到模块的捕获寄存器中()的值装载到模块的捕获寄存器中(CCAPnL和
12、和CCAPnH)。)。如果如果CCON特殊功能寄存器中的位特殊功能寄存器中的位CCFn和和CCAPMn特殊功特殊功能寄存器中的位能寄存器中的位ECCFn位被置位,将产生中断。可在中断位被置位,将产生中断。可在中断服务程序中判断哪一个模块产生了中断,并注意中断标志位服务程序中判断哪一个模块产生了中断,并注意中断标志位的软件清零问题。的软件清零问题。11.3 PCA模块的工作模式与应用模块的工作模式与应用【例【例11.1】利用利用IAP15W4K58S4单片机单片机PCA模块的捕获模式功能,模块的捕获模式功能,对按键输入信号的下降沿进行捕获,控制流水灯的方向。电路原对按键输入信号的下降沿进行捕获,
13、控制流水灯的方向。电路原理如图理如图11-4所示。请编写程序。所示。请编写程序。解:解:C C语言源程序代码如下:语言源程序代码如下:#include stc15w4k32s4.h /包含单片机头文件包含单片机头文件bit LEDGoFlag=0;/定义标志,流水灯方向定义标志,流水灯方向bit HaveInt=0;/有中断产生标记有中断产生标记void IO_Init(void);/函数声明函数声明void PCA_Init(void);void LED_Go(void);void Delay_ms(unsigned int ms);void main(void)/主程序主程序 IO_Ini
14、t();/IO口初始化口初始化 PCA_Init();/PCA模块初始化模块初始化 while(1)LED_Go();/运行流水灯运行流水灯 if(HaveInt=1)/有中断产生有中断产生 LEDGoFlag=!LEDGoFlag;/流水灯反向流水灯反向 HaveInt=0;void Delay_ms(unsigned int ms)/延时函数延时函数 unsigned int i;while(ms-)!=0)for(i=0;i 580;i+);void LED_Go(void)/流水灯函数流水灯函数 unsigned char LEDCnt;if(LEDGoFlag=1)/如果标记有效如果
15、标记有效 for(LEDCnt=0;LEDCntLEDCnt);/将数据送到将数据送到P0口口 Delay_ms(100);/延时延时100ms else for(LEDCnt=0;LEDCnt4;LEDCnt+)/依次从依次从往往上上 /下下单个点亮单个点亮 P0=(0 x10LEDCnt);/将数据送到将数据送到P0口口 Delay_ms(100);/延时延时100ms 第第11章章 STC15系列单片机系列单片机PCA模块模块void PCA_Init(void)/PCA计数模块初始化函数,使用计数模块初始化函数,使用PCA模模 /块的输入捕捉功能块的输入捕捉功能 AUXR1|=0 x1
16、0;/CCP端口切换至端口切换至P3.4,P3.5,P3.6 AUXR1&=0 xdf;CCON=0;/初始化初始化PCA控制寄存器,停止控制寄存器,停止PCA计数计数器器 /清除清除CF标记,清除标记,清除PCA各个模块中断各个模块中断 CCAPM0=0 x11;/初始化初始化PCA的比较的比较/捕获寄存器捕获寄存器0,/允许下降沿,捕获使能允许下降沿,捕获使能CCF0中断中断 CL=0;/清除清除PCA计数器计数器 CH=0;CMOD=0 x82;/设置设置PCA计数器时钟源为计数器时钟源为Fosc/2 /PCA计数器空闲模式停止计数,禁止计数器空闲模式停止计数,禁止PCA /计数溢出中断
17、计数溢出中断 CR=1;/运行运行PCA计数器计数器 EA=1;/启用中断启用中断void PCA_ISR(void)interrupt 7 /PCA模块捕获中断处理函数模块捕获中断处理函数 if(CCF0=1)/捕获中断捕获中断 HaveInt=1;/有中断产生标记有中断产生标记 CCF0=0;/PCA模块模块0比较比较/捕获中断标记必须软件清零捕获中断标记必须软件清零 void IO_Init(void)/单片机单片机IO端口模式初始化端口模式初始化 P0M1=0 x00;P0M0=0 x00;P1M1&=(10)|(14);P1M0&=(10)|(14);11.3.2 1611.3.2
18、16位软件定时器模式位软件定时器模式16位软件定时器模式结构图如图11-5所示。通过置位通过置位CCAPMn寄存器的寄存器的ECOM和和MAT位,可使位,可使PCA模模块用作软件定时器(上图)。块用作软件定时器(上图)。PCA定时器的值与模块捕获寄存器的值相比较,当两者相等定时器的值与模块捕获寄存器的值相比较,当两者相等时,如果位时,如果位CCFn(在在CCON特殊功能寄存器中特殊功能寄存器中)和位和位ECCFn(在(在CCAPMn特殊功能寄存器中)都置位,将产生中断。特殊功能寄存器中)都置位,将产生中断。CH,CL每隔一定的时间自动加每隔一定的时间自动加1,时间间隔取决于选择的,时间间隔取决
19、于选择的时钟源。例如,当选择的时钟源为时钟源。例如,当选择的时钟源为SYSclk/12,每,每12个时钟个时钟周期周期CH,CL加加1。当。当CH,CL增加到等于增加到等于CCAPnH,CCAPnL 时,时,CCFn=1,产生中断请求。如果每次,产生中断请求。如果每次PCA模模块中断后,在中断服务程序中断给块中断后,在中断服务程序中断给CCAPnH,CCAPnL增加增加一个相同的数值,那么下次中断来临的间隔时间一个相同的数值,那么下次中断来临的间隔时间T也是相同也是相同的,从而实现了定时功能。定时时间的长短取决于时钟源的的,从而实现了定时功能。定时时间的长短取决于时钟源的选择以及选择以及PCA
20、计数器计数值的设置。下面举例说明计数器计数值的设置。下面举例说明PCA 计计数器计数值的计算方法。数器计数值的计算方法。假设,系统时钟频率假设,系统时钟频率SYSclk=18.432MHz,选择的时钟源为选择的时钟源为SYSclk/12,定时时间定时时间T为为5ms,则则PCA计数器计数值为:计数器计数值为:PCA计数器的计数值计数器的计数值=T/(1/SYSclk)12)=0.005/(1/18432000)12)=7680(10进制数进制数)=1E00H(16进制数进制数)也就是说,也就是说,PCA计数器计数计数器计数1E00H次,定时时间才是次,定时时间才是5ms,这也就是每次给这也就是
21、每次给CCAPnH,CCAPnL增加的数值增加的数值(步长步长)。【例【例11.211.2】利用利用IAP15W4K58S4IAP15W4K58S4单片机单片机PCAPCA模块的软件定时模块的软件定时功能,在功能,在P0.4P0.4引脚输出引脚输出1S1S的方波控制的方波控制LEDLED指示灯的亮灭。指示灯的亮灭。请编写程序。请编写程序。解:解:C语言源程序如下:语言源程序如下:#include stc15w4k32s4.h /包含单片机头文件unsigned char PCA_Cnt=0;/全局变量定义sbit LED=P04;/LED端口void PCA_Init(void);/函数声明v
展开阅读全文