要求:使用一個外部中斷和定時器中斷,P1口連接的8個發光二極管;
系統通過定時器中斷的方式使得LED呈流水燈顯示,外部中斷打斷定時器中斷,控制8個流水燈閃爍顯示。
代碼如下:
#include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit s=P3^2;//外部中斷信號 void delay(uint i) { uchar t; while(i--) { for(t=0;t<120;t++); } } void main() { TMOD=0x01; TH0=0xee; TL0=0X00;//賦初值 EA=1; ET0=1;//允許定時器T0中斷 TR0=1; EX0=1;//允許外部中斷0中斷 IT0=1; while(1); {;} } //定時器T0中斷 void timer0() interrupt 1 using 1 { TH0=0xee; TL0=0x00; P1=0xfe; while(s==1){ delay(200); P1=_crol_(P1,1); } } //外部中斷0中斷 void int0() interrupt 0 using 0 { EX0=0; while(s==0) { P1=0x00; EX0=1; } }
proteus元件圖: