新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PIC单片机的学习心得

PIC单片机的学习心得

作者: 时间:2014-01-11 来源:网络 收藏

  (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的产生需要此定时器

  AD模块

  有一个十位、八路的AD转换器。其参考电压可以为电源电压VDD,也可以是外部参考电压(VREF引脚),当AD转换完成后可以产生一个中断,此中断可以把单片机从睡眠状态中唤醒。下面来介绍一下关于AD转换的编程方法。

  要使用一个ADC,要做的有一下几件事情:

  (1)设置端口,需要采样模拟信号的端口必须设置为模拟输入状态,如果设置为数字端口,将使转换结果不正确,端口的模拟输入可以由寄存器ANSEL来配置,在讲RA口的时候已经说到了如何配置了。

  (2)通道的选择,有八路外部通道和三路内部通道,可以通过ADCON0寄存器的CHS3:0>位来设置通道的选择。

  (3)参考电压的选择,参考电压可以是VDD,也可以是外部参考电压,可以通过ADCON0寄存器的VCFG位来设置,当VCFG=0时,参考电压为VDD,当VCFG=1时,参考电压为外部参考电压(来自VREF引脚)

  (4)ADC的转换格式,AD转换后的结果保存在一个寄存器对里面:ADRESH和ADRESL,但是AD转换结果只有十位,设置AD转换格式可以通过设置 ADCON0的ADFM位来选择,当ADFM=1时10位的AD结果的低八位保存在ADRESL内,高两位保存在ADRESH内;当ADFM=0时10位的AD结果的高八位保存在ADRESH内,低两位保存在ADRESL内。

  (5)AD时钟源的选择,寄存器ADCON1专门来设置AD的时钟源,ADCS2:0>不同组合,可以将AD的时钟源设置为不同的频率,可以为FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64和FRC(内部RC)。

  (6)AD中断的配置,要使用AD的中断功能,可以先把AD中断使能,ADIE位设置为1(在寄存器PIE1中),PEIE位置1(在INTCON寄存器中),总中断GIE位置1(INTCON寄存器中)。

  要开始一个AD转换,首先要使能ADC模块,即把寄存器ADCON0的ADON位置1即可,然后将GO/DONE位(ADCON0中)置1就可以启动AD转换了。

比较器相关文章:比较器工作原理


分频器相关文章:分频器原理
上拉电阻相关文章:上拉电阻原理


评论


相关推荐

技术专区

关闭