⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 this file for bank in keil
💻 C
字号:
#include "varheader.h"
#include "vardef.h"





 
void    DispHMS (unsigned  int   x,unsigned  int  y,unsigned  char *buffer)
{
	   unsigned  char   HalfData;
       unsigned  char   Cycle; 
		   
	   WriteIns(0x08);
        
       for (Cycle=0;Cycle<3;Cycle++)
	   {
	       HalfData=buffer[Cycle]&0xf0;
		   HalfData=_cror_(HalfData,4);
		   x+=PAGE1_TIME_INTERVAL;
           WriteData(x,y,HalfData+0x10,0X01); 
           HalfData=buffer[Cycle]&0x0f;
		   x+=PAGE1_TIME_INTERVAL;
           WriteData(x,y,HalfData+0x10,0X01);
		   if (Cycle <2)
		   {
			   x+=PAGE1_TIME_INTERVAL;
			   WriteData(x,y,CHAR_MAOH,0X01);
		   }
	   }
     
}  
void    DispYMD(unsigned  int   x,unsigned  int  y,unsigned  char *buffer) 
                                                                       //在显示扫描曲线的时候可能  
                                                                       //还用这个函数    
{                 
       unsigned  char   HalfData; 
	   unsigned  char  Cycle;
	   
	   WriteIns(0x08);
       WriteData(x,y,CHAR_2,0X01);
	   x+=PAGE1_TIME_INTERVAL;
       WriteData(x,y,CHAR_0,0X01);
       for (Cycle=0;Cycle<3;Cycle++)
	   {
	       HalfData=buffer[Cycle]&0xf0;
		   HalfData=_cror_(HalfData,4);
		   x+=PAGE1_TIME_INTERVAL;
           WriteData(x,y,HalfData+0x10,0X01); 
           HalfData=buffer[Cycle]&0x0f;
		   x+=PAGE1_TIME_INTERVAL;
           WriteData(x,y,HalfData+0x10,0X01);
		   if (Cycle <2)
		   {
			   x+=PAGE1_TIME_INTERVAL;
			   WriteData(x,y,CHAR_MINUS,0X01);
		   }
	   }
	
 
}
void    Page1ShowTime()
{
	 unsigned  char   Buffer[3];
	 unsigned  char    i;
	 for (i=0;i<3;i++)
	 {
		 Buffer[i] = ReadClock(REG_YEAR-i); 
	 }
     DispYMD( PAGE1_TIME_POS_X,PAGE1_TIME_POS_Y,&Buffer[0]);
	 Buffer[0] = ReadClock(REG_HOUR);
     Buffer[1] = ReadClock(REG_MIN);
     Buffer[2] = ReadClock(REG_SEC);
	 DispHMS( PAGE1_TIME_POS_X+35,PAGE1_TIME_POS_Y,&Buffer[0]);



}

//                                                                
//                                 X                              
//     ___________________________________________________________\
//     |                                                          / 
//     |
//     |
// Y   |
//     |
//     |
//     |
//     |
//    \|/

void   Page1(void)
{
           
    unsigned  char    xdata     Step;
	unsigned  int     xdata     AxisX;
	unsigned  int     xdata     AxisY;
	unsigned  char    xdata     ByteNum;
	unsigned  char    xdata     BitNum; 
	unsigned  char    xdata     Line;
	unsigned  char    xdata     Col;
	unsigned  char    xdata     Cycle;
	unsigned  char    xdata     Multiple;
    
   
    AxisX=PAGE1_START_POS_X;                 //起始的位置
    AxisY=PAGE1_START_POS_Y;
	                                             //分析方式
    WriteIns(0x07);
	WriteData(AxisX+23, AxisY+30,HZ_FEN,0X01);
	WriteData(AxisX+33, AxisY+30,HZ_XI,0X01);
	WriteData(AxisX+43, AxisY+30,HZ_FANG,0X01);
	WriteData(AxisX+53, AxisY+30,HZ_SHI,0X01);  
	
	WriteData(AxisX+10, AxisY+100,HZ_BUTTON,0X01);//定波长
    WriteData(AxisX+15, AxisY+100,HZ_DING,0X01);
	WriteData(AxisX+20, AxisY+100,HZ_BO,0X01);
	WriteData(AxisX+25, AxisY+100,HZ_CHANG,0X01);
   
    WriteData(AxisX+50, AxisY+100,HZ_JI,0x01);    //基线扫描
	WriteData(AxisX+55, AxisY+100,HZ_XIAN,0x01);
	WriteData(AxisX+60, AxisY+100,HZ_SAO,0x01); 
    WriteData(AxisX+65, AxisY+100,HZ_MIAO,0x01); 

    WriteData(AxisX+15, AxisY+170,HZ_JIAO,0x01);  //校准曲线
	WriteData(AxisX+20, AxisY+170,HZ_ZHUN,0x01);
	WriteData(AxisX+25, AxisY+170,HZ_QU,0x01); 
    WriteData(AxisX+30, AxisY+170,HZ_XIAN,0x01); 

    WriteData(AxisX+50, AxisY+170,HZ_BO,0x01);    //波长扫描  
	WriteData(AxisX+55, AxisY+170,HZ_CHANG,0x01);
	WriteData(AxisX+60, AxisY+170,HZ_SAO,0x01); 
    WriteData(AxisX+65, AxisY+170,HZ_MIAO,0x01); 
 
    WriteData(AxisX+15, AxisY+240,HZ_DONG,0x01);  //动力学
	WriteData(AxisX+20, AxisY+240,HZ_LI,0x01);
	WriteData(AxisX+25, AxisY+240,HZ_XUE,0x01);
 	 
    WriteData(AxisX+50, AxisY+240,HZ_SHU,0x01);   //数据库 
	WriteData(AxisX+55, AxisY+240,HZ_JU,0x01);
	WriteData(AxisX+60, AxisY+240,HZ_KU,0x01);

    WriteData(AxisX+15, AxisY+310,HZ_XI2,0x01);   //系统设置
	WriteData(AxisX+20, AxisY+310,HZ_TONG,0x01);
	WriteData(AxisX+25, AxisY+310,HZ_SHE,0x01); 
    WriteData(AxisX+30, AxisY+310,HZ_ZHI2,0x01); 
     
    DrawFrame(); 
   
} 

main()           
{
 unsigned  char  xdata i    ;
 unsigned  char  xdata Reg  ; 
 unsigned  char  xdata KeyValue;
 unsigned  int   xdata Col ; 
 unsigned  int   xdata Line ;
 unsigned  char  xdata IntNum ;
 unsigned  char  xdata ExitCode;
 unsigned  int   xdata ButtonPosX;
 unsigned  int   xdata ButtonPosY;
 unsigned  char  xdata SelectedMode;
 
  
  /*主要就是三个方面的内容一个是分频的系数,一个是键盘的方式,一个是总清的命令*/ 
  clear();
  EA=0;
  INIT_8279:
  {    
	  INS_8279=KB_DISP_MODE;
	  INS_8279=KB_CLK_DIV;
	  INS_8279=KB_CLEAR_ALL;
	  
	  do
	  {
		  KeyValue=INS_8279;
		  KeyValue&=0x80;
	  } while  ( KeyValue);
	  INS_8279=KB_READ_RAM; 
  }
  KeyValue=DATA_8279 ;              //CLEAR  DATA  Buffer  
  LCD_DISP_OFF;
  Page1();
  LCD_DISP_ON;
  SelectedMode=0;
  ButtonPosX=10;
  ButtonPosY=100;
  ExitCode =0;
  while(1)
  {
	   
      IntNum=ADDR_INT;
	  if(!(IntNum&0X80)) 
	  {
	      
      	  WriteClock(REG_CLOCK_B,CLOCK_FROZE);            /*首先将寄存器FROZE*/ 
		  Page1ShowTime();
          
          ReadClock(REG_CLOCK_C);
          WriteClock(REG_CLOCK_B,CLOCK_UNFROZE);
            
		  IntNum|=0X80; 
	  }   /*END  IF  BIT7*/
	  if (!(IntNum&0x40))                //表示有键盘中断
	  {
		  KeyValue=DATA_8279;
		  KeyValue&=0x3f;                //取得有效的数据位
		  switch (KeyValue)
          {
		     case  0x06:                 //press  enter     
				 {
                    ExitCode=1;
					break;
				 }
			  
		     case  0x05:                  // UP  ARROW
				 {
				      if (SelectedMode>1) //NOT the  most up 
					  {
					       ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
					       WriteIns(0x07);
					       ButtonPosY-=70;
					       WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
					       SelectedMode-=2;
					  }
				      break;
				 } 
             case  0x0d:                  // DOWN  ARROW
				 {
					 if (SelectedMode<5)   //NOT the  most  down
					 {
                       ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
					   WriteIns(0x07);
					   ButtonPosY+=70;
	                   WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
					   SelectedMode+=2;      
					 }
					 break;
				 } 
             case  0x15:                  // LEFT  ARROW
				 {
					 if (SelectedMode%2>0)//odd line 
					 {
                       ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
					   WriteIns(0x07);
					   ButtonPosX-=35;
	                   WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
					   SelectedMode--;      
					 }
					 break;
				 }   
             case  0x1d:                  // RIGHT  ARROW
				 {
				     
                 	 if (SelectedMode%2==0 && SelectedMode<6) //even line
					 {
                       ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
					   WriteIns(0x07);
					   ButtonPosX+=35;
	                   WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
					   SelectedMode++;       
					 }
					 break;
				 } 
          }
		  IntNum|=0x40; 
	  }
	  if    (ExitCode)  break;  
  }
  switch  (SelectedMode)
  {
      case  0x00:      //定波长
		  {
			 Page2(0x00); 
             break;
		  }
      case  0x01:      //基线扫描
		  {
			  break;
		  }
      case  0x02:      //校准曲线
		  {
			  break;
		  }
      case  0x03:      //波长扫描
		  {
			  break;
		  }
      case  0x04:      //动力学
		  {
			  break;
		  }
      case  0x05:      //数据库
		  {
			  break;
		  }
      case  0x06:      //系统设置
		  {
			  break;
		  }
  }
 
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -