📄 key16.c
字号:
#include"includes.h"
extern unsigned int L_num,R_num; //左右移偏移量
unsigned char keyread; //按键值
extern unsigned char xdata res1[256];
extern unsigned char xdata resmem[256]; //存储数组
extern unsigned char memshow_flag; //显示存储波形标志位
extern double setfreq; //设定的采样频率
extern double freq; //测定的实际频率
extern double T;
extern bit zero_flag;
extern unsigned char freq_flag;
void key16() //读取按键值
{
P3=1;
mydelay(50);
keyread=P3;
if(keyread!=0x00)
{
turnward();
sword();
wav_mem();
}
}
void turnward() //根据按键向左右移动输出波形
{
if((keyread==0x10)||(keyread==0x12))
{
if(keyread==0x10) //按一下左移一位
{
if(R_num>0)
R_num--;
else
L_num++;
if(L_num>=255) L_num=0;
}
else if(keyread==0x12) //按一下右移一位
{
if(L_num>0)
L_num--;
else
R_num++;
if(L_num>=255) L_num=0;
}
else
return;
}
else
return;
}
void sword() //扫描时间选择档位
{
if((keyread==0x1f)||(keyread==0x1e)||(keyread==0x11))
{
if(keyread==0x1f) //20ms/div
{
freq_flag=0;
}
else if(keyread==0x1e) //2us/div
{
freq_flag=1;
}
else if(keyread==0x11) //100ns/div
{
freq_flag=2;
}
else
return;
}
else
return;
}
void freq_set() //计算9851所需频率
{
T=1000/freq; //测定时间单位:us
zero_flag=0;
if(freq_flag==0)
{
if(freq>=0.5)
{
zero_flag=1;
}
else
{
setfreq=0.003;
}
}
else if(freq_flag==1)
{
if(freq<=1000)
{
setfreq=3/(T+0.1);
}
else if((freq>1000)&&(freq<5000))
{
setfreq=3/(10*T+0.1);
}
else if(freq>5000)
{
zero_flag=1;
}
}
else if(freq_flag==2)
{
if(freq<=1000)
{
zero_flag=1;
}
else if(freq>1000)
{
setfreq=3/(10*T+0.005);
}
}
}
void wav_mem() //波形存储显示
{
unsigned int i;
if((keyread==0x14)||(keyread==0x16)) //波形存储
{
if(keyread==0x14)
{
for(i=0;i<256;i++)
resmem[i]=res1[i];
}
else if(keyread==0x16) //显示当前波形、存储波形转换
{
if(memshow_flag==0)
memshow_flag=1;
else if(memshow_flag==1)
memshow_flag=0;
}
}
else
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -