标题: 大佬帮忙看看为什么这个单片机中断没有执行啊 [打印本页]

作者: thgpddl    时间: 2018-7-12 11:22
标题: 大佬帮忙看看为什么这个单片机中断没有执行啊
  1. #include <reg52.h>
  2. unsigned char leddata[]={
  3.                 0x3F,  //"0"
  4.                 0x06,  //"1"
  5.                 0x5B,  //"2"
  6.                 0x4F,  //"3"
  7.                 0x66,  //"4"
  8.                 0x6D,  //"5"
  9.                 0x7D,  //"6"
  10.                 0x07,  //"7"
  11.                 0x7F,  //"8"
  12.                 0x6F,  //"9"
  13.                          }

  14. unsigned char h,l,count=0,i;

  15. void intinit()
  16. {
  17. IT0=1;
  18. EA=1;
  19. EX0=1;
  20. }

  21. void delay()
  22. {
  23.         for(i=1000;i>0;i--);        
  24. }

  25. void main()
  26. {
  27. intinit();
  28.         while(1)
  29.         {
  30.         h=count/10;
  31.         l=count%10;
  32.         P1=leddata[h];
  33.         P2=leddata[l];
  34.         }
  35. }

  36. void int0() interrupt 0
  37. {
  38. delay();
  39. if(P3^2==0)
  40. {count=count+1;}
  41. if(P3^3==0)
  42. {count=count-1;}//延时检测按键,去除抖动
  43. while(P3!=0xff);//按键抬起
  44. }
复制代码




作者: zhangyusong    时间: 2018-7-12 13:57
没有调用
作者: chaoself    时间: 2018-7-12 16:56
没有调用呀,TH1,TL1都没有
作者: HC6800-ES-V2.0    时间: 2018-7-13 08:52
楼上的两个回答,我认为有不专业。
第一:这是一个外部中断,哪里要什么TH1、TL1?
第二:如果原因是“没有调用”,原因是什么呢?
我的认为:
第一:这个程序你确认编译了的?下载到单片机里去了的?
之所以有这一问,就是你的程序有问题,根本编译不了嘛。13行缺分号;
第二:外部中断没有调用,就是说,没有产生外部中断——你按键肯定是产生了的,说明调用了的。
为什么没有你设想的现像呢?
P3^2是什么?C语言的意思是:P3这个变量的平方。你想表达的意思不是这个吧,是想表达为外部中断的IO口,但这个是不能这样表达的。要在main()函数以前,用sbit 去说明定义。

再好好看看书,看看别人的程序吧。
作者: fanwangxing    时间: 2018-7-13 10:47
中断里面不要加延时,用万用表量电平有咩有变化。
作者: 柚子啊    时间: 2018-7-13 11:24
中断里面不要加延时




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1