51单片机 LED 循环点亮程序详解
#include<reg52.h> // 51 单片机头文件
#define LED P1 // 定义 LED 灯接口为 P1 口
void delay(unsigned int x) // 定义延时函数 { unsigned int i, j; for (i = 0; i < x; i++) // 外层循环 for (j = 0; j < 100; j++); // 内层循环 }
void main() // 主函数 { unsigned char flag = 0; // 定义标志位为 0 unsigned char i;
while (1) // 进入循环
{
if (flag == 0) // 如果标志位为 0
{
for (i = 0; i < 8; i++) // LED 灯从第 0 个灯亮到第 7 个灯,循环 8 次
{
LED = ~(1 << i); // 通过位运算将 P1 口对应的 LED 灯点亮
delay(500); // 延时 500ms
}
}
else // 如果标志位不为 0
{
for (i = 7; i >= 0; i--) // LED 灯从第 7 个灯亮到第 0 个灯,循环 8 次
{
LED = ~(1 << i); // 通过位运算将 P1 口对应的 LED 灯点亮
delay(500); // 延时 500ms
}
}
}
}
void key_interrupt() interrupt 1 // 当 INT0 发生中断时,进入中断函数 { static unsigned char flag = 0; // 定义静态变量 flag 并初始化为 0 flag = !flag; // 将 flag 取反 }
原文地址: https://www.cveoy.top/t/topic/n6Cq 著作权归作者所有。请勿转载和采集!