找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么我的51单片机定时中断只进入一次?

[复制链接]
跳转到指定楼层
楼主
下面是我的程序,想用按键控制定时器和LED的亮灭——按一次LED亮,再按一次LED灭,灯亮的同时开始定时5s,5s到后进入中断熄灭LED。但是现在程序只可以进入一次中断,后面就进入不了了
# include <STC8.h>
sbit KEY = P3^5;
sbit LED = P3^4;
unsigned int num=0,second=0,minute=0,hour=0;
bit LED_flag=0;
void Delay10ms()//@24.000MHz
{
unsigned char data i, j, k;
i = 2;
j = 56;
k = 172;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Init_IO()//
{
    P0M1 = 0x00;   P0M0 = 0x00;   
    P1M1 = 0x00;   P1M0 = 0x00;   
    P2M1 = 0x00;   P2M0 = 0x00;   
    P3M1 = 0x00;   P3M0 = 0x00;   
    P4M1 = 0x00;   P4M0 = 0x00;   
    P5M1 = 0x00;   P5M0 = 0x00;   
    P6M1 = 0x00;   P6M0 = 0x00;   
    P7M1 = 0x00;   P7M0 = 0x00;   
}
void Timer0_Init(void)//20ms@24.000MHz
{
AUXR &= 0x7F;//12T
TMOD &= 0xF0;
TL0 = 0xC0;
TH0 = 0x63;
EA=1;
TF0 = 0;
TR0 = 0;
ET0 = 1;

}
void KeyScan()
{
if(KEY == 0)
{
Delay10ms();
if(KEY == 0)
{
Delay10ms();
LED =~LED;
}
while(!KEY);

}

}

void Timer0_Isr(void) interrupt 1
{
TL0 = 0xC0;
TH0 = 0x63;
num++;

if(num == 50)//1s
{
num=0;
second++;
if(second==5)  //5s
{
LED = 0;
TR0 = 0;  
}
   }
}
void main()
{
  LED = 0;
Init_IO();
Timer0_Init();
while(1)
{
  KeyScan();
if(LED==1)
{
TR0 = 1;
}
else
{
TR0 = 0;
}  
}
}


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

使用道具 举报

来自 2#
ID:161164 发表于 2024-8-8 15:47 | 只看该作者
你咋知道只能进一次?
你的代码有几个问题





回复

使用道具 举报

来自 3#
ID:1130312 发表于 2024-8-8 16:17 | 只看该作者
lkc8210 发表于 2024-8-8 15:47
你咋知道只能进一次?
你的代码有几个问题

因为我只有第一次可以5s后熄灭,后面就不可以了。太感谢你了!问题解决了
回复

使用道具 举报

地板
ID:170975 发表于 2024-8-8 16:13 | 只看该作者
中断执行完了过后要把中断清了
回复

使用道具 举报

5#
ID:161164 发表于 2024-8-8 16:34 | 只看该作者
13696229579 发表于 2024-8-8 16:13
中断执行完了过后要把中断清了

STC的定时器0/1会自动清

回复

使用道具 举报

6#
ID:1129414 发表于 2024-8-9 09:47 | 只看该作者
看一下定时器有没有自带自动重载的功能,没有的话每次中断服务函数要重新赋值
回复

使用道具 举报

7#
ID:398219 发表于 2024-8-9 16:05 | 只看该作者
lkc8210 发表于 2024-8-8 15:47
你咋知道只能进一次?
你的代码有几个问题

你用的是VSCODE软件吗?
回复

使用道具 举报

8#
ID:161164 发表于 2024-8-10 18:18 | 只看该作者
herui2128 发表于 2024-8-9 16:05
你用的是VSCODE软件吗?

不是,用Notepad++来修改浏览C档案
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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