新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 关于PIC单片机的一些经验

关于PIC单片机的一些经验

作者: 时间:2013-04-08 来源:网络 收藏

当Timer0作为计数器来使用的时候,就要用外部时钟源(OPTION_REG的T0CS置1),每次当引脚T0CK1的沿到来时Timer0的 TMR0会增加1,上升沿和下降沿可以由OPTION_REG的T0SE来设置.中断和Timer0作为定时器使用时一样.在我们编程序的时候,可以用 Timer0进行定时或产生定时信息,下面我来解释定时器的定时时间的计算.假设Timer0用的时钟源是内部的4MHZ,那么每条指令的执行时间就是 1us,设Timer0的预分频系数是1:256,TMR0的初值是6,那么定时时间为:

256×(256-6)×1us=64ms

在编程的时候需要注意的是Timer0的中断是不能把单片机从SLEEP的状态唤醒的.

(2)Timer1

Timer1是一个十六位的计数器.它有一个计数寄存器对(TMR1H:TMR1L),时钟源也是内外可选的,具有一个2bit的预分频器,可以同步或者异步操作,具有中断功能,但是溢出中断只能在外部时钟、异步的模式才能将单片机从SLEEP中唤醒,Timer1具有捕获/比较功能,还有被一些特殊事件触发功能(ECCP),比较器的输出可以与Timer1的时钟同步.下面来一一介绍这些功能.

在编程的时候也可以按照这样的步骤来进行.设置寄存器T1CON,时钟源可以选择外部或者内部的时钟源,外部时钟源可以选择LP晶体.Timer1在选择内部时钟时,可以运行在定时器的状态,选择外部时钟的时候,可以运行在定时器或者是计数器状态,工作于计数器状态时可以选择门限是高电平还是低电平计数.这些都可以通过寄存器T1CON来设置.

以下是T1CON每个位的具体功能:bit1:Timer1是否开启位,当此位设为1时,Timer1开启,设为0时,Timer1关闭;bit2:时钟源选择位,置1时,选择外部时钟(T1CK1引脚的上升沿),此位置0时,选择的是内部时钟,并且和T1ACS(寄存器CM2CON1中)配合,当 T1ACS位为0时,时钟为FOSC/4,当T1ACS位为1时,时钟为FOSC.bit2:T1SYNC:定时器1的外部时钟输入同步位,当 TMR1CS位为1、T1SYNC位为1,定时器1被设置成与外部时钟不同步,T1SYNC位为0时,定时器1被设置成与外部时钟同步模式.Bit3: T1OSCEN:此位为1时Timer1的时钟选择LP,为0时LP晶体被关闭.Bit5-4:T1CKPS:Timer1时钟的预分频系数设置,通过这两位的是指,可以讲Timer1设置成1:1、1:2、1:4、1:8几种分频值.Bit6:TMR1GE:只有当TMR1ON位为1时才有效,当此位为 1时,Timer1计数被Timer1的门限控制,此位为0时,Timer1正常计数.Bit7:T1GINV:此位为1时,Timer1在门限为高时计数,此位为0时,Timer1在门限为低时计数.

Timer1的中断编程:当Timer1的计数产生溢出的时候,如果Timer1中断允许的话,就会产生中断.中断可以这样设置,Timer1的中断允许位TMR1IE(在PIE1寄存器中)置1,寄存器INTCON的PEIE位置1,同时总中断位GIE(位于寄存器INTCON中)要置为1.当定时器产生中断的时候,会把中断标志T1IF置为1(位于寄存器PIR1中),然后PC指针指向0004H地址.T1IF位必须软件清除.

(3)Timer2

Timer2的功能于Timer1有些不同,Timer2时一个八位的计数器,有一个八位的计数寄存器TMR2,Timer2具有以下功能:有两个分频器,一个是前分频器,一个是后分频器.分频可以软件进行设置,另外,Timer2的时钟源是指令时间(FOSC/4),Timer2有一个寄存器 PR2,此寄存器的功能是当TMR2增加到PR2的值时,将产生中断,当然,中断必须允许,然后PR2的值会重新变为00H.下面来介绍Timer2的编程:

Timer2的控制寄存器T2CON作用是设置Timer2的开启关闭和前后分频的分频系数,寄存器T2CON的TOUTPS3:0> 位设置后分频系数,可以被设置成1:1~1:16;位TMR2ON为1时,Timer2开启,为0时,Timer2关闭;位T2CKPS1: 0>可以设置前分频系数,可以被设置成1、4、16.

Timer2的中断可以这样控制,允许Timer2中断位TMR2IE(位于PIE1寄存器内)被置1时,Timer2中断被允许,被置0时, Timer2中断禁止.寄存器INTCON的PEIE位置1,同时总中断位GIE(位于寄存器INTCON中)置为1.通过上面的设置,Timer2就可以产生中断了.当定时器产生中断的时候,会把中断标志T2IF置为1(位于寄存器PIR1中),然后PC指针指向0004H地址.中断标志位T2IF必须软件清除.

下面是三个定时器的比较:

唤醒功能

其他功能

定时器Timer0

内部或外部时钟源,有一个预分频器.

定时器、

醒功能.

计数器值溢出时发生中断

预分频器与看门狗共用.

定时器Timer1

内部或外部时钟源,有一个预分频器

定时器、计数器

外部时钟、异步模式时可唤醒CPU

计数器值溢出时发生中断

与比较器模块、

捕获/比较模块共用

定时器Timer2

有前分频器和后分频器

醒功能.

计数器值与预置值相等时发生中断

PWM的产生需要此定时器

分频器相关文章:分频器原理


评论


相关推荐

技术专区

关闭