- #include<reg52.h>
- extern void display(unsigned char shi,unsigned char ge);
- unsigned char num;
- unsigned char count_num;
- void init()
- {
- TMOD=0x01;
- TH0=0x4c;
- TL0=0x00;//50msT0Òç³ö,½øÈëÖжϳÌÐò
- EA=1;
- ET0=1;
- EX1=1;
- EX0=1;
- TR0=1;
- }
- void main()
- {
- init();
- while(1)
- {
- if(num==100)
- {
- num=0;
- }
- if(num%5==0&&num!=0)//¼ÆÊý¼Æµ½5µÄ±¶ÊýµÄʱºò½øÈëµôµçģʽ¡£
- {
- ET0=0;
- PCON=0x02;
- }
- display(num/10,num%10);
- }
- }
- void T0_inter() interrupt 1
- {
- TH0=0x40;
- TL0=0x00;
- ++count_num;
- if(count_num==20)
- {
- count_num=0;
- ++num;
- }
- }
- void INT0_inter() interrupt 0
- {
- PCON=0;
- ET0=1;
- }
- void INT1_inter() interrupt 2
- {
- PCON=0;
- ET0=1;
- }
程序的目的就是1s钟num的值+1,2个数码管显示num的数值。然后num是5的倍数的时候单片机进入掉电模式。当有外部中断的时候唤醒单片机,显示的数值继续加1。实际运行的时候,数码管显示4的时候休眠,只有一个数码管显示4.我用导线一端接地,另外一端去触碰INT0或者INT1,用导线触碰INT1的时候没问题正常运行。用导线触碰INT0的时候,数码管会显示5,但是之后数值不再改变了。这个是怎么回事?是硬件问题吗还是别的什么?
|