[51单片机] 请问这个现象是怎么回事?

[复制链接]
779|2
 楼主| loveteda 发表于 2016-5-17 23:50 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. extern void display(unsigned char shi,unsigned char ge);
  3. unsigned char num;
  4. unsigned char count_num;
  5. void init()
  6. {
  7.         TMOD=0x01;
  8.         TH0=0x4c;
  9.         TL0=0x00;//50msT0Òç³ö,½øÈëÖжϳÌÐò
  10.         EA=1;
  11.         ET0=1;
  12.         EX1=1;
  13.         EX0=1;
  14.         TR0=1;
  15. }
  16. void main()
  17. {
  18.         init();
  19.         while(1)
  20.         {
  21.                 if(num==100)
  22.                 {
  23.                         num=0;
  24.                 }
  25.                 if(num%5==0&&num!=0)//¼ÆÊý¼Æµ½5µÄ±¶ÊýµÄʱºò½øÈëµôµçģʽ¡£
  26.                 {
  27.                         ET0=0;
  28.                         PCON=0x02;
  29.                 }
  30.                 display(num/10,num%10);
  31.         }
  32. }
  33. void T0_inter() interrupt 1
  34. {
  35.         TH0=0x40;
  36.         TL0=0x00;
  37.         ++count_num;
  38.         if(count_num==20)
  39.         {
  40.                 count_num=0;
  41.                 ++num;
  42.         }
  43. }
  44. void INT0_inter() interrupt 0
  45. {
  46.         PCON=0;
  47.         ET0=1;
  48. }
  49. void INT1_inter() interrupt 2
  50. {
  51.         PCON=0;
  52.         ET0=1;
  53. }

程序的目的就是1s钟num的值+1,2个数码管显示num的数值。然后num是5的倍数的时候单片机进入掉电模式。当有外部中断的时候唤醒单片机,显示的数值继续加1。实际运行的时候,数码管显示4的时候休眠,只有一个数码管显示4.我用导线一端接地,另外一端去触碰INT0或者INT1,用导线触碰INT1的时候没问题正常运行。用导线触碰INT0的时候,数码管会显示5,但是之后数值不再改变了。这个是怎么回事?是硬件问题吗还是别的什么?
-Hans- 发表于 2016-5-19 15:45 | 显示全部楼层
外部中断1启动    进入中断程序你把 ET0=0 而没把ET1=1
 楼主| loveteda 发表于 2016-5-20 16:10 | 显示全部楼层
-Hans- 发表于 2016-5-19 15:45
外部中断1启动    进入中断程序你把 ET0=0 而没把ET1=1


啊??啥意思?不懂。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部