📄 key.c
字号:
/*
2402数据存储结构 所有数据按位存放
30-31:去皮时A/D转换值
32-33:校称时A/D转换值
34-39:校称值
40-43:打包数量
44-45:打包值
46-47:大螺旋设定值
48-49:小螺旋设定值
4a:小数点位
50-55:落差
F1;去皮设定(只有确定、返回起作用)
F2:校称值确定(6位)
F3:打包值设定
F4:大螺旋设定数值(2位)
F5:小数点位数(2位)
F6:落差
F7:打包数量
F8:
*/
#include "ad7705.h"
#include "ZLG7289.h"
#include "ZLG7289T.h"
#include "2402.h"
#include "intrins.h"
#include "KEY.H"
#include "main.h"
#include "ad7730.h"
#include <w77c32.h>
volatile unsigned char Key;
unsigned char xdata dis_6[6];
/*
函数:key_set(volatile unsigned char Key)
功能:判断哪个功能键按下
参数:Key:返回的键值
*/
void key_main (volatile unsigned char Key)
{
EX0 = 0;
EA = 0;//关断中断
switch (Key)
{
case key_set:
pkey_set();
key_press=0;
break;
case key_sw0:
pkey_sw0();
key_press=0;
break;
case key_sw1:
pkey_sw1();
key_press=0;
break;
//case key_auto:
//w_auto=1;
//w_hand=0;
//break;
//case key_hand:
//w_auto=0;
//w_hand=1;
// break;
case key_aim:
pkey_aim();
key_press=0;
break;
default:
break;
}
EX0 = 1;
EA = 1;//开启中断
}
/*
函数:void dis_f(unsigned char f_num)
功能:设置打包值
参数:f_num:菜单号
*/
void ZLG7289Tdis_f(unsigned char f_num)
{
ZLG7289T_Hide(0xff);
ZLG7289T_Download(0, 0, 0, 0x0a);
ZLG7289T_Download(0, 1, 0, 0x0a);
ZLG7289T_Download(0, 2, 0, f_num);
ZLG7289T_Download(1, 3, 0, 0x0f);
ZLG7289T_Download(0, 4, 0, 0x0a);
ZLG7289T_Download(0, 5, 0, 0x0a);
}
/*
函数:void dis_f(unsigned char f_num)
功能:设置打包值
参数:f_num:菜单号
*/
void ZLG7289dis_f(unsigned char f_num)
{
ZLG7289_Hide(0xff);
ZLG7289_Download(0, 0, 0, 0x0a);
ZLG7289_Download(0, 1, 0, 0x0a);
ZLG7289_Download(0, 2, 0, f_num);
ZLG7289_Download(1, 3, 0, 0x0f);
ZLG7289_Download(0, 4, 0, 0x0a);
ZLG7289_Download(0, 5, 0, 0x0a);
}
/*
函数:array_l(unsigned char num,unsigned char start_num,unsigned char dat,unsigned char *p)
功能:数组左移最高位溢出
参数:num:要移动的数组的数据个数
start_num:要移动数组的起始位
*p:要移动数组
array_l(6,2,3,p):将数组p[6]从p[2]-p[5]左移p[5]溢出p[2]=3
*/
array_l(unsigned char num,unsigned char start_num,unsigned char dat)
{
unsigned char data i;
for(i=num;i>0;i--)
{
dis_6[start_num+i-1]=dis_6[start_num+i-2];
}
dis_6[start_num]=dat;
}
/*
函数:pkey_l()
功能:显示数组左移,按数字键后依次左移
参数:num:要移动的数组的数据个数
start_num:要移动数组的起始位
aim_over =0x01;按下确定
aim_over =0x02;按下返回
aim_over =0x03;按下数字
aim_over =0x03;按下确定
aim_over =0x00;其他情况
*/
unsigned char pkey_l(unsigned char num,unsigned char start_num)
{
unsigned char data aim_over;
switch (Key)
{
case key0:
array_l(num,start_num,0);
aim_over=0x03;
break;
case key1:
array_l(num,start_num,1);
aim_over=0x03;
break;
case key2:
array_l(num,start_num,2);
aim_over=0x03;
break;
case key3:
array_l(num,start_num,3);
aim_over=0x03;
break;
case key4:
array_l(num,start_num,4);
aim_over=0x03;
break;
case key5:
array_l(num,start_num,5);
aim_over=0x03;
break;
case key6:
array_l(num,start_num,6);
aim_over=0x03;
break;
case key7:
array_l(num,start_num,7);
aim_over=0x03;
break;
case key8:
array_l(num,start_num,8);
aim_over=0x03;
break;
case key9:
array_l(num,start_num,9);
aim_over=0x03;
break;
case key_ok:
aim_over=0x01;
break;
case key_back:
aim_over=0x02;
break;
case key_set:
aim_over=0x04;
break;
default:
aim_over=0x00;
break;
}
return aim_over;
}
/*
函数:pkey_aim()
功能:设置打包值
参数:
*/
void pkey_aim()
{
unsigned char data keysgn_aim=0;
bit ok_back=1;
Read_N_Bytes(dis_6,ZLG7289T_N,pack_2402);
ZLG7289T_dissapear( ZLG7289T_N,l_num,dis_6,1);
ZLG7289dis_f(l_aim);
while(!keysgn_aim|ok_back)//按下确定返回后返回
{
Key = ZLG7289_Key();
Delay(20);
keysgn_aim=pkey_l(l_num,0);
switch (keysgn_aim)
{
case 1:
ok_back=0;
Write_A_Page(dis_6,ZLG7289T_N,pack_2402);
break;
case 2:
ok_back=0;
break;
case 3:
ZLG7289T_dissapear( ZLG7289_N,l_num,dis_6,1);
ok_back=1;
break;
default:
break;
}
}
}
/*
函数:pkey_sw0()
功能:设置去皮值
参数:
*/
void pkey_sw0()
{
unsigned char data i;
bit sw0_over=1;
for(i=0;i<6;i++)
{
dis_6[i]=0;
}//显示数组清零
ZLG7289_dissapear( ZLG7289_N,dis_6);
ZLG7289Tdis_f(l_sw0);
while(sw0_over)
{
Key = ZLG7289_Key();
Delay(20);
switch (Key)
{
unsigned char data ad7730_dat8[2];
unsigned int data ad7730_dat;
case key_ok:
/*********添加读A/D值并储存程序***********/
ad7730_dat=ReadData7705();
ad7730_dat8[0]=ad7730_dat;
ad7730_dat8[1]=ad7730_dat>>8;
Write_A_Page(ad7730_dat8,2,sw0Ah_2402);
/*********添加读A/D值并储存程序***********/
sw0_over=0;
break;
case key_back:
sw0_over=0;
break;
default:
sw0_over=1;
break;
}
}
}
/*
函数:pkey_sw1()
功能:设置校称值
参数:
*/
void pkey_sw1()
{
unsigned char data loop ,keysgn_sw1=0;
bit ok_back=1;
for(loop=0;loop<6;loop++)
{
dis_6[loop]=0;
}//显示数组清零
ZLG7289_dissapear( ZLG7289_N,dis_6);
ZLG7289Tdis_f(l_sw1);
while(!keysgn_sw1|ok_back)//按下确定返回后返回
{
Key = ZLG7289_Key();
Delay(20);
keysgn_sw1=pkey_l(ZLG7289_N,0);
switch (keysgn_sw1)
{
unsigned char data ad7730_dat8[2];
unsigned int ad7730_dat;
case 1:
ok_back=0;
/*********添加读A/D值并储存程序***********/
ad7730_dat=ReadData7705();
ad7730_dat8[0]=ad7730_dat;
ad7730_dat8[1]=ad7730_dat>>8;
Write_A_Page(ad7730_dat8,2,sw1Ah_2402);
/*********添加读A/D值并储存程序***********/
Write_A_Page(dis_6,ZLG7289T_N,sw1h_2402);
break;
case 2:
ok_back=0;
break;
case 3:
ZLG7289_dissapear( ZLG7289_N,dis_6);
ok_back=1;
break;
default:
break;
}
}
}
/*
函数:pkey_setdis(unsigned char file_n)
功能:设置程序
参数:
*/
void pkey_setdis(unsigned char file_n)
{
unsigned char idata loop;
for(loop=0;loop<6;loop++){dis_6[loop]=0;}//显示数组清零
if(file_n==4)//大螺旋
{
Read_N_Bytes(dis_6,2,big_2402);
ZLG7289_dissapear( ZLG7289_N,dis_6);
ZLG7289Tdis_f(file_n);
}
if(file_n==5)//小数点
{
dis_6[0]=Read_One_Byte(point_2402);
ZLG7289_dissapear( ZLG7289_N,dis_6);
ZLG7289Tdis_f(file_n);
}
if(file_n==6)//落差
{
//unsigned char idata point;
Read_N_Bytes(dis_6,luocha_num,luo_2402); //设置落差显示程序
point=Read_One_Byte(point_2402);
dis_6[point]|=0x80;
ZLG7289Tdis_f(file_n);
ZLG7289_dissapear( luocha_num,dis_6);
ZLG7289Tdis_f(file_n);
}
if(file_n==7)//打包数量
{
Read_N_Bytes(dis_6,ZLG7289T_N,pack_2402);
ZLG7289T_dissapear( ZLG7289T_N,l_num,dis_6,2); //设置打包数程序
ZLG7289dis_f(file_n);
}
}
/*
函数:pkey_set()
功能:设置程序
参数:
*/
void pkey_set()
{
unsigned char idata file_n=0x03,keysgn_set=0;
bit ok_back=1;
//ZLG7289Tdis_f(file_n);
//ZLG7289_dissapear( ZLG7289_N,dis_6);
//Delay(20);
while(!keysgn_set|ok_back)//按下确定返回后返回
{
unsigned char idata led_num,led_start,addr2402;
bit one_two;
Key = ZLG7289_Key();
Delay(20);
switch (file_n)//不同情况下参数设定
{
case 4://大螺旋
led_num=0x02;
led_start=0x00;
addr2402=big_2402;
one_two=0;
break;
/*
case 5:
led_num=0x02;
led_start=0x00;
addr2402=small_2402;
one_two=0;
break;
*/
case 5://小数点
led_num=0x01;
led_start=0x00;
addr2402=point_2402;
one_two=0;
break;
case 6://落差
point=Read_One_Byte(point_2402);
if(point)
led_num=0x02;
else
led_num=0x01;
led_start=0x00;
addr2402=luo_2402;
one_two=0;
break;
case 7://打包数量
led_num=0x06;
led_start=0x02;
addr2402=pack_2402;
one_two=1;
break;
default: break;
}
keysgn_set=pkey_l(led_num,led_start);
switch (keysgn_set)
{
case 1:
ok_back=0;
if(file_n==6)//落差设置
{
//unsigned char idata point_m;
point=Read_One_Byte(point_2402);
dis_6[point]&=0x7f;
}
Write_A_Page(dis_6,led_num,addr2402);
break;
case 2:
ok_back=0;
break;
case 3:
if(file_n==5)//小数点
{
if(dis_6[0]>point_max)dis_6[0]=0;
}
if(file_n==6)//落差
{
unsigned char idata point_n;
point_n=Read_One_Byte(point_2402);
dis_6[point_n+1]&=0x7f;
dis_6[point_n]|=0x80;
}
if(one_two)ZLG7289T_dissapear(ZLG7289_N,2,dis_6,2);
else ZLG7289_dissapear( ZLG7289_N,dis_6);
ok_back=1;
break;
case 4:
file_n++;
if(file_n>7)file_n=4;
ok_back=1;
pkey_setdis(file_n);
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -