原创 PIC18FXXXX系列单片机的TMR0寄存器的读写编程技巧

2007-2-1 11:20 6181 8 10 分类: MCU/ 嵌入式

       TMR0 工作原理<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Timer0 既可用作定时器亦可用作计数器;具体的模式由TOCS 位(T0CON<5>)选择。在定时器模式下(T0CS = 0),除非选择了不同的预分频值,否则,默认情况下在每个时钟周期该模块的计时都会递增。如果写入TMR0 寄存器,那么在随后的两个指令周期内,计时将不再递增。用户可通过将校正后的值写入TMR0 寄存器来解决上述问题。通过将T0CS 位置1 选择计数器模式。在计数器模式下, Timer0 可在RA4/T0CKI 引脚信号的每个上升沿或下降沿递增。触发递增的边沿由Timer0 时钟源边沿选择位T0SE T0CON<4>)决定。清零此位选择上升沿递增。


       TMR016 位读写过程


TMR0H 并不是16 位模式下Timer0 的高字节,而是Timer0 高字节的缓冲寄存器,且不可以被直接读写。在读TMR<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0L时使用Timer0 高字节的内容更新TMR0H。这样可以一次读取Timer0 的全部16 位,而无需验证读到的高字节和低字节的有效性(在高、低字节分两次连续读取的情况下,由于可能存在进位,因此需要验证读到字节的有效性)。同样,写入Timer0 的高字节也是通过TMR0H 缓冲寄存器来操作的。在写入TMR0L的同时,使用TMR0H的内容更新Timer0 的高字节。这样一次就可以完成Timer0 全部16 位的更新。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


       TMR016位读写编程技巧


         下面的程序段是在SP9608-PIC单片机增强型开发板验证的TMR0作为外部计数的程序段;


        


初始化TMR0寄存器中的内容程序段如下:


         T0CON=0x3F;   //TMR0设置为16位的外部RA4/T0CKI计数功能


         TMR0H=0;        //初始化TMR0寄存器的时候,一定要先写入TMR0H,再写入TMR0L


         TMR0L=0;


         T0CONbits.TMR0ON=1;//启动TMR0工作


 


         读取TMR0寄存器中的内容的,并将其内容合成到一个整型变量程序段如下:


         Temp=TMR0L;  //一定要先读取TMR0L的内容,其中Temp是一个整型变量


         Temp=TMR0H; //此时再读取TMR0H的内容


         Temp<<=8;         //将读取TMR0H的内容移到Temp的高字节位


         Temp|=TMR0L; //再读取TMR0L的内容到Temp的低字节位


 


     我们的网站: www.supermcu.com


 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

ash_riple_768180695 2007-11-26 17:58

受益!

用户60667 2007-4-25 11:33

需要单独设计一个12V的高压发生器

用户62510 2007-4-9 15:57

     刚开始接触PIC18F单片机,对 它的几种编程方式不太理解,望指教。高电压编程和低电压编程各应用在什么情况下?通常我们用烧写器烧程序用高电压(需要高达12V供电)方式,这样是不是比普通的单片机的编程方式 还要复杂一些?
相关推荐阅读
用户60667 2010-10-25 22:22
基于SP1010-LPC213X-ARM实验板的SPWM实验
    实验工程应用的逆变器常采用SPWM技术来实现,以前常用硬件来产生三角波和正弦波进行比较来产生SPWM信号,但常常不稳定,而用嵌入式ARM来产生SPWM信号就非常容易,几乎不用增加任何附加硬件产...
用户60667 2010-10-25 10:39
SP1010-LPC213X-ARM实验开发板
SP1010-LPC213X-ARM实验开发板是一款基于NXP公司的LPC21XX的ARM7内核的嵌入式开发平台,板载丰富的实验资源,提供的从简单到复杂的综合实验源程序达60多个。同时板上集成的了与语...
用户60667 2010-10-19 18:31
基于SP1010-LPC213X-ARM实验板的可调正弦幅度实验
来 源:西谱电子(www.supermcu.com)/*      实验目的:掌握LPC213X的D/A转换器的使用和编程,掌握正弦波产生的原理      实验内容:利用LPC213X的D/A模块实现...
用户60667 2010-10-14 18:03
基于SP1010-LPC213X-ARM实验板的键按键加减计数实验
发布时间:2010-10-14 来 源:西谱电子(www.supermcu.com)/*      实验目的:掌握LPC213X对两个按键识别的编程方法      实验内容:通过连接在LPC2132引...
用户60667 2010-10-14 11:46
基于SP1010-LPC213X-ARM实验板的单键按键加计数实验
来 源:西谱电子(www.supermcu.com)/*      实验目的:掌握IOnPIN寄存器在按键识别的作用及使用方法      实验内容:通过连接在P0.16引脚上的按键K1,实现每按一下K...
用户60667 2008-11-19 07:08
我的书"PIC单片机实用C语言程序设计与典型实例"已出版
直接登录我们的网站: www.supermcu.com 或直接登录中国互动出版网:http://www.china-pub.com/41131或直接登录中国电力出版社网上书店:http://www.c...
EE直播间
更多
我要评论
2
8
关闭 站长推荐上一条 /3 下一条