标题: 这个单片机定时器中断怎么了? [打印本页]

作者: v115488    时间: 2022-4-10 16:42
标题: 这个单片机定时器中断怎么了?
思路及目标:使用T1定时计数器,设定1毫秒溢出.
在中断服务函数里,用全局变量delay1ms进行累加计数
初始化及TR1在主函数开启的
现在调用初始化及打开TR1=1;后.全局变量delay1ms没有自加.
大家帮忙看看哪里的问题:::
#include "ISR.h"

unsigned int delay1ms=0;

/*--------------------------------------------------------------------------
函数名:        Timer1Init()
功        能:        定时/计数器1的初始化
参        数:        无
返回值:        无
--------------------------------------------------------------------------*/

void Timer1Init(void)
{
        TMOD=0x50;
        TH1=0xfc;
        TL1=0x18;
        TF1=0;
        ET1=1;
        EA=1;
}

/*******************************************************************************
* 函数名         :
* 函数功能                 :中断服务函数
* 输入           :接受数据中断
* 输出                  :
中断说明: 1,中断服务函数一定是一个没有返回值的函数
                  2,中断服务函数一定是没有参数的函数
                  3,中断服务函数函数名后跟关键字 interrupt
                  4,interrupt n (0-4)共5个中断源
                  5,中断服务函数不能被主程序或其他程序所调用
                  6,n 后面跟 using m (0-3)工作寄存器组
*******************************************************************************/

void Timer1_ISR() interrupt 3
{
        TF1=0;
        delay1ms++;
        TH1=0xfc;
        TL1=0x18;               
}


作者: v115488    时间: 2022-4-10 17:49
找到问题了,TMOD设定搞错了C/T位,设置成了计数模式.TMOD=0x10就可以了,
作者: v115488    时间: 2022-4-10 17:50
打扰了各位,我们江湖再见^^^^^^^




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1