main.c

来自「AT89C51单片机跑马灯,相应中断」· C语言 代码 · 共 56 行

C
56
字号
#include <reg51.h>
void int_0();
void delay(int n)
{
     int i,j;
	 for (i=1;i<=n;i++)
	     for (j=1;j<=n;j++)
		     ;

}
int main(void)
{
	char output;
	int i;
	EA=1;               // CPU所有中断开(IE最高位MSB)
	EX0=1;              // INT0中断开
	IT0=0;              // INT0低电平触发(为1则为下降沿触发)
	while(1)
	{
		output = 0x01;
		P0 = 0xff;
		for (i = 0; i<8; i++)
		{
			P1 = output;
			output = output << 1;
			delay(100);
		}
		output = 0x7f;
		P1 = 0;
		for (i = 0; i<8; i++)
		{
			P0 = output;
			output = (output >> 1) | 0x80;
			delay(100);
		}
	}
    return 0;
}
void int_0() interrupt 0 using 0
{
     char output1,output2,i;
	 output1 = 0x01;
     output2 = 0xfe;
     for (i = 0; i<8; i++)
	 {
	 	P1 = output1;
		output1 = output1 << 1;
		delay(100);
		P1 = 0;
		P0 = output2;
		output2 = output2 << 1 | 0x01;
		delay(100);
		P0 = 0xff;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?