为什么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++; } 求大佬帮帮小白。
展开
展开全部
1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。
2、单片机的定时器有自己的时钟,打开
51单片机
的定时器后,单片机一边顺序执行主程序的语句时,一边定时器在计时。当计到你设定的值后,他需要产生中断,然后暂停主程序语句,转到中断程序中执行你的命令。执行完命令后返回到主程序的顺序语句中。然后知道下一次中断来临,再次产生中断。
3、要让他能产生中断,你就必须开中断。这就像一个
控制开关
,你不把开关打开,灯怎么会亮。
2、单片机的定时器有自己的时钟,打开
51单片机
的定时器后,单片机一边顺序执行主程序的语句时,一边定时器在计时。当计到你设定的值后,他需要产生中断,然后暂停主程序语句,转到中断程序中执行你的命令。执行完命令后返回到主程序的顺序语句中。然后知道下一次中断来临,再次产生中断。
3、要让他能产生中断,你就必须开中断。这就像一个
控制开关
,你不把开关打开,灯怎么会亮。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询