2018年5月10日 星期四

8051 (5) 外部中斷實驗。

使用5顆燈泡和1個按鈕,

按鈕按下後燈泡換切換觸發I/O埠低電位。




程式如下 :

#include <reg52.h>
unsigned char LED_P1=0x15;//P1二進制10101。
unsigned char LED_P2=0x06;//P2二進制110。
void delay(unsigned int);
char a;

void main()
{
 SP=0x60;
 EA=1;//打開中斷功能。
 EX0=1;//外部中斷0。
 IT0=1;//負緣觸發。
 a=1;//按鈕預設1,功能等同Boolean。

 while(1)
 {
  if(a==1){//按下次數雙數狀態。
   P1=~LED_P1;
   P2=LED_P2;
  }
  if(a==0){//按下次數單數狀態。
   P1=LED_P1;
   P2=~LED_P2;
  }
delay(10000);
 } 
}


void delay( unsigned int count)
{
 unsigned int i;
 for(i=0;i<count;i++);
}

void EX0_INT(void) interrupt 0 //外部中斷0的function,按鈕狀態切換。
{
 a=!a;
}

沒有留言:

張貼留言

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...