单片机INT0/1中断的问题

van 提问于 2013年12月10日 21:19:37
答案(1) / 浏览(3347)
0 1

手头一块AT89S52的学习板,开关S1连接P3^3(外部中断1),P3^2(外部中断0)口没有接开关。1,没有编写外部中断1的程序,有个外部中断0的程序的中断程序下,S1置零时,程序却能进入外部中断0的服务程序;2,编写个外部中断1的程序后才能优先进入外部中断1服务程序.外部中断1的优先级高。

#include <reg51.h>
 void delay(unsigned char num1)//延时程序
 { unsigned char i;
  unsigned int j;
  for(i = 0;i<num1;i++)
  for(j =0;j<400;j++);
 }
 void int_initial(void)//开中断
 { EA  = 1;
  EX0 = 1;//外部中断0中断设置
  IT0 = 0;//外部中断0设置为低电平触发方式
  EX1 = 1;//外部中断1中断设置
  IT1 = 0;//外部中断1设置为低电平触发方式
  PX0 = 1;//外部中断0设置为高优先级别
     PX1 = 0;//外部中断1设置为低优先级别
 }
 main()
 {  P1 = 0xff;
   int_initial(); 
  while(1)//相当于等待中断
  { P1 = 0xf0;
   delay(200);
   P1 = 0x0f;
   delay(200); 
  }
 }
 void int0() interrupt 0 using 0
 { unsigned char k,temp;
  P1= 0xff;
  temp = 0x01;   //L1到L8二极管顺序点亮
  for(k=0;k<8;k++)
  {  P1 = ~temp;
   delay(200);
   temp = temp<<1;   
  }
 }
 void int1()  interrupt 1 using 0
 { unsigned char k,temp;
  P1 = 0xFF;
  delay(200);
  temp = 0xFC;   //L8到L1二极管顺序点亮
  for(k=0;k<8;k++)
  {  P1 = temp;
   delay(200);
   temp = temp<<1;   
  }
 } 

van
提问时间:2013年12月10日 21:19
0
你这个两个外部中断都是 using 0 能对吗 ,把using0 都去了或者改成相应的寄存器组号,你再看下中断寄存器组是怎么对应的和他们的作用
Leeone
Leeone
回答时间:2013年12月11日 16:08:13
回答问题
van

我可以
  • 评论
关联标签
关联热门电子辑
相关问题

浏览(3414) / 答案(1) / 1970年1月1日 08:00

浏览(4822) / 答案(1) / 1970年1月1日 08:00

浏览(1500) / 答案(0) / 1970年1月1日 08:00

浏览(2861) / 答案(2) / 1970年1月1日 08:00

浏览(914) / 答案(0) / 1970年1月1日 08:00