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

刚开始学习单片机,在调试的时候程序程序只执行到if(tt==20),然后其他的都不执行了,定时器中断和延时都不执行,程序如下#include#defineuintunsi... 刚开始学习单片机,在调试的时候程序程序只执行到if(tt==20),然后其他的都不执行了,定时器中断和延时都不执行,程序如下 #include #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++; } 求大佬帮帮小白。 展开
 我来答
顿和奇依丝
2020-01-01 · TA获得超过1080个赞
知道小有建树答主
回答量:2035
采纳率:100%
帮助的人:9.8万
展开全部
1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。
2、单片机的定时器有自己的时钟,打开
51单片机
的定时器后,单片机一边顺序执行主程序的语句时,一边定时器在计时。当计到你设定的值后,他需要产生中断,然后暂停主程序语句,转到中断程序中执行你的命令。执行完命令后返回到主程序的顺序语句中。然后知道下一次中断来临,再次产生中断。
3、要让他能产生中断,你就必须开中断。这就像一个
控制开关
,你不把开关打开,灯怎么会亮。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式