?? 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 + -