单元训练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;
			}
		}
	}
}
相关推荐
电子阿板6 分钟前
STM32G0B1 NRST复位和其它IO复用了,如何设置成专用复位引脚,
stm32·单片机·嵌入式硬件
兆龙电子单片机设计10 分钟前
【STM32项目开源】STM32单片机智慧农业大棚控制系统
stm32·单片机·物联网·开源·毕业设计
不脱发的程序猿16 分钟前
使用Python高效对比多个相似的CAN DBC数据
python·单片机·嵌入式硬件·嵌入式
bai54593620 分钟前
STM32 CubeIDE 串口通信
stm32·单片机·嵌入式硬件
国科安芯25 分钟前
强辐射环境无人机视频系统MCU可靠性分析
人工智能·单片机·嵌入式硬件·音视频·无人机·边缘计算·安全性测试
代码游侠1 小时前
应用——基于 51 单片机的多功能嵌入式系统
笔记·单片机·嵌入式硬件·学习·51单片机
广药门徒1 小时前
为什么访问一地址存16bits的存储芯片需要字节对齐?为什么访问外部Flash需要字节对齐?——深入理解STM32 FMC的地址映射机制
stm32·单片机·嵌入式硬件
jh10_1 小时前
嵌入式硬件DAY5(ARM汇编)
汇编·arm开发·嵌入式硬件
国科安芯1 小时前
尺寸约束下商业卫星编码器系统的抗辐照MCU性能边界研究
运维·单片机·嵌入式硬件·安全·安全威胁分析
国科安芯2 小时前
无人驾驶物流车网关的多路CANFD冗余架构与通信可靠性分析
单片机·嵌入式硬件·性能优化·架构·自动驾驶·安全性测试