一件奇怪的事.timer1里要用到timer0的设置是为什么?

2020-02-08 09:15发布

本帖最后由 sn516952 于 2012-5-11 10:35 编辑

16F685的芯片.
void timer1_init(void)
{       

        T1CKPS1=0;
        T1CKPS0=0;//00: 预分频1:1
        TMR1IE = 1;//允许timer1溢出中断
        TMR1H=0xF8;                //赋值TMR1H
        TMR1L=0x48;                //赋值TMR1L 0xF848=1ms
        TMR1CS = 0;//不与外部输入时钟同步
        TMR1IF = 0;//溢出中断标志位.1=溢出.
        //以下两行少了就不工作.
        T0CS=0;//0= T0CS位清零选择定时器模式 内部指令周期时钟FOSC/4
        T0IE=1;//1= 允许Timer0中断

        TMR1ON =1;//使能timer1门控
        TMR1IE=1;
        GIE=1;//开总中断
}

偶然间发现  

        T0CS=0;//0= T0CS位清零选择定时器模式 内部指令周期时钟FOSC/4
        T0IE=1;//1= 允许Timer0中断

timer1里面要加上这两句才工作. datasheet里也没有注明两个定时器有相关的地方.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
sleet1986
1楼-- · 2020-02-09 22:40
程序全贴出来,PIC是共享一个中断向量的--
penny2799
2楼-- · 2020-02-10 03:06
PIC12f683证实,要开PIE1才能进中断
sn516952
3楼-- · 2020-02-10 08:12
 精彩回答 2  元偷偷看……
snoopyzz
4楼-- · 2020-02-10 10:43
sn516952 发表于 2012-5-12 13:55
请看我的程序,
TMR1IE = 1;//允许timer1溢出中断

不知所云。。。你把中断部分代码贴出来再说吧。。。


或者你认为,你的程序没问题,有问题的是PIC芯片,那么大家也没什么好说的了。。。
sn516952
5楼-- · 2020-02-10 16:15
中断代码:

void interrupt ISR(void)
{
        /*****定时器0**************/
        if(T0IE&&T0IF)
        {
                TMR0=0X0a;//0X0a=500us(001)
                T0IF=0;
                timer0_flag1++;
        }
        /********定时器1*************/
                if(TMR1IE&&TMR1IF)
        {
                TMR1H=0xF8;                //赋值TMR1H
                TMR1L=0x48;                //赋值TMR1L  0xF848=1ms
                TMR1IF=0;                //清TMR1标志位
                timer1_flag1++;
        }
}       
millwood0
6楼-- · 2020-02-10 21:16
请看我的程序,


you are basically not capable of thinking.

use your isr and flip two pins, one in the timer0's section and another in timer1's section and see the pins on a scope.

or to simulate, as I did below.

bad 16f685 tmrs.PNG (23.36 KB, 下载次数: 0)

下载附件

2012-5-12 19:17 上传


here, RC0 is being flipped in the timer0's "if" statement and RC1 is being flipped in the timer1's "if" statement.

一周热门 更多>