📄 subprogram.h
字号:
/*const unsigned char codeTab[]={
0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,
// ;0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9
0xe3,0x85,0x71,0x61,0xf5,0xff,0x89,0xd5,0xc5,0x00,};
// ;L ,d ,F ,E ,r ,Dark,y ,n ,o ,8.
const unsigned char dot[10]={0};
const unsigned char Max[10]={0};
unsigned char bits[8],key_times,p_old,d_old,var_temp;
unsigned int vars[11]={1234};
struct flags {unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}userflag;
#define send_Enable userflag.bit0
#define key_close userflag.bit1
#define key_open userflag.bit2
#define setup userflag.bit3
#define ready_adc userflag.bit4
#define open_adc userflag.bit5
#define close_adc userflag.bit6
*/
void key_0(void)
{
if (setup) {vars[var_temp]=vars[var_temp]%1000*10+0;}
}
void key_1(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+1;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_2(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+2;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_3(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+3;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_4(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+4;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_5(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+5;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_6(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+6;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_7(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+7;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_8(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+8;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_9(void)
{if (setup) {vars[var_temp]=vars[var_temp]%1000*10+9;}
// else { Num=OpenFile((uint8*)&usb_data[0]);
}
void key_d(void)
{ OCR3C= OCR3C-2;
vars[0]=OCR3C;
}
void key_l(void)
{ OCR3C= OCR3C+2;
vars[0]=OCR3C;
}
void key_f(void)
{unsigned char temp;
unsigned int i;
// temp=ReadFile4Print("ABCDEFGHBIN");
//zxf
// for (i=0;i<512;i++) usb_data[i]=ReadBlockData[i];
// printf("read file return %x\n",temp);
}
void key_clr(void)
{if (setup) {vars[var_temp]=0;}}
void key_left(void)
{var_temp++;
if (setup)
{if (var_temp==11) var_temp=5;}
else {if (var_temp==5) var_temp=0;}
}
void key_right(void)
{if (setup)
{if (var_temp==5) {var_temp=11;}}
else {if (var_temp==0) {var_temp=5;}}
var_temp--;
}
void key_set(void)
{unsigned char n,temp,bak;
unsigned int i;
setup=~setup;
if (setup)
{var_temp=5;
}
else { var_temp=0;
USB_address=vars[5];
n=vars[6];
temp=OpenFile(&Fat_data[n*32]);
ReadFile(temp,USB_address,usb_data,512);
CloseFile(temp);
page=2;
}
}
void key_dian(void)
{
put_u1(9);//
}
void key_try(void)
{wrfile();
}
void key_bak1(void)
{}
void key_bak2(void)
{}
void key_bak3(void)
{}
void key_bak4(void)
{}
void key_bak5(void)
{}
void Scankey(unsigned char i,unsigned char j)
{static unsigned char key_times=0;
if (key_close)
{if ((i==p_old)&(j==0xff)) key_open=1;}
else {if (j!=0xff)
{if ((p_old==i)&(d_old==j))
{key_times++;
if (key_times==8)
{key_times=0;key_close=1;}
}
else {p_old=i;d_old=j;}
}
}
}
void SPI(void)
{unsigned char temp=0,key_value=0;
static unsigned char position=0;
position++;
if (position==8) position=0;
if (0)
{temp=codeTab[bits[position]];}
else
{switch (Max[var_temp])
{case 1:bits[1]=15;bits[2]=15;bits[3]=15;break;
case 2:bits[2]=15;bits[3]=15;break;
case 3:bits[3]=15;break;
default:break;} //数字位数限制
temp=codeTab[bits[position]];
if (((position==dot[var_temp])&(dot[var_temp]!=0))
|((position==6)&(var_temp<5))) --temp; //小数点处理
}
PORTB|=(1<<0);//关显示,消隐
SPDR=~(1<<position);
while (!(SPSR&(1<<SPIF)));
key_value=SPDR; //读入按键的外部数据.
SPDR=temp;
while (!(SPSR&(1<<SPIF)));
temp=SPDR;
PORTB&=(~(1<<0));//开显示
Scankey(position,key_value);
}
void dealkey(void)
{
if (key_open)
{switch (p_old){
case 0:switch (d_old){
case 0b01111111: key_0();break;
case 0b10111111: key_8();break;
default: key_left();break;
};break;
case 1: switch (d_old){
case 0b01111111: key_7();break;
case 0b10111111: key_dian();break;
default: key_bak1();break;
};break;
case 2:switch (d_old){
case 0b01111111: key_6();break;
case 0b10111111: key_f();break;
default: key_bak2();break;
};break;
case 3: switch (d_old){
case 0b01111111: key_5();break;
case 0b10111111: key_set();break;
default: key_bak3();break;
};break;
case 4:switch (d_old){
case 0b01111111: key_4();break;
case 0b10111111: key_l();break;
default: key_bak4();break;
};break;
case 5: switch (d_old){
case 0b01111111: key_3();break;
case 0b10111111: key_right();break;
default: key_bak5();break;
};break;
case 6:switch (d_old){
case 0b01111111: key_2();break;
case 0b10111111: key_d();break;
default: key_try();break;
};break;
case 7: switch (d_old){
case 0b01111111: key_1();break;
case 0b10111111: key_9();break;
default: key_clr();break;
};break;
default: break;
}
key_open=key_close=0;}
}
void LED(void)
{ dealkey();
bits[0]=vars[var_temp]%10;
bits[1]=vars[var_temp]%100/10;
bits[2]=vars[var_temp]%1000/100;
bits[3]=vars[var_temp]%10000/1000;
if (setup)
{bits[6]=(var_temp-5)%10;
bits[7]=(var_temp-5)/10;
bits[5]=15;}
else {bits[5]=var_temp;
bits[6]=18;
bits[7]=17;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -