11章TIMER2、ccp模块
10比较和捕获单元(CCP)

27
输出比较模式的电路结构
输出比较模式的电路结构如图10.2所示
图10.2输出比较模式电路结构
28
输出比较模式的工作机制
由程序初始化设定好CCPx模块为输出比较模式后,图 10.2中的比较部分的硬件电路不断地将CCPRx中的值 与TMR1中的值进行比较,一旦相匹配就由图中左边 部分经输出控制逻辑电路、R-S触发器、受控三态门 后从RC2/CCP1引脚输出下列4种情况之一的信号,并 置位CCPxIF中断标志及引起相应的事件
预分频器和边沿检测电路仅工作在输入捕捉模式,在 其他工作模式下,预分频器将保持为0,对单片机的 任何方式复位,将使预分频器清零。
21
使用输入捕捉模式的注意事项
当捕获到设定的边沿时,TMR1中的16位值是一次性 被读到CCPRx中,能准确记录事件发生的时刻,这与 在TMR1的中断中读取TMR1的值不同,后者因响应 中断需要时间,读取TMR1时要分高、低读取,这些 都会引入误差。
殊事件:对CCP1,将复位TMR1;对CCP2,将复位 TMR1并启动ADC(若ADC已被使能); 上述4种情况由CCP控制寄存器CCP1CON的低4位: CCP1M3~CCP1M0的设置决定 在输出比较模式下,RC2/CCP1引脚必须设为输出
31
使用输出比较模式的注意事项
输出比较模式下RC2/CCP1引脚的输出电平由CCPx模 块内的R-S触发器决定,与其输出比较的工作状态有 关,而与RC2用作普通I/O口时的输出锁存器无关,也 即,此时不能用指令对其作置位或清零操作。
17
使用输入捕捉模式的注意事项
当CCPx工作于输入捕捉模式时,TMR1必须设为定时 方式或同步计数方式(时钟源来自外部引脚或自带的 振荡器),否则CCPx输入捕捉模式就不能正常工作。
Timer设计文档

Timer Design Spec1.1概述Timer模块用于定时,第一路Timer和第二路Timer均为16bit。
其中第一路Timer 可复用为两路8bit计数器。
当其计数值与用户预设值相同时产生溢出中断。
第二路Timer带输出比较功能,可用于PWM。
1.2接口说明1.3寄存器说明表格1-2 第一路Timer 寄存器说明:此处的Timer0和Timer1指的是第一路Timer作为8bit模式时分出的低8位和高8位两个定时器。
1.3.1定时寄存器TMxCDATA该寄存器中存放着用户设定的定时值,TM0CDATA为低8位设定值,TM1CDATA 为高8位设定值。
当计数器计数到与该寄存器的值相等时,产生溢出中断。
表格1-3 TM0CDA TA寄存器表格1-4 TM1CDA TA寄存器说明:在独立8 Bit Timer时,两个寄存器定时值分别对应Timer0和Timer1。
在16 Bit Timer模式下,TM0CDATA对应低八位定时值设定,TM1CDATA对应高八位定时值设定。
1.3.2 模式选择寄存器TM1MOD表格1-5 TM1MOD寄存器说明:Timer停止运行时,并且清除中断之后,才可重新配置该寄存器。
1.3.3 Timer控制寄存器TMxCON表格1-6 TM0CON寄存器清零;2.在配置该寄存器时,建议T0Run、T0Clr信号只有1位是有效的,即启动和清零独立操作,不建议同时令T0Run、T0Clr有效;3、当系统时钟比计时时钟快时,执行T0Clr操作后要等待35us再执行启动Timer操作,否则可能会导致计数器清零不成功,导致Timer功能异常。
表格1-7 TM1CON寄存器说明:1、该小节指的Timer0、Timer1均针对独立8 Bit 模式时的低八位和高八位的定时器。
2、在16 Bit 模式时,TM1CON 寄存器无效,一直保持为0。
第一路Timer 的运行和清零控制均交由TM0CON 寄存器控制。
PIC单片机CCP模块技术笔记

与输入捕捉模式\比较器相关的寄存器作用:1)用于测量输入引脚的周期信号的周期,频率和占空比等2)测量输入的非周期性矩形脉冲信号的宽度,到达时刻和消失时刻等特点: 1)时钟源来自TMR12)应先设好TMR1,且RC2/CCP1脚设为输入状态3)捕捉开启后,TMR1自动累加,CCP1一直检测引脚状态,与设定事件相同符时,TMR1的值被捕捉到CCPR1中,并产生中断.工作原理:捕捉条件,1)每个脉冲下降沿; 2)每个脉冲上升沿; 3) 每4个脉冲上升沿;4) 每16个脉冲下降沿; 发生后,CCPR1马上记下TMR1的值注意点:1) CCP1中断后,应用软件将其清0; 2)当CCPR1中的值还没取出时有新的捕捉发生,则原有的值被覆盖;3) 如果修改预分频器的值,可能会产生一次错误中断,并且预分频器不会清0.因此第一次捕捉可能是从预分频器的一个非0的起始值开始计数的.4)TMR1要设为定时器或同步工作方式;使用输入捕捉模式的步骤:1 设置RC2/CCP1为引脚输入;(TRISC寄存器)2 设置TIMER1的参数:T1CON=--000001:内部时钟,计数器频率FOSC/4,工作允许(进一步可设置PIE1中的TMR1IE中断允许,PIR1中的TMR1IF)3 设置CCP1CON的参数:CCP1CON=----0100;每个下降沿捕捉;(进一步可设置PIE1中的CCP1IE中断允许,PIR1中的CCP1IF)4 等待捕捉成功(中断或者查询)5 从CCPR1L和CCPR1H取值,该值代表捕捉发生的时刻;6 和上次的捕捉值相减,得到两次捕捉之间的时间;7 保留本次捕捉值,为下次作准备;8 重复等待捕捉成功(跳到第4步);输出比较模式作用:从引脚上输出不同宽度的矩形脉冲,延时驱动信息,晶闸管驱动信号,步进电机驱动信号等特点:由TMR1作为时钟源,选好TMR1工作方式,如果比较符合的事件发生后,改变RC2的状态工作原理:比较模式时,CCPR1和TMR1的值会一直作比较,当值相同时,产生中断,驱动事件发生:1)RC2/CCP1输出高电平; 2)输出低电平; 3)电平不变,内部产生软件中断; 4)引脚电平不变,内部触发特殊事件./////由CCP1CON中的D3---D0选择///////使用输出比较模式的步骤:1)RC2/CCP1设为输出, CCP1CON清0 迫使RC2/CCP1比较输出引脚对低电平锁存.2)TMR1设为定时器(时钟由内部产生) 或同步计数方式(时钟来自外引脚或自带振荡器)3)设定产生软件中断方式,当CCP1M3-CCP1M0=1010时,则为软件中断方式,当输出比较匹配时,RC2不受影响,而CCP1IF置1,可产生中断4)当CCP1M3-CCP1M0=1011时,为特殊事件触发方式,匹配时内部硬件产生一个触发信号,启动一些操作,同时TMR1复位清0但TMR1F不会置1PWM工作模式作用:在RC2中输出频率与脉宽随时可调的方波信号,时钟来自TMR2说明: 1) 脉宽寄存器用来调整PWM信号的脉冲宽度.2) 10位从属脉宽寄存器,CCPR1H+内部2位专用锁存器,只读,减少干扰3) 当脉宽寄存器=TMR2时,输出高电平4) 当对CCP1CON清0时,RC2输出一个低电平.并非是正确的PWM输出结果5) PWM的周期由8位的TMR2确定,宽度由TMR2的8位+其低端扩展两位工作原理: 周期确定由PR2的值确定,公式:T=(PR2+1)x4TOSCxTMR2预分频器TOSC为系统的时钟周期,4TOSC为指令周期, 预分频器可为1/4/16*****TMR2后分频不影响周期设定,但可利用其产生的中断来对PR2和CCLR1L换新值,调节脉宽.**********脉冲确定: 由CCPR1L+CCP1CON的D5和D4位确定, 公式:脉宽=DC1xTOSCxTMR2预分频器当PR2=TMR2时,脉宽值补装到从属脉宽寄存器中编程步骤: 1) 向PR2写入周期2) 写入脉宽值3) 将RC2/CCP1设为输出4) 通过T2CON设定TMR2,启用TMR25) 设定CCP1CON低4位为11XX,为PWM模式。
PIC单片机原理及应用(第十一章)解读

1011:特殊事件触发,如果CCPR1与TMR1 相等, CCP1电 平不变,( CCP1IF 置位, CCP1 将 TMR1 复位,并且启动 A/D模数转换电路)。
11.3.3
CCP1比较方式应用
CCP1模块构成输出比较功能,需要对 相应的控制位进行设置,即所谓 CCP1 模块 比较工作方式的初始化。
实例
输出脉冲信号
改变信号频率
1、CCP1引脚的设定
CCP1和RC2合用一个引脚RC2/CCP1,在 CCP1 的捕捉方式下, RC2 引脚必须由 TRISC的 Bit2设定为输入方式。
2、 TMR1工作方式的设定
当CCP1工作于捕捉模式时,必须和TMR1 搭配。同时 TMR1必须设定为定时器工作方式 或者同步计数器方式。计数初值一般以0开 始。
TMR2控制寄存器:T2CON
CCP控制寄存器CCP1CON
Bit3-Bit0/CCP1M3-CCP1M0 :脉宽调制功能设置, 主动参数。
11XX:脉宽调制方式,低2位不起作用。
Bit5~Bit4/CCP1X~CCP1Y:CCP1脉宽寄存器的低2 位,高8位在CCPR1L中,数据参数。
PWM操作设置
比较功能
CCP 模块第 2 个功能是比较方式输出,用于 从引脚上输出不同宽度的矩形脉冲信号、不同 的周期频率脉冲以及非周期频率信号等。 根据预置的特定值(CCPR1)与TMR1计数器 的计数值进行比较,当两者数值一致时给出比 配信号,触发 CCP 中断标志位置位。由 RC2 引脚 可以输出3种逻辑状态。
脉宽调制方式原理图
PWM输出信号周期
PWM输出信号周期可通过向TMR2的周期 寄存器PR2写入来设定,计算公式如下: PWM周期=4Tosc×((PR2)+1)×(TMR2 预分频值) 其中,Tosc为系统时钟周期;4×Tosc为 指令周期;TMR2预分频值可以为1、4或16。
CCP模块

0000-关闭所有模块,CCPx模块位于复位状态; 0100-捕捉模式,每一个上升沿捕捉一次; 0101-捕捉模式,每一个下降沿捕捉一次; 0110-捕捉模式,每隔4个上升沿捕捉一次; 0111-捕捉模式,每隔16个上升沿捕捉一次; 1000-比较模式,预置CCPx引脚输出为0,当比较一致 时,CCPx 引脚输出1; 1001-比较模式,预置CCPx引脚输出为1,当比较一致 时,CCPx 引脚输出0; 1010-比较模式,当比较一致时,CCPxIF=1产生中断, CCPx引脚无变化; 1011-比较模式,当比较一致时,CCPxIF=1且触发特殊 事件; 11xx-脉宽调制PWM模式
输出比较
输出比较:也是从RC2引脚输出信号;因此相应的PORTC对应 的方向寄存器要设置为输出; 和输入捕捉一样,输出比较也可以产生中断;也是设置 CCP1CON寄存器就能够实现输出比较的功能。
设置输出比较的一般步骤
1 设置RC2/CCP1为引脚输出;(TRISC寄存器) 2 设置TIMER1的参数: T1CON=--000001:内部时钟,计数器频率FOSC/4,工作 允许 3 设置CCP1CON的参数: CCP1CON=----1000;比较成功输出高电平;=----1001;比 较成功输出底电平;(进一步可设置PIE1中的CCP1IE中断允 许,PIR1中的CCP1IF) 4 装载CCPR1L和CCPR1H值,该值代表比较成功发生的时刻; 5 等待比较成功(中断或者查询) 6 计算下次比较成功发生的时刻,即更新CCPR1L和CCPR1H; 7 跳到步骤3,重新循环;
进行输入捕捉的一般步骤
1 设置RC2/CCP1为引脚输入;(TRISC寄存器) 2 设置TIMER1的参数: T1CON=--000001:内部时钟,计数器频率FOSC/4, 工作允许(进一步可设置PIE1中的TMR1IE中断允许, PIR1中的TMR1IF) 3 设置CCP1CON的参数: CCP1CON=----0100;每个下降沿捕捉;(进一步 可设置PIE1中的CCP1IE中断允许,PIR1中的CCP1IF) 4 等待捕捉成功(中断或者查询) 5 从CCPR1L和CCPR1H取值,该值代表捕捉发生的时刻; 6 和上次的捕捉值相减,得到两次捕捉之间的时间; 7 保留本次捕捉值,为下次作准备; 8 重复等待捕捉成功(跳到第4步);
11章ccp模块

PIC单片机原理 单片机原理
11.4.3 软件中断模式 当选择产生软件中断模式时,CCP1引脚不受影响, CCP1IF被置位。若允许CCP中断,则激活中断. 11.4.4 特殊事件触发器 这种模式下,将产生一个可作为启动作用的内部硬 件触发信号。CCP1的特殊事件触发器输出复位TMR1 寄存器对,这可使CCP1R寄存器成为Timer1的可编程 的周期寄存器。如果A/D转换模块使能,CCP2的特殊 事件触发器输出复位TMR1寄存器对,并启动一个A/D 转换。
PIC单片机原理 单片机原理
PIC单片机原理 单片机原理
• The type of event is configured by control bits, CCP1M3:CCP1M0 (CCPxCON<3:0>). • When a capture is made, the interrupt request flag bit, CCP1IF (PIR1<2>), is set. • The interrupt flag must be cleared in software. • If another capture occurs before the value in register CCPR1 is read, the old captured value is overwritten by the new value.
PIC单片机原理 单片机原理
the recommended method: CLRF CCP1CON off MOVLW NEW_CAPT_PS ; Load the W reg with ; the new prescaler ; move value and CCP ON MOVWF CCP1CON this ; value ; Load CCP1CON with ; Turn CCP module
利用PIC单片机CCP模块设计简易数字频率计的C语言程序

第 10章 利用 CCP 模块设计频率计#include <math.h>table[11]={0xc0 ,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8 ,0x80,0x90,0xFF} ;//不带小数点的显示段码表const char table0[11]={0X40 ,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00, 0X1 0 ,0xFF} ;//带小数点的显示段码表10.5 程序设计 10.5.4 #includ e #includ e 程序清单 <pic.h><stdio.h> //本程序利用 CCP1模块实现一个“简易数字频率计”的功能const charint cp1z[11];cp1 y1;unsignedcharcp1e[2];bank3 union {int //定义一个数组,用于存放各次的捕捉值 }cp1u ;unsigned unsigned unsigned char COUNTW ,COUNT ;char COUNTER , data ,k ;char FLAG @ 0XEF ; //定义一个共用体 //测量脉冲个数寄存器#define FLAGIT(adr ,bit) ((unsigned)(&adr)*8+(bit)) //绝对寻址位操作指令 staticbit FLAG1staticbit FLAG2staticbit FLAG3unsignedintdouble@ FLAGIT(FLAG , @ FLAGIT(FLAG , @ FLAGIT(FLAG , char s[4] ; T5 ,uo ; RE5; puad5; 0); 1); 2); //定义一个显示缓冲数组 double//spi 方式显示初始化子程序void SPIINIT(){PIR1=0;SSPCON=0x30;SSPSTAT=0xC0;〃设置SPI 的控制方式,允许SSP 方式,并且时钟下降沿发送,与"74HC595,当其 //SCLk 从低到高跳变时,串行输入寄存器 "的特点相对应TRISC=0xD7 ; //SDO 引脚为输出,SCK 引脚为输出 TRISA5=0; //RA5 引脚设置为输出,以输出显示锁存信号 FLAG1=0 ;FLAG2=0 ;FLAG3=0 ;COUNTER=0X01 ;}//CCP 模块工作于捕捉方式初始化子程序void ccpint( ){CCP1CON=0X05; T1CON=0X00 ; PEIE=1; CCP1IE=1; TRISC2=1; }//系统其它部分初始化子程序//为保证测试精度,测试 5 个脉冲的参数后//求平均值,每个脉冲都要捕捉其上升、下降沿,//故需要有 11 次中断TRISB1=0;TRISB2=0;TRISB4=1;TRISB5=1; RB1=0;RB2=0; }//SPI 传送数据子程序{SSPBUF=data ; do { }while(SSPIF==0) ;//首先设置 CCP1 捕捉每个脉冲的上升沿 //关闭 TMR1 震荡器//外围中断允许 (此时总中断关闭 ) //允许 CCP1 中断//设置 RC2 为输入void initial( ){COUNT=0X0B ; //设置与键盘有关的各口的输入、输出方式 //建立键盘扫描的初始条件void SPILED(data)//启动发送SSPIF=0;} //显示子程序,显示 4 位数 void display( ){RA5=0 ; //准备锁存for(COUNTW=0 ;COUNTW<4 ; COUNTW++){ data=s[COUNTW] ; data=data&0x0F ;if(COUNTW==k) data=tableO[data]; 〃第二位需要显示小数点 else data=table[data];SPILED(data); }for(COUNTW=0 ; COUNTW<4 ; COUNTW++){ data=0xFF ; SPILED(data); }RA5=1; } //键盘扫描子程序 void keyscan( ) {if((RB4==0)||(RB5==0)) else FLAG1 = 0 ;}//键服务子程序{ PORTB=0XFD ;if(RB5==0) data=0X01;if(RB4==0) data=0X03;PORTB=0XFB ;if(RB5==0) data=0X02;if(RB4==0) data=0X04; PORTB=0X00; if(data==0x01) { COUNTER=COUNTER+1 ; if(COUNTER>4)COUNTER=0x01 ; 〃若COUNTER 超过 4,则又从 1 计起void keyserve()//发送显示段码//连续发送 4个 DARK ,使显示好看一些 //最后给一个锁存信号,代表显示任务完成 FLAG1=1 ;//若有键按下,则建立标志 FLAG1//若无键按下,则清除标志 FLAG1//以上确定是哪个键按下//恢复 PORTB 的值//若按下 S9 键,则 COUNTER 加 1} if(data==0x02) { COUNTER=COUNTER-1 ; //若按下 S11 键,则 COUNTER 减 1 if(C0UNTER<1) COUNTER=0x04 ; 〃若 COUNTER 小于 1, } if(data==0x03) FLAG2=1 ; if(data==0x04) FLAG2=0 ; } //中断服务程序 void interrupt cp1int(void) {CCP1IF=0; cp1u.cp1e[0]=CCPR1L ; cp1u.cp1e[1]=CCPR1H ; cp1z[data]=cp1u.y1;CCP 1CON=CCPICONTOXOI ;data++;COUNT--;} //周期处理子程序//若按下 S10 键,则建立标志 //若按下 S12 键,则清除标志 //清除中断标志 则又循环从 4 计起 FLAG2 FLAG2 //存储 1 次捕捉值 //把 CCP1 模块改变成捕捉相反的脉冲沿 void PERIOD( ){T5=cp1z[1O]-cp1z[O] ;RE5=(double)T5;RE5=RE5/5;}//频率处理子程序 //求得 5 个周期的值 //强制转换成双精度数 〃求得平均周期,单位为卩s void FREQUENCY( ) {PERIOD( );RE5=1OOOOOO/RE5;//先求周期 //周期值求倒数,再乘以 1 000 000,得频率, //单位为 HZ }//脉宽处理子程序void PULSE( ) {int pu ;for(data=0, puad5=0;data<=9;data++) {pu=cp1z[data+1]-cp1z[data];puad5=(double)pu+puad5;data=data+2;}RE5=puad5/5;}//占空比处理子程序//求得5 个脉宽的和值//求得平均脉宽void OCCUPATIONAL( ) {PULSE( );puad5=RE5;PERIOD();RE5=puad5/RE5;} //主程序//先求脉宽//暂存脉宽值//再求周期//求得占空比main( ) {SPIINIT( ) ;while(1) { ccpint();initial() ;if(FLAG2==0) { s[0]=COUNTER ;s[1]=0X0A ;s[2]=0X0A ;s[3]=0X0A ;} display( );keyscan();data=0x00;TMR1H=0 ;TMR1L=0 ;CCP1IF=0;//SPI 方式显示初始化//CCP 模块工作于捕捉方式初始化//系统其它部分初始化//第一个存储COUNTER 的值//后面的LED 将显示"DARK"//调用显示子程序//键盘扫描//存储数组指针赋初值ei( );TMR1ON=1 ;while(1){if(COUNT==0)break ;//定时器1清0//清除CCP1 的中断标志,以免中断一打开就进入//中断//中断允许//定时器1 开//等待中断次数结束//禁止中断//关闭定时器//键盘扫描//若确实有键按下,则调用键服务程序 //如果没有按下确定键,则终止此次循环, //继续进行测量 //如果按下了确定键,则进行下面的数值转换和显示工作 if(COUNTER==0x01) FREQUENCY() ; //COUNTER=1 ,则需要进行频率处理 if(COUNTER==0x02) PERIOD() ;//COUNTER=2 ,则需要进行周期处理 if(C0UNTER==0x03) OCC UP A TIONAL() ; //COUNTER=3,则需要进行占空比处理 if(COUNTER==0x04) PULSE() ;k=5;if(RE5<1){RE5=RE5*1000;k=0x00;if(RE5<10){RE5=RE5*1000;k=0x00; if(RE5<100){RE5=RE5*100;k=0x01 ;if(RE5<1000){RE5=RE5*10;k=0x02;RE5=RE5;uo=(int)RE5;sprintf(s , "%4d" , uo);display(); } di(); TMR1ON=0 ; keyscan(); if(FLAG1==1) keyserve() ; if(FLAG2==0) continue//COUNTER=4 ,则需要进行脉宽处理 } else } else } else } else〃若RE5<10,则乘以1 000,保证小数点的精度 〃若RE5<100,则乘以100,保证小数点的精度 〃若RE5<1000,则乘以10,保证小数点的精度 〃把需要显示的数据转换成 4位ASII 码,且放入数//组 S 中〃若RE5<1,则乘以1 000,保证小数点的精度。
PIC单片机各寄存器汇总

1) 芯片的振荡模式选择。
2) 片内看门狗的启动。
3) 上电复位延时定时器PWRT的启用。
4) 低电压检测复位BOR模块的启用。
5) 代码保护。
__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;_CP_OFF 代码保护关闭_WDT_OFF 看门狗关闭_BODEN_OFF_PWRTE_ON 上电延时定时器打开_XT_OSC XT振荡模式_WRT_OFF 禁止Flash程序空间写操作_LVP_OFF 禁止低电压编程_CPD_OFF EEPROM数据读保护关闭LVP Low Voltage Program 低电压编程CP Code Protect 代码保护Date EE Read Protect EEPROM数据读保护Brown Out DetectPower Up TimerWatchdog TimerFlash Program Write外部时钟输入(HS,XT或LP OSC配置)如下图:陶瓷(ceramic)谐振器电容的选择如下表:一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭0=上电定时器开启位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择1=看门狗开启如右图:0=看门狗关闭位1:0 Fosc1:Fosc0:振荡器选择位0111=RC振荡器10=晶体振荡器HS模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PIC单片机原理 单片机原理
PIC单片机原理 单片机原理
CCP1 Module: Capture/Compare/PWM Register 1 (CCPR1) is comprised of two 8-bit registers: CCPR1L (low byte) and CCPR1H (high byte). The CCP1CON register controls the operation of CCP1. The special event trigger is generated by a compare match and will reset Timer1.
PIC单片机原理 单片机原理
bit 3-0 CCPxM3:CCPxM0: CCPx Mode Select bits 0000 = Capture/Compare/PWM disabled (resets CCPx module) 0100 = Capture mode, every falling edge 0101 = Capture mode, every rising edge 0110 = Capture mode, every 4th rising edge 0111 = Capture mode, every 16th rising edge
PIC单片机原理 单片机原理
11xx = PWM mode
PIC单片机原理 单片机原理
11.3 Capture Mode
In Capture mode, CCPR1H:CCPR1L captures the 16-bit value of the TMR1 register when an event occurs on pin RC2/CCP1. An event is defined as one of the following: • Every falling edge • Every rising edge • Every 4th rising edge • Every 16th rising edge
PIC单片机原理 单片机原理
8.3.1 TIMER2的原理框图 的原理框图
8-bit counter
8-bit period register
PIC单片机原理 单片机原理
The input clock (FOSC/4) has a prescale option of 1:1, 1:4 or 1:16, selected by control bits T2CKPS1:T2CKPS0 (T2CON<1:0>). The Timer2 module has an 8-bit period register, PR2. Timer2 increments from 00h until it matches PR2 and then resets to 00h on the next increment cycle. PR2 is a readable and writable register. The PR2 register is initialized to FFh upon Reset.
PIC单片机原理 单片机原理
8.3.2 the Timer2 Control register
bit 7 Unimplemented: Read as ‘0’ bit 6-3 TOUTPS3:TOUTPS0: Timer2 Output Postscale Select bits 0000 = 1:1 postscale 0001 = 1:2 postscale 0010 = 1:3 postscale;… … 1111 = 1:16 postscale
PIC单片机原理 单片机原理
The match output of TMR2 goes through a 4-bit postscaler (which gives a 1:1 to 1:16 scaling inclusive) to generate a TMR2 interrupt (latched in flag bit,TMR2IF (PIR1<1>)). Timer2 can be shut-off by clearing control bit, TMR2ON (T2CON<2>), to minimize power consumption.
PIC单片机原理 单片机原理
8.3.3 Timer2 Preprescaler and postscaler counters are cleared when any of the following occurs: • a write to the TMR2 register • a write to the T2CON register • any device Reset (POR, MCLR Reset, WDT Reset or BOR) TMR2 is not cleared when T2CON is written.
PIC单片机原理 单片机原理
bit 2 TMR2ON: Timer2 On bit 1 = Timer2 is on 0 = Timer2 is off bit 1-0 T2CKPS1:T2CKPS0: Timer2 Clock Prescale Select bits 00 = Prescaler is 1 01 = Prescaler is 4 1x = Prescaler is 16
PIC单片机原理 单片机原理
Both the CCP1 and CCP2 modules are identical (相同) in operation, with the exception being the operation of the special event trigger. Table 8-1 and Table 8-2 show the resources and interactions of the CCP module(s). In the following sections, the operation of a CCP module is described with respect to CCP1. CCP2 operates the same as CCP1 except where noted
PIC单片机原理 单片机原理
PIC单片机原理 单片机原理
11.3.1 CCP PIN CONFIGURATION In Capture mode, the RC2/CCP1 pin should be configured as an input by setting the TRISC<2> bit. Note: If the RC2/CCP1 pin is configured as an output, a write to the port can cause a Capture condition.
PIC单片机原理 单片机原理
11.2 CCP1CON register
bit 7-6 Unimplemented: Read as ‘0’
PIC单片机原理 单片机原理
bit 5-4 CCPxX:CCPxY: PWM Least Significant bits Capture mode:Unused. Compare mode:Unused. PWM mode:These bits are the two LSbs of the PWM duty cycle. The eight MSbs are found in CCPRxL.
PIC单片机原理 单片机原理
CCP2 Module: Capture/Compare/PWM Register 2 (CCPR2) is comprisedof two 8-bit registers: CCPR2L (low byte) and CCPR2H (high byte). The CCP2CON register controls the operation of CCP2. The special event trigger is generated by a compare match and will reset Timer1 and start an A/D conversion (if the A/D module is enabled).
PIC单片机原理 单片机原理
1000 = Compare mode, set output (CCPX PIN) on match (CCPxIF bit is set) 1001 = Compare mode, clear output (CCPX PIN ) on match (CCPxIF bit is set) 1010 = Compare mode, generate software interrupt on match (CCPxIF bit is set, CCPx pin is unaffected) 1011 = Compare mode, trigger special event (CCPxIF bit is set, CCPx pin is unaffected); CCP1 resets TMR1; CCP2 resets TMR1 and starts an A/D conversion (if A/D module is enabled)
PIC单片机原理 单片机原理
8.3.4 Output of TMR2
The output of TMR2 (before the postscaler) is fed to the SSP module, which optionally uses it to generate the shift clock.
PIC单片机原理 单片机原理
8.3.5与TIMER2有关的 与 有关的REGISTERS 有关的