- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2024-01-24 13:47:35
注册会员
- 积分
- 101
|
发表于 2023-11-14 16:46:14
|
显示全部楼层
本帖最后由 ershiji 于 2023-11-14 16:52 编辑
第七级
软件消抖
if(KEY == 0)
{
Delay_ms();
if(KEY == 0)
{
执行功能
}
}
定义数组
课后作业
#include "COMM/stc.h"
#define MAIN_Foce 2400000UL
void KEY_S();
void MODE_S(void);
void MODE_0(void);
void MODE_1(void);
void delay_ms(u16 ms);
//假设按键是P32,按下变换模式,两种模式模式0流水灯,模式二逐次点亮,循环。由于没有使用中断所以按键无法迅速响应。
u8 KEY;
u8 i;
u8 o=0xfe;
u8 wlt[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u8 MODE=0;
void main()
{
KEY=P32;
P40 = 0;
while(1)
{
KEY_S();
MODE_S();
}
}
void MODE_S(void)
{
if(MODE==0)
{
MODE_0();
}
else
{
MODE_1();
}
}
void MODE_0(void)
{
P6=wlt;
i++;
delay_ms(200);
if(i==8)
i=0;
}
void MODE_1(void)
{
P6=o;
if(o==0x00)
o=0xff;
delay_ms(200);
o<<=1;
}
void KEY_S()
{
if(KEY==0)
{
delay_ms(10);
if(KEY==0)
{
MODE++;
if(MODE==2)
{
MODE=0;
}
o=0xfe;
i=0;
while(KEY==0);
}
}
}
void delay_ms(u16 ms)
{
int ii;
while(--ms)
{
ii=MAIN_Foce/6000;
while(--ii);
}
}
本人是有基础但是不是特别牢靠加上没有实验箱,所以不能保证代码的正确性。
|
|