PIC单片机16F84的内部硬件资料(四)
发布时间:2008/5/27 0:00:00 访问次数:714
http://www.hificat.com
定时器/计数器tmro
pic单片机16f84中有一个定时器,此定时器也可用于计数,因此称为定时器/计数器,符号为tmro。tmro可用于定时控制、延时、对外部事件计数和检测等场合。tmro是一个8位增量(加1)计数器。它在数据存贮器中的地址为01。定时器所用的时钟源可以是内部系统时钟(osc/4,即四倍振荡周期),也可以是外部时钟。若tmro对内部系统时钟的标准脉冲系列进行计数时,就成为定时器;对外部脉冲进行计数时tmro就成为计数器。
不管是定时还是计数方式,tmro在对内部时钟或对外部事件计数时,都不占用cpu时间,除非tmro溢出,才可能中断cpu的当前操作。可见,定时器是单片机16f84中效率高且工作灵活的部件。
为了扩大定时或计数的范围,配合tmro的使用,还有一个可编程预定标器。此定标器实际上是一个可编程分频器。
tmro的内部结构示意图如附图所示。其工作方式由数据存储器中的项选寄存器option控制。option是一个可读/写的寄存器,如附表所示。它含有配置tmro/wdt预定标器、外部int中断、tmro等的各种控制位。
tmro的定时、计数方式是由option寄存器中的d5(即tocs位)确定。当tocs=0时,工作于定时器方式;当tocs=1时,工作于计数器方式。作定时器时,每个指令周期加1(无预分频时);而作计数器时,则在每个ra4/tocki引脚上电平变化时加1。option寄存器的位4(tocs位)决定外部脉冲的触发方式,当tose=1,下降沿触发;tose=0,上升沿触发。当tmro内部计数器发生计数溢出(从ffh→00h)时,溢出位送入中断控制寄存器intcon。
由附图可知,预分频器也是一个8位计数器。其分频数是由option寄存器中的ps2~ps0三位值来改变。分频数可以是以下8种之一:1∶1、1∶2、1∶4、1∶8、1∶16、1∶32、1∶64和1∶128。
当分频器用于tmro时,所有写入tmro的指令,如clrf 1、movwf 1、bsf 1、等都将对预分频器清零。需要注意的是,预分频器是不能读写的。此分频器可用于tmro,也可用于wdt,其切换由软件控制。为了避免意外的芯片复位,当需要切换时,必须执行相应的一段程序,以下是从wdt切换到tmro时所需执行的程序:
clrwdt ;
对wdt和预定标器清零
bsf status,rp0 ;选中存储体1
movlw b′xxxx0xxx′ ;psa=0,选中tmro
movwf option ;送入option寄存器
bcf status,rp0 ;复位存储体0
pic单片机16f84中有一个定时器,此定时器也可用于计数,因此称为定时器/计数器,符号为tmro。tmro可用于定时控制、延时、对外部事件计数和检测等场合。tmro是一个8位增量(加1)计数器。它在数据存贮器中的地址为01。定时器所用的时钟源可以是内部系统时钟(osc/4,即四倍振荡周期),也可以是外部时钟。若tmro对内部系统时钟的标准脉冲系列进行计数时,就成为定时器;对外部脉冲进行计数时tmro就成为计数器。
不管是定时还是计数方式,tmro在对内部时钟或对外部事件计数时,都不占用cpu时间,除非tmro溢出,才可能中断cpu的当前操作。可见,定时器是单片机16f84中效率高且工作灵活的部件。
为了扩大定时或计数的范围,配合tmro的使用,还有一个可编程预定标器。此定标器实际上是一个可编程分频器。
tmro的内部结构示意图如附图所示。其工作方式由数据存储器中的项选寄存器option控制。option是一个可读/写的寄存器,如附表所示。它含有配置tmro/wdt预定标器、外部int中断、tmro等的各种控制位。
tmro的定时、计数方式是由option寄存器中的d5(即tocs位)确定。当tocs=0时,工作于定时器方式;当tocs=1时,工作于计数器方式。作定时器时,每个指令周期加1(无预分频时);而作计数器时,则在每个ra4/tocki引脚上电平变化时加1。option寄存器的位4(tocs位)决定外部脉冲的触发方式,当tose=1,下降沿触发;tose=0,上升沿触发。当tmro内部计数器发生计数溢出(从ffh→00h)时,溢出位送入中断控制寄存器intcon。
由附图可知,预分频器也是一个8位计数器。其分频数是由option寄存器中的ps2~ps0三位值来改变。分频数可以是以下8种之一:1∶1、1∶2、1∶4、1∶8、1∶16、1∶32、1∶64和1∶128。
当分频器用于tmro时,所有写入tmro的指令,如clrf 1、movwf 1、bsf 1、等都将对预分频器清零。需要注意的是,预分频器是不能读写的。此分频器可用于tmro,也可用于wdt,其切换由软件控制。为了避免意外的芯片复位,当需要切换时,必须执行相应的一段程序,以下是从wdt切换到tmro时所需执行的程序:
clrwdt ;
对wdt和预定标器清零
bsf status,rp0 ;选中存储体1
movlw b′xxxx0xxx′ ;psa=0,选中tmro
movwf option ;送入option寄存器
bcf status,rp0 ;复位存储体0
http://www.hificat.com
定时器/计数器tmro
pic单片机16f84中有一个定时器,此定时器也可用于计数,因此称为定时器/计数器,符号为tmro。tmro可用于定时控制、延时、对外部事件计数和检测等场合。tmro是一个8位增量(加1)计数器。它在数据存贮器中的地址为01。定时器所用的时钟源可以是内部系统时钟(osc/4,即四倍振荡周期),也可以是外部时钟。若tmro对内部系统时钟的标准脉冲系列进行计数时,就成为定时器;对外部脉冲进行计数时tmro就成为计数器。
不管是定时还是计数方式,tmro在对内部时钟或对外部事件计数时,都不占用cpu时间,除非tmro溢出,才可能中断cpu的当前操作。可见,定时器是单片机16f84中效率高且工作灵活的部件。
为了扩大定时或计数的范围,配合tmro的使用,还有一个可编程预定标器。此定标器实际上是一个可编程分频器。
tmro的内部结构示意图如附图所示。其工作方式由数据存储器中的项选寄存器option控制。option是一个可读/写的寄存器,如附表所示。它含有配置tmro/wdt预定标器、外部int中断、tmro等的各种控制位。
tmro的定时、计数方式是由option寄存器中的d5(即tocs位)确定。当tocs=0时,工作于定时器方式;当tocs=1时,工作于计数器方式。作定时器时,每个指令周期加1(无预分频时);而作计数器时,则在每个ra4/tocki引脚上电平变化时加1。option寄存器的位4(tocs位)决定外部脉冲的触发方式,当tose=1,下降沿触发;tose=0,上升沿触发。当tmro内部计数器发生计数溢出(从ffh→00h)时,溢出位送入中断控制寄存器intcon。
由附图可知,预分频器也是一个8位计数器。其分频数是由option寄存器中的ps2~ps0三位值来改变。分频数可以是以下8种之一:1∶1、1∶2、1∶4、1∶8、1∶16、1∶32、1∶64和1∶128。
当分频器用于tmro时,所有写入tmro的指令,如clrf 1、movwf 1、bsf 1、等都将对预分频器清零。需要注意的是,预分频器是不能读写的。此分频器可用于tmro,也可用于wdt,其切换由软件控制。为了避免意外的芯片复位,当需要切换时,必须执行相应的一段程序,以下是从wdt切换到tmro时所需执行的程序:
clrwdt ;
对wdt和预定标器清零
bsf status,rp0 ;选中存储体1
movlw b′xxxx0xxx′ ;psa=0,选中tmro
movwf option ;送入option寄存器
bcf status,rp0 ;复位存储体0
pic单片机16f84中有一个定时器,此定时器也可用于计数,因此称为定时器/计数器,符号为tmro。tmro可用于定时控制、延时、对外部事件计数和检测等场合。tmro是一个8位增量(加1)计数器。它在数据存贮器中的地址为01。定时器所用的时钟源可以是内部系统时钟(osc/4,即四倍振荡周期),也可以是外部时钟。若tmro对内部系统时钟的标准脉冲系列进行计数时,就成为定时器;对外部脉冲进行计数时tmro就成为计数器。
不管是定时还是计数方式,tmro在对内部时钟或对外部事件计数时,都不占用cpu时间,除非tmro溢出,才可能中断cpu的当前操作。可见,定时器是单片机16f84中效率高且工作灵活的部件。
为了扩大定时或计数的范围,配合tmro的使用,还有一个可编程预定标器。此定标器实际上是一个可编程分频器。
tmro的内部结构示意图如附图所示。其工作方式由数据存储器中的项选寄存器option控制。option是一个可读/写的寄存器,如附表所示。它含有配置tmro/wdt预定标器、外部int中断、tmro等的各种控制位。
tmro的定时、计数方式是由option寄存器中的d5(即tocs位)确定。当tocs=0时,工作于定时器方式;当tocs=1时,工作于计数器方式。作定时器时,每个指令周期加1(无预分频时);而作计数器时,则在每个ra4/tocki引脚上电平变化时加1。option寄存器的位4(tocs位)决定外部脉冲的触发方式,当tose=1,下降沿触发;tose=0,上升沿触发。当tmro内部计数器发生计数溢出(从ffh→00h)时,溢出位送入中断控制寄存器intcon。
由附图可知,预分频器也是一个8位计数器。其分频数是由option寄存器中的ps2~ps0三位值来改变。分频数可以是以下8种之一:1∶1、1∶2、1∶4、1∶8、1∶16、1∶32、1∶64和1∶128。
当分频器用于tmro时,所有写入tmro的指令,如clrf 1、movwf 1、bsf 1、等都将对预分频器清零。需要注意的是,预分频器是不能读写的。此分频器可用于tmro,也可用于wdt,其切换由软件控制。为了避免意外的芯片复位,当需要切换时,必须执行相应的一段程序,以下是从wdt切换到tmro时所需执行的程序:
clrwdt ;
对wdt和预定标器清零
bsf status,rp0 ;选中存储体1
movlw b′xxxx0xxx′ ;psa=0,选中tmro
movwf option ;送入option寄存器
bcf status,rp0 ;复位存储体0