pic16f877单片机TMR0的使用

Posted jnkdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pic16f877单片机TMR0的使用相关的知识,希望对你有一定的参考价值。

一、结构

1、是一个8位宽的由时钟信号上升沿触发的循环累加计数寄存器

2、有一个专门的外部触发信号输入端(T0CKI

3、是一个在文件寄存区域内统一编址的寄存器,地址为01H或101H,用户用软件的方式可直接读/写计数器的内容

4、具有一个软件可编程的8位预分频器

二、特点

1、使用内部触发信号,即指令周期作为时钟信号源时,模块TMR0工作于定时方式,触发方式为固定上升沿触发有效。计数器溢出时,相应的溢出中断标志T0IF自动置位,并可产生溢出中断

2、当外部时钟信号源时,TMR0工作于计数方式,触发方式可由程序设置为上升沿触发或者下降沿触发有效。在计数器溢出时,也可以产生溢出中断。

三、相关寄存器

1、定时器/计数器寄存器 TMR0,8位累加

2、选项寄存器 OPTION_REG

3、中断控制寄存器 INTCON

4、端口方向寄存器 TRAISA (RA4作为外部触发端口)

技术图片

四、使用方式

1、查询法

 1 void main()
 2  
 3     unsigned int num;
 4     /*
 5     预分频器1:256,赋值61 256-61=195
 6     */
 7     OPTION = 0x70;//使用预分频器
 8     TMR0 = 61//计数器/定时器寄存器赋值  约等于50ms
 9         
10     while(1)
11     
12         if(1 == T0IF)//判断溢出
13         
14             T0IF = 0//标志位清零
15             num++;
16             if(20 == num)//1s
17             
18                 num = 0;
19                 //功能1
20                 
21                     
22                 
23             
24         
25     
26 

 

2、中断法

使用到的寄存器 INTCON

 1 void main()
 2  
 3     unsigned int num;
 4     /*
 5     预分频器1:256,赋值61 256-61=195
 6     */
 7     OPTION = 0x70;//使用预分频器
 8     INTCON = 0xa0;//开总中断;开定时器中断
 9     TMR0 = 61//计数器/定时器寄存器赋值  约等于50ms
10         
11     while(1)
12     
13         if(20 == num)
14             num = 0//计数清零
15         //功能1
16         
17             
18         
19     
20 
21 
22 void interrupt timer0()     //中断函数不需要调用
23 
24     //注意进入中断T0IF已经置1
25     T0IF = 0//标志位清零
26     TMR0 = 6127     num++28 

 

以上是关于pic16f877单片机TMR0的使用的主要内容,如果未能解决你的问题,请参考以下文章

PIC16F193X单片机开发环境搭建

PIC16F877XA指令系统(汇编语言)

PIC单片机基础1

CH341A是啥?

单片机计数脉冲

单片机学习方法总结,给初学者分享如何怎样学习单片机