欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: [求助] [打印本頁]

作者: 卡憶    時間: 2012-4-6 09:20
標題: [求助]
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d2=P2;   		 	//定義P2口LED。
sbit n1=P1^3;  			//定義P1^3口的LED燈。
void delay(int);
uint num;
uint table[]={
				0xc0,0xf9,0xa4,0xb0,
				0x99,0x92,0x82,0xf8,
				0x80,0x98,0x88,0x83,
				0xc6,0xa1,0x86,0x8e
};							//控制數碼管段碼從0——F亮。
void main(void) { EA=1; //開總中斷開關 EX0=1; //開外部中斷0 IT0=0; //設置中斷觸發方式 while(1) { for(num=0;num<16;num++) {
				d2=0; 		  //點亮數碼管
				P0=table[num];
				delay(12450);     //延時閃爍。
				d2=1; 		  //關閉數碼管。
			 }

	 }
}
void delay(int z)				//延時程序。
{
	uint i,j;
	 for(i=z;i>0;i--)
	  for(j=2;j>0;j--);
}
            
void exter0() interrupt 0       //中斷程序。
     {
      n1=0;			//打開P1^3口
	  delay(1);		//延時。
     }   
  

 

我用的單片機是沒有鎖存器的,數碼管是共陽極的。與外部中斷相關的是P3.2口。

我用線把P3.2接地。按理來說,如果不拔掉這個線,中斷就沒有停止,也就回不了主程序中去。但是沒有,單片機還會回到主程序中去執行數碼管的閃爍,一頓飯時間,數碼管就從6變為C,只是數碼管閃爍得慢了很多,但并沒有停止。

我不明白這個程序哪里出錯了?


作者: cuijinjunh    時間: 2012-4-6 09:46

void exter0() interrupt 0       //中斷程序。
     {
      n1=0; //打開P1^3口
  delay(1); //延時。
     }   
 

 

你試試 把這個段 改成

 

void exter0() interrupt 0       //中斷程序。
{
while(1)     

{

   n1=0; //打開P1^3口
   delay(1); //延時。

}
}   
 


作者: 卡憶    時間: 2012-4-6 21:20
謝謝您!我試試看。
作者: 卡憶    時間: 2012-4-13 09:20
很感謝您的建議!我試過了,這樣好像行不通的。我把程序燒進去,按下P3.2口的按鍵(我單片機外部中斷的接口是P3.2口),然后松開手,數碼管的數字就一直甕中保持不變了,也就是說它跳不出中斷程序,回不到主程序了。所以這樣寫也不行的。不過還是很感謝您的建議。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1