单元训练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;
			}
		}
	}
}
相关推荐
weixin_456808383 分钟前
【沁恒蓝牙开发】IAP升级流程
c语言·单片机·嵌入式硬件
czhaii1 小时前
RTL8019AS、555,DS3231等芯片的跳线方式和引脚定义
嵌入式硬件
czhaii3 小时前
基本电器元件 电阻 resistance R 电容 capacitance C 电感 inductance L
嵌入式硬件
156082072195 小时前
飞腾D2000接入外部时钟HYM8563芯片调试
驱动开发·嵌入式硬件·mcu
殷忆枫5 小时前
基于STM32+OV2640+ESP8266的无线图像采集系统设计与实现
stm32·单片机·嵌入式硬件
llilian_166 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机
qq_2837200510 小时前
STM32F103 GPIO 端口配置寄存器 CRL / CRH 详解
stm32·单片机·嵌入式硬件
振南的单片机世界10 小时前
NVIC:Cortex-M内核的“中断CPU”
stm32·单片机·嵌入式硬件
KaifuZeng10 小时前
运算放大器学习笔记-虚短和虚断
单片机·嵌入式硬件·运算放大器
张海森-16882011 小时前
cv610的spi0上适配tmi8150b电机ic
单片机