|
51單片機的中斷,中斷使得單片機有更靈活的數據處理機制。靈活使用中斷、定時器功能將是開發的強力助手,雖然51單片機很簡單,呵呵,談不上嵌入式,但原理都是差不多,AVR PLC也有中斷定時器等功能。最近也有在學PLC,不過進度有點慢,呵呵,PLC,單片機要在大二才開課,我先預熱下,后面好上手。
先上代碼吧。PS.本人寫的程序都是自己經過編譯運行過的,無錯。
include<reg52.h> // 包含 51 單片機寄存器定義的頭文件
sbit LED=P1^0;//定義LED點端口
////***********DS[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};**********///
void delay(void) // 延時函數,延時一段時間
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
void main(void)
{
EA=1;//總中斷開
EX0=1;//外部中斷
IT0=0;//采用外部電平觸發,低電平,此處可以省略,因為單片機上電時管腳默認就是低電平。
LED=1
while(1) // 無限循環
{
P2=0xfe; //P2.0 引腳輸出低電平, DS0 點亮
P0=0xf9; // 數字 1 的段碼
delay();
P2=0xfd ; //P2.1 引腳輸出低電平, DS1 點亮
P0=0xa4; // 數字 2 的段碼
delay();
P2=0xfb; //P2.2 引腳輸出低電平, DS2 點亮
P0=0xb0; // 數字 3 的段碼
delay();
P2=0xf7; //P2.3 引腳輸出低電平, DS3 點亮
P0=0x99; // 數字 4 的段碼
delay();
P2=0xEF; //P2.4 引腳輸出低電平, DS4 點亮
P0=0X92; // 數字 5 的段碼
delay();
P2=0xDF; //P2.5 引腳輸出低電平, DS5 點亮
P0=0x82; // 數字 6 的段碼
delay();
P2=0xBF; //P2.6 引腳輸出低電平, DS6 點亮
P0=0xf8; // 數字 7 的段碼
delay();
P2=0x7F; //P2.7 引腳輸出低電平, DS6 點亮
P0=0x80; // 數字 8 的段碼
delay();
P2=0xff;
}
}
void exter0() interrupt 0
{
LED=0;//低電平點亮
}
|
|