- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2025-04-27 10:40:24
版主
- 积分
- 1971
|
发表于 2024-12-27 11:36:28
|
显示全部楼层
第十集 虚拟LED数码管,已手敲代码,编译通过
任务1: P2口流水灯,P10闪烁
#include "io.h"
u8 State1 = 0; //LED1初始状态
u8 State2 = 0; //LED2初始状态
u8 State3 = 0; //LED3初始状态
u16 Key_Vol = 0; //按键按下持续时间
void LED0_Blink(void)
{
State1 = !State1;
P00 = State1;
}
void LED1_Blink(void)
{
State2 = !State2;
P01 = State2;
}
void LED2_Blink(void)
{
State3 = !State3;
P02 = State3;
}
void KEY_Task(void)
{
if( P32 == 0 )
{
Key_Vol++;
if(Key_Vol==5)
{
//按键按下的任务
printf("按键单击\r\n");
}
}
else
{
Key_Vol = 0;
}
}
u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//----------- p2端口流水灯-----------
LED40_SetPort(2,~P2_STATE); //点亮P20端口
P2_STATE = (P2_STATE<<1);
if(P2_STATE == 0)
P2_STATE = 1;
//----------- P10闪烁 --------------
if(P10_STATE == 0)
LED40_SetBit(1,0);
else
LED40_ClrBit(1,0);
P10_STATE = !P10_STATE;
}
任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
#include "io.h"
u8 State1 = 0; //LED1初始状态
u8 State2 = 0; //LED2初始状态
u8 State3 = 0; //LED3初始状态
u16 Key_Vol; //按键按下持续时间
u16 Key_Vol_2; //按键按下持续时间
void LED0_Blink(void)
{
State1 = !State1;
P00 = State1;
}
void LED1_Blink(void)
{
State2 = !State2;
P01 = State2;
}
void LED2_Blink(void)
{
State3 = !State3;
P02 = State3;
}
u16 KEY1_COUNT = 0; //P32按钮计数
u16 KEY2_COUNT = 0;
void KEY_Task(void)
{
//----------P32按钮计数----------
if( P32 == 0 )
{
Key_Vol++;
if(Key_Vol==5)
{
KEY1_COUNT++;
}
}
else
{
Key_Vol = 0;
}
//----------P33按钮计数----------
if( P33 == 0 )
{
Key_Vol_2++;
if(Key_Vol_2==5)
{
KEY2_COUNT++;
}
}
else
{
Key_Vol_2 = 0;
}
}
u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//----------- p2端口流水灯-----------
LED40_SetPort(2,~P2_STATE); //点亮P20端口
P2_STATE = (P2_STATE<<1);
if(P2_STATE == 0)
P2_STATE = 1;
//----------- P10闪烁 --------------
if(P10_STATE == 0)
LED40_SetBit(1,0);
else
LED40_ClrBit(1,0);
P10_STATE = !P10_STATE;
}
u32 KEY_Count = 0;
//任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
void TASK_2(void)
{
KEY_Count = KEY1_COUNT *10000+KEY2_COUNT;
SEG7_ShowLong( KEY_Count,10 );
}
任务3:按下数字按键在数码管显示对应的按键数字
#include "io.h"
u8 State1 = 0; //LED1初始状态
u8 State2 = 0; //LED2初始状态
u8 State3 = 0; //LED3初始状态
u16 Key_Vol; //按键按下持续时间
u16 Key_Vol_2; //按键按下持续时间
void LED0_Blink(void)
{
State1 = !State1;
P00 = State1;
}
void LED1_Blink(void)
{
State2 = !State2;
P01 = State2;
}
void LED2_Blink(void)
{
State3 = !State3;
P02 = State3;
}
u16 KEY1_COUNT = 0; //P32按钮计数
u16 KEY2_COUNT = 0;
void KEY_Task(void)
{
//----------P32按钮计数----------
if( P32 == 0 )
{
Key_Vol++;
if(Key_Vol==5)
{
KEY1_COUNT++;
}
}
else
{
Key_Vol = 0;
}
//----------P33按钮计数----------
if( P33 == 0 )
{
Key_Vol_2++;
if(Key_Vol_2==5)
{
KEY2_COUNT++;
}
}
else
{
Key_Vol_2 = 0;
}
}
u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//----------- p2端口流水灯-----------
LED40_SetPort(2,~P2_STATE); //点亮P20端口
P2_STATE = (P2_STATE<<1);
if(P2_STATE == 0)
P2_STATE = 1;
//----------- P10闪烁 --------------
if(P10_STATE == 0)
LED40_SetBit(1,0);
else
LED40_ClrBit(1,0);
P10_STATE = !P10_STATE;
}
u32 KEY_Count = 0;
//任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
void TASK_2(void)
{
KEY_Count = KEY1_COUNT *10000+KEY2_COUNT;
SEG7_ShowLong( KEY_Count,10 );
}
u32 REC_NUM = 0;
//任务3:按下数字按键在数码管显示对应的按键数字
void TASK_3(void)
{
SEG7_ShowLong( REC_NUM,10 );
}
10.AI8051U教学视频第10集虚拟LED和数码管学习程序.zip
(1.89 MB, 下载次数: 58)
|
|