📄 flash.c
字号:
//硬件结构是四驱。K3交替闪,K2同闪,K1交替多闪
#include<pic.h>
__CONFIG(MCLRDIS&WDTDIS&UNPROTECT&INTRC);
#define IN1 GP2
#define IN2 GP3
#define IN3 GP5
#define OUT1 GP4
#define OUT2 GP1
char test(char x)//按键按下检测,包括防延时抖动。
{
int i;
if(x==0)
{
for(i=5000;i>0;i--)
;
if(x==0)
{
if(x==1)
for(i=5000;i>0;i--)
;
if(x==1)
return 1;
else
return 1;
}
}
else
return 0;
}
void init (void)//初始化通用寄存器、单片机的各引脚方向和设置各引脚的初始状态;
{
OSCCAL=0b11111110;//内部晶振校准
TRIS=0b00101100;//00001011晶振脚随意设置为0,编程的为1;
GPIO=0;
OPTION=0x07;//初始定时器。
}
char a=0;
main()
{
init();
while(1)
{
if(test(IN1))//当确定IN1键按下时
{ TMR0=0;//开始计时
while(!test(IN3)&&!test(IN2))//在没有按下其他键的前提下
{
if(TMR0>=39)
{TMR0=0;a++;}
if(a<15)
{OUT1=1;}//亮
if(a>=15&&a<25)
{OUT1=0;}//灭
if(a>=25&&a<35)
{OUT1=1;}
if(a>=35&&a<45)
{OUT1=0;}
if(a>=45&&a<55)
{OUT1=1;}
if(a>=55)
{OUT1=0;}
if(a>=55&&a<65)
{OUT2=1;}
if(a>=65&&a<75)
{OUT2=0;}
if(a>=75&&a<85)
{OUT2=1;}
if(a>=85&&a<95)
{OUT2=0;}q
if(a>=95&&a<105)
{OUT2=1;}
if(a>=105)
{OUT2=0;a=0;}
}
}
if(test(IN2))
{
TMR0=0;
while(!test(IN3)&&!test(IN1))
{
if(TMR0>=39)
{TMR0=0;a++;}
if(a<15)
{OUT1=1;OUT2=1;}//
else if(a>=15&&a<25)
{OUT1=0;OUT2=0;}
else
{a=0;}
}
}
if(test(IN3))//当确定IN3键按下时
{
TMR0=0;//开始计时
while(!test(IN2)&&!test(IN1))//在没有按下其他键的前提下
{
if(TMR0>=39)
{TMR0=0;a++;}
if(a<15)
{OUT1=1;}//
else if(a>=15&&a<25)
{OUT1=0;OUT2=0;}
else if(a>=25&&a<35)
{OUT2=1;}//
else if(a>=35&&a<45)
{OUT1=0;OUT2=0;}
else if(a>=45&&a<55)
{OUT1=1;}//
else if(a>=55&&a<65)
{OUT1=0;OUT2=0;}
else if(a>=65&&a<75)
{OUT2=1;}//
else if(a>=75&&a<85)
{OUT1=0;OUT2=0;}
else
{a=0;}
}
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -