为什么51单片机定时器中断程序不执行

刚开始学习单片机,在调试的时候程序程序只执行到if(tt==20),然后其他的都不执行了,定时器中断和延时都不执行,程序如下#include<reg52.h>#defin... 刚开始学习单片机,在调试的时候程序程序只执行到if(tt==20),然后其他的都不执行了,定时器中断和延时都不执行,程序如下
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint x,y;
uchar num,tt;
uchar code table[]={
0xc0,0xf9,0xa4,0xd0,0x99,0x92,0x82,0xf8,0x80,0x90,0x99,0x83,0xa6,0x41,0x86,0x8e};
void delay(uint);
void main()
{
num=0;
tt=0;
EA=1;
ET0=1;
TR0=1;
P0=0xc0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(tt==20)
{
tt=0;
num++;
if(num==16)
{
num=0;
}
P0=table[num];
delay(100);
}

}

void delay(uint z)
{
for(x=z;x>0;x--)
for(y=500;y>0;y--);
}

void exter0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
求大佬帮帮小白。
展开
 我来答
司马刀剑
高粉答主

2019-05-17 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7609万
展开全部
1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。
2、单片机的定时器有自己的时钟,打开51单片机的定时器后,单片机一边顺序执行主程序的语句时,一边定时器在计时。当计到你设定的值后,他需要产生中断,然后暂停主程序语句,转到中断程序中执行你的命令。执行完命令后返回到主程序的顺序语句中。然后知道下一次中断来临,再次产生中断。
3、要让他能产生中断,你就必须开中断。这就像一个控制开关,你不把开关打开,灯怎么会亮。
追问
我用EA=0;
ET0=1;

TR0=1;

开中断
还缺开中断的语句么
才兰衲54
2021-06-06
知道答主
回答量:1
采纳率:0%
帮助的人:489
展开全部
delay放到数码管延时一秒之前
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式