找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1241|回复: 7
收起左侧

stc52单片机定时器1,运行不了是什么问题?

[复制链接]
ID:302293 发表于 2023-7-10 14:22 | 显示全部楼层 |阅读模式
/*-----------------------------------------------
  名称:定时器1
  修改:无
  内容:通过定时让LED灯闪烁
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit LED=P1^0;    //定义LED端口
char n;
/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH1=65535-10000/256;
TL1=65535-10000%6; //定时器0的,写入数值寄存器的低8位
EA=1;            //总中断打开
ET1=1;           //定时器中断打开
TR1=1;           //定时器开关打开
}
/*------------------------------------------------
                    主程序
------------------------------------------------*/
main()
{
Init_Timer1();
while(1);
}
/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1
{
TH1=65535-10000/256;
TL1=65535-10000%6; //定时器0的,写入数值寄存器的低8位
   if(n>=20)
   {
             n=0;
      LED=~LED;       //LED闪烁
   }


}
回复

使用道具 举报

ID:247586 发表于 2023-7-10 15:28 | 显示全部楼层
不是你定时器没有运行,是你的中断函数里的变量n没有自加操作呀,你的n就不可能大于20
回复

使用道具 举报

ID:247586 发表于 2023-7-10 15:29 | 显示全部楼层
你中断函数里的变量n没有自加操作,就一直是0
回复

使用道具 举报

ID:111463 发表于 2023-7-10 15:33 | 显示全部楼层
这不是定时器没有运行,而是中断服务函数写错了,应加上n++;
回复

使用道具 举报

ID:213173 发表于 2023-7-10 16:00 | 显示全部楼层
TH1、TL1赋值错误

TH1=65535-10000/256;
TL1=65535-10000%6;


void Init_Timer1(void)
{
        TMOD |= 0x10;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
        TH1=(65535-10000)/256;
        TL1=(65535-10000)%256; //定时器0的,写入数值寄存器的低8位
        EA=1;            //总中断打开
        ET1=1;           //定时器中断打开
        TR1=1;           //定时器开关打开
}

void Timer1_isr(void) interrupt 3 using 1
{
        TH1=(65535-10000)/256;
        TL1=(65535-10000)%256; //定时器0的,写入数值寄存器的低8位
        if(n>=20)
        {
                n=0;
                LED=~LED;       //LED闪烁
   }
}
回复

使用道具 举报

ID:584814 发表于 2023-7-10 17:01 | 显示全部楼层
1、TH1、TL1赋值错误,楼上正解;
2、对于TH1、TL1赋值方式有多种样式,具体可百度。
回复

使用道具 举报

ID:302293 发表于 2023-7-11 09:15 | 显示全部楼层
13534874028 发表于 2023-7-10 15:29
你中断函数里的变量n没有自加操作,就一直是0

++了,也是一样的
回复

使用道具 举报

ID:1034262 发表于 2023-7-11 13:39 | 显示全部楼层
在中断里取反一个IO,示波器看看。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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