找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1092|回复: 2
打印 上一主题 下一主题
收起左侧

这个单片机定时器中断怎么了?

[复制链接]
跳转到指定楼层
楼主
ID:152785 发表于 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;               
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:152785 发表于 2022-4-10 17:49 | 只看该作者
找到问题了,TMOD设定搞错了C/T位,设置成了计数模式.TMOD=0x10就可以了,
回复

使用道具 举报

板凳
ID:152785 发表于 2022-4-10 17:50 | 只看该作者
打扰了各位,我们江湖再见^^^^^^^
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表