pic代码中 timer0没有设置TMR0值,为什么可以计时呢?

init中代码:
OPTION = 0x02;//TIME0用内部指令周期时钟 8M,预分频器1:8给TIME0

中断中代码:
if (T0IF&&T0IE)
{
T0IF = 0; //清TIME0溢出标志
t0_count++;
if(t0_count>250)
{
t0_count = 0;
flag=!flag;//250ms闪烁
}

}

在一些PIC单片机中,TIM0比较特殊,它的运行/停止是不受控的。只要通电TIM0就会开始运行,
中断中代码:
if (T0IF&&T0IE) 所以在中断中不仅仅判断中断标志位,还必须判断中断允许位追问

我想问怎么算tim0的时间呢?代码并没有设置tmr0的值啊?

追答

什么型号的PIC单片机?

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-08
有些PIC单片机内的TMR0和51不一样的地方是:它没有启动位,也就是 只要上电,它开始计数,以508为例子,初值为65H,上电后,他就开始计数。如果要用溢出中断,INTEN,0置1就是计数器的中断允许位。给TMR0赋值,TMR0在2个机器周期后开始计数。

pic代码中 timer0没有设置TMR0值,为什么可以计时呢?
在一些PIC单片机中,TIM0比较特殊,它的运行\/停止是不受控的。只要通电TIM0就会开始运行,中断中代码:if (T0IF&&T0IE) 所以在中断中不仅仅判断中断标志位,还必须判断中断允许位

PIC单片机的TIMER0是不是没有使能位
如果你的单片机这个引脚什么也不接悬空并根据设置其IO口默认输入的情况下,T0一直没有接收到到电平边沿变化,所以TMR0是根本不会计数的,也就是说它根本不工作。它是没有像T1那个TCON名义上的使能位,但T0CS、T0SE、PSA都可以算是它的使能位。

单片机PIC18中,TMR0H和TMR0L设置成多少是100毫秒?
假设Timer0用的时钟源是内部的4MHZ,那么每条指令的执行时间就是 1us,设Timer0的预分频系数是1:256,TMR0的初值是0,那么定时时间为:256×(256-0)×1us=65.536,这是内部计数器最大的了,倒不了100ms只能分频才行

PIC单片机编程的问题 刚学 不太懂
movlw 01h ; 使能Timer1中断 01h movwf PIE1 movlw b'00010001' ; AD采用FOSC\/8 时钟,GP2是模拟口, movwf ANSEL ; 其他口为数字IO movlw b'00001000' ; Timer0设置为使用内部指令周期,无预分频 movwf OPTION_REG bcf STATUS, RP0 ; 选择Bank0 movlw b'10000001' ; A\/D是右对齐格式,Vdd为参考,GP0...

为什么PIC单片机定时器0记满低8位不会向高8位进位?是不是要有特殊的配 ...
你这是那款PIC的单片机啊?如果是PIC12或者PIC16的话,定时器0本身就是八位的,没有高位。看程序貌似是PIC18系列的,这个你注意看数据手册,只有在读TMR0L的时候,才能读出TMR0H,有可能他已经进位了,只是没读出来。你可以以单步跟踪的方式,看看在TMR0L快到FF的时候,是否对TMR0IF置位了。我...

在LED显示汉字,怎么做到可以三个汉字循环显示?怎么添加代码?
控制系统里面设置,有的有这个选项,勾上就可以循环,没有这个选项的一般都过调整文字的播放时间,使之循环播放,总之,基本上所有的控制系统都有这个功能。建议多多看下你显示屏供应商给你提供的使用说明书。t;#include "toppic.h" unsigned int num=0;void LED4_display(unsigned int i);void PIC18F_High_isr(...

pic16外部中断初始化,为何我设置RC4和RC5为弱上拉 不起作用 还有我的外...
你程序前面包括的头文件是pic16f616.h,就是用PIC16F616这个芯片。但它的RC4和RC4根本就没有弱上拉功能,你怎么开弱上拉?还有,你的IO初始化设置也就是开了A口的弱上拉而已。补充:你提问的标题是要对RC4和RC5进行弱上啦,你现在操作的是对RA4和RA5进行弱上拉。你到底是做那个的弱上拉??

相似回答