📄 main.c
字号:
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
///////////////////////////////////////
sbi(CONTR_LCD_PORT,STB);
}
//***************************
void Send_byte(uchar a)
{
LCD_DATA_PORT = a;
cbi(CONTR_LCD_PORT,LE);
asm("nop");
sbi(CONTR_LCD_PORT,LE);
while( PINE & BUSY);
cbi(CONTR_LCD_PORT,STB);
asm("nop");
sbi(CONTR_LCD_PORT,STB);
}
//**********Return_Point******************
void Return_Point()
{
uchar i;
for(i=0;i<7;i++)
{
Send_byte(point[i]);
}
}
//*********Move_point********************
void Move_Point(uchar x,uchar y)
{
Send_byte(0x1b);
Send_byte(0x0d);
Send_byte(x);
Send_byte(0x1b);
Send_byte(0x52);
Send_byte(y);
}
//**********Disp_Date*******************
void Disp_Date(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Send_byte(*(p+i));
}
}
//**********CLEAR DATA*******************
void Clear_Data(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Send_byte( *(p+i));
}
}
//********READ-EEPROM********
void Read_Eeprom(void)
{
eeprom_busy_wait();
touch_lefttop_x = eeprom_read_word(0);
eeprom_busy_wait();
touch_lefttop_y = eeprom_read_word(2);
eeprom_busy_wait();
touch_rightbottom_x = eeprom_read_word(4);
eeprom_busy_wait();
touch_rightbottom_y = eeprom_read_word(6);
eeprom_busy_wait();
}
//****************************
void LJ_Zb(int *p,int *p1)
{
*p1 = *p * ratio_x +touch_lefttop_x;
*(p1+1) =(*(p +1)) * ratio_y + touch_lefttop_y;
*(p1+2) =(*(p +2)) * ratio_x + touch_lefttop_x;
*(p1+3) =(*(p +3)) * ratio_y + touch_lefttop_y;
}
//*********按键位置*******************
void Key_Wz(void)
{
LJ_Zb(KEY_LEFT,KEY_LEFT_P);
LJ_Zb(KEY_RIGH,KEY_RIGH_P);
LJ_Zb( KEY_MID,KEY_MID_P );
LJ_Zb(KEY_P16_1,KEY_P16_1P);
LJ_Zb(KEY_P16_2,KEY_P16_2P);
LJ_Zb(KEY_P16_3,KEY_P16_3P);
//
LJ_Zb(KEY_P15_1,KEY_P15_1P);
LJ_Zb(KEY_P15_2,KEY_P15_2P);
LJ_Zb(KEY_P15_3,KEY_P15_3P);
LJ_Zb(KEY_P15_4,KEY_P15_4P);
LJ_Zb(KEY_P15_5,KEY_P15_5P);
LJ_Zb(KEY_P15_6,KEY_P15_6P);
LJ_Zb(KEY_P15_7,KEY_P15_7P);
LJ_Zb(KEY_P15_8,KEY_P15_8P);
LJ_Zb(KEY_P15_9,KEY_P15_9P);
LJ_Zb(KEY_P15_0,KEY_P15_0P);
LJ_Zb(KEY_P15_c,KEY_P15_cP);
LJ_Zb(KEY_P15_q,KEY_P15_qP);
//
LJ_Zb(KEY_P6_rate,KEY_P6_rateP);
LJ_Zb(KEY_P6_press,KEY_P6_pressP);
LJ_Zb(KEY_P6_time,KEY_P6_timeP);
//
LJ_Zb(KEY_P8_flow,KEY_P8_flowP);
LJ_Zb(KEY_P8_press,KEY_P8_pressP);
//
LJ_Zb(KEY_P17_p,KEY_P17_pP);
LJ_Zb(KEY_P17_d,KEY_P17_dP);
}
//********************************
void Sc16_Tx_A_byte(uchar a)
{
Flag_Tx_A = OFF;
UART_A_DATA = a;
while( Flag_Tx_A == OFF );
}
//********************************
void Sc16_Tx_B_byte(uchar a)
{
Flag_Tx_B = OFF;
UART_B_DATA = a;
while( Flag_Tx_B == OFF);
}
//********************************
void Sc16_Init(void)
{
EICRB = 0x0f;
EIMSK = 0x30;
//A
UART_A_LCR = BTUON;
UART_A_DLL = 0X06; //19200
UART_A_DLM = 0X00;
UART_A_LCR = 0X03;
UART_A_MCR = 0X08;
UART_A_IER = 0x03;
//B
UART_B_LCR = BTUON;
UART_B_DLL = 0X0C; //9600
UART_B_DLM = 0X00;
UART_B_LCR = 0X03;
UART_B_MCR = 0x08;
UART_B_IER = 0x03;
}
//********************************
void Fa_A(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Sc16_Tx_A_byte(*(p+i));
}
}
//********************************
void Fa_B(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Sc16_Tx_B_byte(*(p+i));
}
}
//********************************
void Putc_Press(uchar c)
{
while( !(UCSR1A & (1<<UDRE1)) );
UDR1=c;
}
//********************************
uchar Getc_Press( void )
{
while( !(UCSR1A & (1<<RXC)));
return UDR1;
}
//********************************
void PRESS_Write(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Putc_Press( *( p+i ) );
}
}
//********************************
void PRESS_Read(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
*(p+i) = Getc_Press();
}
}
//*******显示键盘并处理按键输入****************
void Key_board( uint16_t *p)
{
uint16_t a;
uint16_t *b;
uchar w;
b = p;
a = 0;
Disp_Pin(15);
loop15: while(Flag_Rec == OFF );
Flag_Rec = OFF;
Asc_Dig();
if((KEY_MID_P[0] <= X_Zb) && (X_Zb <= KEY_MID_P[2]) && (Y_Zb <=KEY_MID_P[1])&&(KEY_MID_P[3]<= Y_Zb))
goto over;
//
if( a <= 6553)
{
if((KEY_P15_1P[0] <= X_Zb) && (X_Zb <= KEY_P15_1P[2]) && (Y_Zb <=KEY_P15_1P[1])&&(KEY_P15_1P[3]<= Y_Zb))
{
a = a * 10 + 1;
goto XsData;
}
if((KEY_P15_2P[0] <= X_Zb) && (X_Zb <= KEY_P15_2P[2]) && (Y_Zb <=KEY_P15_2P[1])&&(KEY_P15_2P[3]<= Y_Zb))
{
a = a * 10 + 2;
goto XsData;
}
if((KEY_P15_3P[0] <= X_Zb) && (X_Zb <= KEY_P15_3P[2]) && (Y_Zb <=KEY_P15_3P[1])&&(KEY_P15_3P[3]<= Y_Zb))
{
a = a * 10 + 3;
goto XsData;
}
if((KEY_P15_4P[0] <= X_Zb) && (X_Zb <= KEY_P15_4P[2]) && (Y_Zb <=KEY_P15_4P[1])&&(KEY_P15_4P[3]<= Y_Zb))
{
a = a * 10 + 4;
goto XsData;
}
if((KEY_P15_5P[0] <= X_Zb) && (X_Zb <= KEY_P15_5P[2]) && (Y_Zb <=KEY_P15_5P[1])&&(KEY_P15_5P[3]<= Y_Zb))
{
a = a * 10 + 5;
goto XsData;
}
if( a != 6553)
{
if((KEY_P15_6P[0] <= X_Zb) && (X_Zb <= KEY_P15_6P[2]) && (Y_Zb <=KEY_P15_6P[1])&&(KEY_P15_6P[3]<= Y_Zb))
{
a = a * 10 + 6;
goto XsData;
}
if((KEY_P15_7P[0] <= X_Zb) && (X_Zb <= KEY_P15_7P[2]) && (Y_Zb <=KEY_P15_7P[1])&&(KEY_P15_7P[3]<= Y_Zb))
{
a = a * 10 + 7;
goto XsData;
}
if((KEY_P15_8P[0] <= X_Zb) && (X_Zb <= KEY_P15_8P[2]) && (Y_Zb <=KEY_P15_8P[1])&&(KEY_P15_8P[3]<= Y_Zb))
{
a = a * 10 + 8;
goto XsData;
}
if((KEY_P15_9P[0] <= X_Zb) && (X_Zb <= KEY_P15_9P[2]) && (Y_Zb <=KEY_P15_9P[1])&&(KEY_P15_9P[3]<= Y_Zb))
{
a = a * 10 + 9;
goto XsData;
}
}
if((KEY_P15_0P[0] <= X_Zb) && (X_Zb <= KEY_P15_0P[2]) && (Y_Zb <=KEY_P15_0P[1])&&(KEY_P15_0P[3]<= Y_Zb))
{
a = a * 10 + 0;
goto XsData;
}
}
if((KEY_P15_cP[0] <= X_Zb) && (X_Zb <= KEY_P15_cP[2]) && (Y_Zb <=KEY_P15_cP[1])&&(KEY_P15_cP[3]<= Y_Zb))
{
a = a / 10 ;
goto XsData;
}
if((KEY_P15_qP[0] <= X_Zb) && (X_Zb <= KEY_P15_qP[2]) && (Y_Zb <=KEY_P15_qP[1])&&(KEY_P15_qP[3]<= Y_Zb))
*b = a;
goto loop15;
XsData: Return_Point();
Move_Point(5,8);
Clear_Data(Point_Kong,5);
if( a != 0)
{
utoa(a,Point_Date,10);
w = strnlen(Point_Date,10);
Return_Point();
Move_Point(5,8);
Disp_Date(Point_Date,w);
}
goto loop15;
//
over: Flag_Rec = OFF;
}
//************OPEN_ONE MIN************************
void Open_One_Min(void)
{
TCCR0 = _BV(CS02) | _BV(CS01) | _BV(CS00);
TCNT0 = 0;
TIMSK = _BV(TOIE0);
}
//************CLOSE ONE MIN**************
void Close_One_Min(void)
{
TCCR0 = 0;
TCNT0 = 0;
TIMSK = 0;
}
//************ONE TIME OVER**************
static uchar Flag_ONE = OFF;
static uint Count = 0;
static uint GS=0;
SIGNAL( SIG_OVERFLOW0 )
{
if( ++Count < 1688 )
{
GS ++;
if( GS > 280)
{
GS = 0;
Send_byte(0X2A);
}
}
else
{
Flag_ONE = ON;
Count = 0;
}
}
//*********FIX Second 计算器***********************
SIGNAL( SIG_OVERFLOW2 )
{
if( JINYU < Fix_Time)
{
if( ++GS_1S > 28 )
{
GS_1S = 0;
JINYU ++;
DD ++;
AAA1 ++;
}
}
else
{
JINYU = 0;
Flag_1S = ON;
}
}
//*******Time 2*************************
void Open_Fix_Second()
{
TCCR2 = _BV(CS22) | _BV(CS20);
TCNT2 = 0;
TIMSK = _BV(TOIE2);
JINYU = 0;
Flag_1S = OFF;
}
//*********************************
void Close_Fix_Second()
{
TCCR2 = 0;
TCNT2 = 0;
TIMSK = 0;
JINYU = 0;
Flag_1S = OFF;
}
//*********************************
//*********FIX MIN 计算器***********************
static uchar JINYU1 = 0;
static uchar GG=0;
SIGNAL( SIG_OVERFLOW1 )
{
if( JINYU1 < Fix_Time)
{
if( ++GS_1M > 10 )
{
GS_1M = 0;
JINYU1 ++;
GG ++;
}
TCNT1 = 0x573F;
}
else
{
JINYU1 = 0;
Flag_1M = ON;
}
}
//*******Time 1*************************
void Open_Fix_Min()
{
TCCR1B = _BV(CS12) | _BV(CS10);
TCNT1 = 0x573F; //6S中断一次
TIMSK = _BV(TOIE1);
Flag_1M = OFF;
}
//****************************************
void Close_Fix_Min()
{
TCCR1B = 0;
TCNT1 = 0;
TIMSK &= ~_BV(TOIE1);
Flag_1M = OFF;
}
//********显示压力*********
void Disp_Press(uchar a,uchar b )
{
uchar i;
for(i=0;i<8;i++)
{
Press_Mid[i] = PRESS_RX[4+i];
}
Press_Data = strtod(Press_Mid,0);
WWW = Press_Data * 10;
WWW = WWW / 10;
WWW1 = 0;
// utoa( WWW,Point_Date,10);
if( Press_Data<1 )
{
Press_Data *= 1000;
WWW1 = Press_Data;
Return_Point();
Move_Point(a,b+6 );
Disp_Date(Point_Kong,2);
Send_byte(0x6d);
Send_byte(0x54);
}
else
{
Return_Point();
Move_Point(a,b+6);
Disp_Date(Point_Kong,2);
Send_byte(0x20);
Send_byte(0x54);
}
dtostrf(Press_Data,4,2,Point_Date);
i = 4;
Return_Point();
Move_Point(a,b);
Disp_Date(Point_Kong,i);
Return_Point();
Move_Point(a,b);
Disp_Date(Point_Date,i);
}
//*******************************************
void Write_Flow(uchar *p,uchar len)
{
Sc16_Tx_A_OPEN;
Fa_A( p,len);
}
//***********写流量 Rat***********
void Write_Flow_Rat(void)
{
uchar a;
Flow_Ret = ( Fix_Flow * 64000)/100;
utoa(Flow_Ret,Flow_MID,10);
a = strnlen(Flow_MID,10);
Sc16_Tx_A_OPEN;
Sc16_Tx_A_byte('A');
Fa_A( Flow_MID,a);
Fa_A( W_Enter,1 );
}
//***********写流量 Rat=0*********
void Write_Flow_Rat_0(void)
{
uchar a;
Flow_Ret = 0;
utoa(Flow_Ret,Flow_MID,10);
a = strnlen(Flow_MID,10);
Sc16_Tx_A_OPEN;
Sc16_Tx_A_byte('A');
Fa_A( Flow_MID,a);
Fa_A( W_Enter,1 );
}
//***********写流量 P************
void Write_Flow_P(void)
{
uchar a;
utoa(Fix_P,W_PD_MID,10);
a = strnlen(W_PD_MID,10);
Sc16_Tx_A_OPEN;
Fa_A( W_P_21,5);
Fa_A( W_PD_MID,a);
Fa_A( W_Enter,1 );
}
//***********写流量 D************
void Write_Flow_D(void)
{
uchar a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -