单元训练01:LED指示灯的基本控制

蓝桥杯 小蜜蜂 单元训练01:LED指示灯的基本控制

cpp 复制代码
#include "stc15f2k60s2.h"
#include <intrins.h>

#define LED(x)                 \
	{                          \
		P2 = P2 & 0x1f | 0x80; \
		P0 = x;                \
		P2 &= 0x1f;            \
	}

typedef unsigned char u8; // 定义类型

u8 LedInfo;			 // LED灯数值,高低电平
u8 LedCounter = 0;	 // 闪烁计数
u8 TimerCounter = 0; // 定时器计数
u8 LedNum = 0;		 // 移位计数

void Timer0_Init(void) // 5毫秒@12.000MHz
{
	AUXR |= 0x80; // 定时器时钟1T模式
	TMOD &= 0xF0; // 设置定时器模式
	TL0 = 0xA0;	  // 设置定时初始值
	TH0 = 0x15;	  // 设置定时初始值
	TF0 = 0;	  // 清除TF0标志
	TR0 = 1;	  // 定时器0开始计时
	ET0 = 1;	  // 使能定时器0中断
	EA = 1;
}

void main()
{
	Timer0_Init();
	LedInfo = 0xff;
	while (1)
	{
		LED(LedInfo);
	}
}

void Timer0_Isr(void) interrupt 1
{
	if (++TimerCounter == 100)
	{
		TimerCounter = 0;
		if (LedCounter++ <= 5)
		{
			LedInfo = ~LedInfo; // 闪烁3次
		}
		else if (LedCounter <= 13)
		{
			LedInfo = LedInfo << 1; // 依次点亮
		}
		else
		{
			LedInfo = ~(0xff << ++LedNum); // 依次熄灭
			if (LedNum == 8)
			{
				LedNum = 0;
				LedCounter = 0;
			}
		}
	}
}
相关推荐
LXY_BUAA5 分钟前
《嵌入式操作系统》_GPIOLIB前置知识_20260328
驱动开发·嵌入式硬件
DA022110 分钟前
系统移植-STM32MP1_TF-A概述
单片机·系统移植·stm32mp1
17(无规则自律)22 分钟前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux·驱动开发·嵌入式硬件
Trouvaille ~1 小时前
【优选算法篇】BFS 解决最短路——寻找最优路径的真谛
c++·算法·leetcode·面试·蓝桥杯·宽度优先·最短路问题
BackCatK Chen2 小时前
STM32保姆级入门教程|第5章:GPIO内部结构 + 8种模式 + 功能详解
stm32·嵌入式硬件·gpio·推挽输出·开漏输出·gpio内部结构·上拉输入
2301_822782822 小时前
C语言利用EasyX实现图形化界面的小游戏
c语言·单片机·图形化界面·lcd菜单·接口实现
Heartache boy2 小时前
野火STM32_HAL库版课程笔记-TIM触发ADC采集
笔记·stm32·单片机·嵌入式硬件
你疯了抱抱我2 小时前
【Altium Designer】网络线(颜色、旋转、粗细);网络标签 && 端口的差别(重点!)
嵌入式硬件·嵌入式·pcb·电路
蓝凌y2 小时前
51单片机之按键控制RGB灯
单片机·嵌入式硬件
156082072193 小时前
关于XILINX的fir compiler小数倍内插设计
单片机·嵌入式硬件