虚拟LED和数码管
软硬件准备

#include "io.h"
u8 State1 = 0; //LED1初始状态
u8 State2 = 0; //LED2初始状态
u8 State3 = 0; //LED3初始状态
u16 cnt1,cnt2;
u32 num;
u16 Key_Vol[3] ; //按键按下持续时间
void LED0_Blink(void)
{
State1 = !State1;
P20 = State1;
}
void LED1_Blink(void)
{
State2 = !State2;
P21 = State2;
}
void LED2_Blink(void)
{
State3 = !State3;
P22 = State3;
}
void KEY_Task(void)
{
if( P32 == 0 )
{
Key_Vol[0]++;
if( Key_Vol[0]==5 )
{
//按键按下的任务
cnt1++;
}
}
else
{
Key_Vol[0] = 0;
}
if( P33 == 0 )
{
Key_Vol[1]++;
if( Key_Vol[1]==5 )
{
//按键按下的任务
cnt2++;
}
}
else
{
Key_Vol[1] = 0;
}
}
//P2 流水灯,P10闪烁
void Task_1(void)
{
static u8 i;
LED40_SetPort(2,~(1<<i));
i++;
i&=7;
F0 = !F0;
if(F0)
LED40_SetBit(1, 0);
else
LED40_ClrBit(1, 0);
}
//左边显示P32按下次数,右边显示P33按下次数
void Task_2(void)
{
num = (u32)cnt1<<16 | cnt2;
SEG7_ShowLong(num, 16);
}
u32 rec_vkey = 0;
//按下数字按键在数码管显示对应的数字
void Task_3(void)
{
SEG7_ShowLong(rec_vkey, 10);
}
附件:08.虚拟LED.7z