本期板卡我们实现了通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
设计思路:该板子上共有四个LED灯,从右到左可依次命名为“led1、led2和led3”,第四个LED灯我们这里不需要,所以就没有命名,先判断有无按键,若按下,则开始计时直到按键结束,在判断按键时间是大于1s还是大于5s,对应相应的灯亮,最后将点位信息打印显示到sscom上。
Pin module配置:
时钟配置:
将主频设为32MHz:
ADC配置:
主要代码
void main(void)
SYSTEM_Initialize();
int Time = 0;
int state = 0;
int ddc = 0;
while (1)
{
if (!button_GetValue()) {
__delay_ms(10);
if (!button_GetValue()) {
Time++;
}
if(Time<100){
state = 0;
}
else if(Time>=100 && Time < 500){
state = 1;
}
else if(Time>500 ){
state = 2;
}
}else{
ddc = ADCC_GetSingleConversion(0x10);
if(Time!=0){
if(state==0){
led1_SetHigh();
led2_SetLow();
led3_SetLow() ;
printf("short_press ADValue: %d",ddc);
}
else if(state==1){
led1_SetHigh();
led2_SetHigh();
led3_SetLow();
printf("normal_press ADValue: %d",ddc);
}
else if(state==2 ){
led1_SetHigh();
led2_SetHigh();
led3_SetHigh();
printf("long_press ADValue: %d",ddc);
}
}
Time = 0;
}
}
}
心得体会:mcc是一个各方面都比较完备的功能,有了它的存在可以帮我们减轻不少的麻烦。
虚拟串口的调试不太方便。
对八位单片机有了一定的了解,掌握了相关的编程方法。