大家好,我是普通本科独立院校软件工程专业毕业五年的大龄青年,自学前端开发可以做项目怎么找到合适的开发岗。
通过上述的按键状态分离,我们可以利用此程序的特性来实现按键的松手检测。而按键的松手检测我记得是在某国赛还考过的。下面先上代码
#include "STC15F2K60S2.h"
#define SEL(x) P2 = (P2 & 0x1f) | (x << 5); P2 = (P2 & 0x1f)
#define P0FF P0 = 0xff
typedef unsigned char uchar;
typedef unsigned int uint;
enum{LED = 4, EXT, DIG, CODE};
sbit BP = P0^6; sbit RY = P0^4;
sbit K1 = P3^0; sbit K2 = P3^1; sbit K3 = P3^2; sbit K4 = P3^3;
enum{KS_GET, KS_ASSIGN, KS_WAITDEAL}KeyState = KS_GET;
uchar TempKey = 0,Key = 0, KeyCnt = 0;
uchar GetKey()
{
if(K1 == 0) return 1;
else if(K2 ==0) return 2;
else if(K3 ==0) return 3;
else if(K4 ==0) return 4;
else return 0;
}
void Init()
{
P0FF;
SEL(LED);
BP = 0;RY = 0;
SEL(EXT);
}
void Timer1Init(void) //2毫秒@12.000MHz
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x9A; //设置定时初值
TH1 = 0xA9; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
//加上
ET1 = 1; //允许定时器1中断
EA = 1; //全局允许中断开启
}
void Timer1Handle() interrupt 3
{
switch(KeyState)
{
case KS_GET:
TempKey = GetKey();
KeyState = KS_ASSIGN;
KeyCnt = 10;
break;
case KS_ASSIGN:
if(KeyCnt != 0)
{
KeyCnt--;
}
else if(TempKey == GetKey())
{
if(TempKey != Key)
{
Key = TempKey;
KeyState = KS_WAITDEAL;
}
else
{
Key = KS_GET;
}
}
else
{
KeyState = KS_GET;
}
break;
}
}
void main()
{
Init();
Timer1Init();
while(1)
{
if(KeyState == KS_WAITDEAL)
{
switch(Key)
{
case 0:
P0 = 0xff;
SEL(LED);
break;
case 1:
P0 = 0x00;
SEL(LED);
}
KeyState = KS_GET;
}
}
}
这个程序可以实现按下S7,LED全亮,松开S7,LED全部熄灭。
为什能够实现这个功能呢?原因就在于
这个0上面,其实你仔细思考整个流程,你会发现其实你在按下按键后
GetKey()程序会返回(1-4)得到值(取决你按下的按键),然后会触发KS_WAITDEAL的事件,在主程序中会根据Key来处理。然后你松开手后,这个时候GetKey没有检测到按键,但是会返回0的!,这个0会也会触发KS_WAITDEAL的事件,然后主程序中会根据Key为0来处理事件。然后下一次扫描的时候,还是返回的0,但是这个0就不会触发KS_WAITDEAL的事件了!
这是因为
程序中有对重复的按键的检测的。这部分需要读者带入特定的值在脑子中走一遍流程就懂了。因此只要在上述的基础上增加按键对0值的按键处理即可实现松手检测了,是不是很简单?
这里加一个问题:请实现按下S7全亮松开S7全灭,按下S6亮第一个灯,松开S6灭掉第一个灯
作为一名有五年工作经验的普通本科软件工程专业毕业生,如何找到适合自己的前端开发工作?
首先,你需要将自己在前端开发方面的知识和技能进行进一步的提高和充实,可以通过参加前端课程、查看前端技术文档、参加前端技术交流和分享等方式进行学习。同时,可以加入一些前端开发社群、博客园等平台,关注前端技术动态和面试经验等。
其次,你需要准备好自己的简历和作品集,突出自己的优势和特点,个人作品集展示更是非常重要,可以通过上传到Github等平台来展示给面试官。
最后,在面试中表现出自己的技能和能力,尽可能地展现出自己的“可塑性”和学习能力,对面试官的提问进行积极回应,并注意展示自己在前端开发方面的思考和分析能力。在技术方面也可以通过代码演示来展示自己的能力和熟练程度。
代码示例:
1.学习前端开发技能和知识:
可以通过在线学习平台、视频课程和参加培训等方式进行学习。还可以查看前端技术文档或者加入前端技术交流群进行学习交流。
2.加入前端开发社群、博客园等平台:
可以通过查找前端开发相关的微信群、QQ群等社群进行加入,还可以关注某些前端开发博客园来获取最新资讯和面试经验等。
3.简历和作品集:
简历主要突出自己的能力和特点,作品集则展示自己的前端开发项目和个人技术能力。可以通过上传至Github等平台进行展示。
4.在面试中表现出自己的技能和能力:
可以准备好自己的技术问题和面试问题的答案,进行反复练习和提高;可以通过代码演示和技术分析等方式展示自己的能力和熟练程度;也可以积极回应面试官的提问,并展示自己在前端开发方面的思考和分析能力。
5.注意事项:
面试中尽可能展现自己的学习能力和可塑性;注意自己的沟通能力,尽可能表达清晰易懂;积极与面试官沟通,对于自己不懂的问题,可以诚恳地说出来。