单元训练01:LED指示灯的基本控制
蓝桥杯 小蜜蜂 单元训练01:LED指示灯的基本控制
#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;}}}
}