📄 mytask.c
字号:
/*----------------------------------------------*-
Mytask.c
create my own task
-*----------------------------------------------*/
#include"main.h"
#include"mytask.h"
#define state1 0x01
#define state2 0x02
uchar state;
bit key0_pressed_flag=0;
bit key1_pressed_flag=0;
bit key2_pressed_flag=0;
bit key3_pressed_flag=0;
uint data timeout = 0x5000;
uchar erect_measure_count=0;
void Mytask_Init(void)
{
P3=0xff;
state=state1;
}
void key_scan(void) //利用 state machine 进行键盘扫描
{
switch(state)
{
case state1:
if(!key0||!key1||!key2||!key3) //低电平时表示被按下
state=state2;
case state2:
if(!key0)
{
while(key0==0 && --timeout)
key0_pressed_flag=1;
}
else if(!key1)
{
while(key1==0 && --timeout)
key1_pressed_flag=1;
}
else if(!key2)
{
while(key2==0 && --timeout)
key2_pressed_flag=1;
}
else if(!key3)
{
while(key3==0 && --timeout)
key3_pressed_flag=1;
}
state=state1;
break;
}
}
void Mytask(void)
{
if(key0_pressed_flag)
{
measure_modify=0;
delay4us();
measure_modify=1;
delay4us();
state=state1;
key0_pressed_flag=0;
}
else if(key1_pressed_flag)
{
erect_measure_count++; //通过变量的自加来达到模拟开关计数的目的
if(erect_measure_count==4)
erect_measure_count=0;
switch(erect_measure_count)
{
case 0:
P12=1;
delay4us();
P12=0;
switch_modify0=0;
delay1us();
switch_modify1=0;
delay1us();
break;
case 1:
P12=1;
delay4us();
P12=0;
switch_modify0=0;
delay1us();
switch_modify1=1;
delay1us();
break;
case 2:
P12=1;
delay4us();
P12=0;
switch_modify0=1;
delay1us();
switch_modify1=0;
delay1us();
break;
case 3:
P12=1;
delay4us();
P12=0;
switch_modify0=1;
delay1us();
switch_modify1=1;
delay1us();
break;
}
key1_pressed_flag=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -