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

📄 master.c

📁 电气仪表资料
💻 C
字号:
 #include <comm.h>
 #include <lcd.h>
 #include <key.h>
 #include <master.h>
 
#define MAIN_MENU_PRC             0x00



#define status_view                    0x01
#define open_outdoor_set          0x02
#define close_outdoor_set         0x03
#define open_insidedoor_set       0x04
#define close_insidedoor_set      0x05
#define delete_record                  0x15
#define SETUP_CLOCK             0x07
#define control_door_time          0x08


#define buzzle_time   0x10
#define address_set   0x11
#define clock_set      0x12
#define data_rec     0x13
#define abnomity_data_rec     0x14
#define communication_set      0x16
#define control_mode_set        0x17


#define   SP_EXIT_SETUP            0XFF


///////////////////////////////////////////

 
struct     
{
  uchar up;
  uchar down;
  uchar win_idx;
  uchar menu_idx;
  uchar upbak;
  uchar downbak;
  uchar win_idxbak;
  uchar flag;
} window;



//globle var define
 uchar display_status; 
 uchar LCD_BUF[2][16];
 uchar process;


 volatile    uchar  led_status;
 volatile    uchar  di_back;
 volatile    uchar  key_save_port;
 volatile    uchar  key_press_flag,keyin_point, keyout_point,interrupt_request;
 volatile    uchar  key_buf[KEY_BUFF_MAX],keychar;

//**************************************************
//************** interrupt define*******************
//**************************************************

void Timer0_ISR (void) interrupt 1
{  
	TR0=1;
	TF0=0;
	TH0=(65536-22118)/256;
	TL0=(65536-22118)%256; 	
	out_led();
}
 
void Timer3_ISR (void) interrupt 14{                            //interval=5ms
	TMR3CN&=0X7F; 
	TMR3H=(65536-55295)/256;
	TMR3L=(65536-55295)%256;	
	Key_Scan();	
	
}

void out_led(void){	
	SELECT_LED1_PORT;
	EA= 0;
}


void Display_Menu(void){	
	uchar i;	
	for(i=0;i<2;i++){
		RESET_WATCHDOG;
		Print_Row_Rom(i,MenuMain[window.up+i]);
		}
	LCD_BUF[window.win_idx-window.up][0]=0X20;
	LCD_BUF[window.win_idx-window.up][1]=0X84;
	Refresh_LCD_Screen();
}

void Main_Menu_Display(void)
{   
	window.menu_idx=10;
       window.up=0;
	window.down=3;
	window.win_idx=0;
	Display_Menu();
	process=MAIN_MENU_PRC;
}

uchar  Setup_Process (void){	
	Main_Menu_Display();
	Key_Buffer_Clear();	
	while(1) { 
		RESET_WATCHDOG;
		if((interrupt_request&KEY_PRESS)!=0){			//if key press		
			keychar=Key_Get();		     
			switch (process)	{ 				
				case MAIN_MENU_PRC:					
				     Select_Main_Project();
				     break;	                
				case status_view:
			   	     
				     break;
				case control_door_time:				     
				     break;
				case buzzle_time:  				  
				     break;
				case address_set:    //地址设置 				 
				  
				     break;					
				case SETUP_CLOCK:				    
				     break;
				case communication_set:    //通信设置				 
				   
				     break;	
				case data_rec:    //事件记录			  
				     
				     break;
				case abnomity_data_rec:  //异常事件记录
				
				     break;
				case open_outdoor_set:  //开外门时间设置
				  
				     break;
				case close_outdoor_set://关外门时间设置
				 
				     break;
				case open_insidedoor_set://开内门时间设置
				     
				     break;
				case close_insidedoor_set://关内门时间设置
				    
				     break;
				case  delete_record:
					
					break;
				case control_mode_set:
					
					break;
				}
			}		   
	
		}
}
	

void Win_Shift_Up(void){
	if(window.win_idx>window.up) window.win_idx--;
	else if(window.win_idx==window.up)
	{
		if(window.up>0){window.up--;window.down--;window.win_idx--;}
		else if(window.up==0)
		{
			window.down=window.menu_idx-1;
			window.up=window.menu_idx-4;
			window.win_idx=window.menu_idx-1;
		}
	}
}
void Win_Shift_Down(void){
	if(window.win_idx<window.down) window.win_idx++;
	else if(window.win_idx==window.down)
	{
		if(window.down<(window.menu_idx-1)) 
			{window.up++;window.down++;window.win_idx++;}
		else if(window.down==window.menu_idx-1)
			{
			window.up=0;window.down=3;window.win_idx=0;
			}
	}
}
void Win_Shift_Up_2(void){
	if(window.win_idx==0)	{
		window.win_idx=2;
		}
	else{
		window.win_idx=0;
		}
	
	
}
void Win_Shift_Down_2(void){
	if(window.win_idx==0)	{
		window.win_idx=2;
		}
	else{
		window.win_idx=0;
		}
	
}
//主菜单选择
void Select_Main_Project(void){
	switch(keychar)
	{
	    case KEY_UP:
			Win_Shift_Up();
			Display_Menu();
			Refresh_LCD_Screen();
			break;
		case KEY_DOWN:
			Win_Shift_Down();
			Display_Menu();
			Refresh_LCD_Screen();
			break;
		case KEY_ENTER:
			switch(window.win_idx)
			{
				case 0:
					
					break;
				case 1:
					
					break;
				case 2:
						
					break;
				case 3:
								
					break;
				case 4:				
					
					break;
				case 5:
					
					break;
				case  6:
					
					break;
				case 7:
					                
					break;
				case 8:	
					
					break;
				case 9:
											   
					break;
				default:
					break;					 
			}
	        break;
	default:
	       break;	
	}
}

 







void Ini_Var(void){	
	led_status=0xff;	
	window.upbak=0;
	window.downbak=3;
	window.win_idxbak=0;
	window.up=0;
	window.down=1;	 
}






void Display_PownON_Screen(void){
	uchar i;
	for(i=0;i<4;i++) Print_Row_Rom(i,POWNON_SCREEN[i]);
	Refresh_LCD_Screen();
}

void config (void) {
 	uint n;	
	WDTCN = 0x07;	// Watchdog Timer Control Register
//	WDTCN = 0xDE;   // Disable WDT
//	WDTCN = 0xAD;
       WDTCN = 0xA5;
       WDTCN = 0xff;
	XBR0 = 0x05;	// XBAR0: Initial Reset Value
	XBR1 = 0;	// XBAR1: Initial Reset Value
	XBR2 = 0x44;	// XBAR2: Initial Reset Value
	P0MDOUT = 0x50; // Output configuration for P0 
	P1MDOUT = 0xeF; // Output configuration for P1 
	P2MDOUT = 0xFF; // Output configuration for P2 
	P3MDOUT = 0x3f; // Output configuration for P3 
	P1MDIN = 0xFF;  // Input configuration for P1
//----------------------------------------------------------------
// Oscillator Configuration
//----------------------------------------------------------------
	OSCXCN = 0x66;	// EXTERNAL Oscillator Control Register	
	for (n = 0; n < 10000; n++) RESET_WATCHDOG;            // wait for osc to start
	while ( (OSCXCN & 0x80) == 0 )RESET_WATCHDOG;        // wait for xtal to stabilize
	OSCICN = 0x08;	// Internal Oscillator Control Register
}

void Timer0_Init (int counts){
	CKCON|=0x8;
	TMOD|=0x1;    //16Bit
	TH0=(65536-counts)/256;
	TL0=(65536-counts)%256;
	IE|= 0x2; 
	TR0=1;
}

void Timer3_Init (int counts){
	TMR3CN=0x06;
	TMR3H=(65536-counts)/256;
	TMR3L=(65536-counts)%256;  
	EIE2|=0X01;  
}

void Cursor_Inc(uchar operation)
{//0-9
	if(operation=='+')
	{
	     if(LCD_BUF[window.up][window.down]<0x39) 
		 	LCD_BUF[window.up][window.down]++;
	    else   LCD_BUF[window.up][window.down]=0x30;
	}
	else if(operation=='-')
	{
		if(LCD_BUF[window.up][window.down]>0x30) 
			  LCD_BUF[window.up][window.down]--;
		else  LCD_BUF[window.up][window.down]=0x39;
	}
	
}



void main (void){
	config();  
	Ini_LCD();   
	Timer0_Init(22118);
	Timer3_Init(22118);
	Ini_Var();   
	Key_Initialize_Wait();  
	EA=1;	
	Display_PownON_Screen(); 
	Refresh_LCD_Screen(); 
	while(1){  
		RESET_WATCHDOG;
		if((interrupt_request&KEY_PRESS)!=0){			
		        
			keychar=Key_Get();		
			if(keychar==KEY_ENTER)  Setup_Process();
			}	
 	     
	}
}




⌨️ 快捷键说明

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