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

📄 main.c

📁 基于C51的通用人机界面程序
💻 C
字号:
#define _main_
#include "general.h"
#include "7219.h"
#include "key.h"
#include "com.h"
#include "state.h"
//#include "protocol.h"
//#include "data.h"
/*
/*Timer
#define F_OSC		11.0592
#define TIMER0BASE  2//ms
#define BASETIMER0  (65536-TIMER0BASE*1000*F_OSC/12)
*/
typedef struct	{
				uchar Index;
				uchar KeyUpState;uchar KeyDnState;uchar KeyCrState;uchar KeyEscState; 			
				void (*CurOper)(); 			
				} MenuTabStruct; 
/******************************************************************************************
状态索引表
*******************************************************************************************/
#define SIZE_OF_MENU	32
MenuTabStruct code StateTab[SIZE_OF_MENU]={ 		//State索引表
//   ^  v  e  q    Func  
//---Level 1--------------------------------------------------------------------
{ 0, 2, 1, 3, 0,(*Sev_State0)},				//1 	'算法1'
{ 1, 0, 2,13, 1,(*Sev_State1)},				//2 	'算法2'
{ 2, 1, 0, 7, 2,(*Sev_State2)}, 			//3 	'设置'
//---Level 2--------------------------------------------------------------------
{ 3, 3, 3, 3,  0,(*Sev_State3)},				//1-1 	'寻北中'
//------------------------------------------------------------------------------
{ 4, 4, 4, 8,  2,(*Sev_State4)},				//3-1 	'参数周期个数p '	(NULL)
{ 5, 7, 29,14, 2,(*Sev_State5)},				//3-2 	'参数仪器常数a '
{ 6, 6, 6, 10, 2,(*Sev_State6)},				//3-3 	'参数纬度wd'		(NULL)	
{ 7, 29,5, 21, 2,(*Sev_State7)},				//3-4 	'参数比例系数c'
//---Level 3---------------------------------------------------------------------
{ 8, 9, 9, 4, 4,(*Sev_State8)},						//3-1-1 	'设置参数p[1] '
{ 9, 8, 8, 4, 4,(*Sev_State9)},						//3-1-0 	'设置参数p[0] '
//--------------------------------
{ 10, 12, 11, 6, 6,(*Sev_State10)},					//3-3-3 	'设置参数wd[2]'
{ 11, 10, 12, 6, 6,(*Sev_State11)},					//3-3-2 	'设置参数wd[1]'
{ 12, 11, 10, 6, 6,(*Sev_State12)},					//3-3-1 	'设置参数wd[0]'
{ 13, 13, 13,13, 1,(*Sev_State13)},				//2-1 	'标定程序'
//--------------------------------
{ 14, 20, 15, 5, 5,(*Sev_State14)},					//3-2-6 	'设置参数a[6]'
{ 15, 14, 16, 5, 5,(*Sev_State15)},					//3-2-5 	'设置参数a[5]'
{ 16, 15, 17, 5, 5,(*Sev_State16)},					//3-2-4 	'设置参数a[4]'
{ 17, 16, 18, 5, 5,(*Sev_State17)},					//3-2-3 	'设置参数a[3]'
{ 18, 17, 19, 5, 5,(*Sev_State18)},					//3-2-2 	'设置参数a[2]'
{ 19, 18, 20, 5, 5,(*Sev_State19)},					//3-2-1 	'设置参数a[1]'
{ 20, 19, 14, 5, 5,(*Sev_State20)},					//3-2-0 	'设置参数a[0]'
//--------------------------------
{ 21, 24, 22, 7, 7,(*Sev_State21)},					//3-4-3 	'设置参数c[5]'
{ 22, 21, 23, 7, 7,(*Sev_State22)},					//3-4-2 	'设置参数c[4]'
{ 23, 22, 24, 7, 7,(*Sev_State23)},					//3-4-1 	'设置参数c[3]'
{ 24, 23, 21, 7, 7,(*Sev_State24)},					//3-4-0 	'设置参数c[2]'
//--------------------------------
{ 25, 28, 26, 29, 29,(*Sev_State25)},				//3-5-3 	'设置参数z[3]'
{ 26, 25, 27, 29, 29,(*Sev_State26)},				//3-5-2 	'设置参数z[2]'
{ 27, 26, 28, 29, 29,(*Sev_State27)},				//3-5-1 	'设置参数z[1]'
{ 28, 27, 25, 29, 29,(*Sev_State28)},				//3-5-0 	'设置参数z[0]'
//-------------------------------------------------------------------------------
{ 29, 5,  7,  25, 2,(*Sev_State29)},				//3-5	'参数中天位置z'(新增状态)
//--------------------------------------------------------------------------------
{ 30, 30, 30, 3,  0,(*Sev_State30)},				//1-2	'寻北结果界面'(新增状态)
//-------------------------------------------------------------------------------
{ 31, 31, 31, 0,  0,(*Sev_State31)}					//		'报错界面'




}; 

/***************************************************************************************************

***************************************************************************************************/
void (*Sev_Ptr)();
void init(void){
	ES=0;
	SPK=0;
	init_com();
	init_max7219();
	init_state();
	//init_154();
	//gboff();										    
	ES=1;
	
	
}
//void(*SoftReset)(); //软复位

void main(){
	uchar keyvalue;
	init();
	//Index=0;
	while(1){
	
	////////////////////////////////////////////////////////////////////////////
	//delay(1000);
	keyvalue=kbscan();
	//cls();
	//disp(keyvalue/10,9);
	//disp(keyvalue%10,10);
	//delay(1000);
	///////////////////////////////////////////////////////////////////////////
	switch(keyvalue){ 
	 	case BN_ENT:{ 
		 	Index=StateTab[Index].KeyCrState; 
			break; 
		} 
		case BN_PGUP:{ 
		 	Index=StateTab[Index].KeyUpState; 
			break; 
		}
 		case BN_PGDN:{ 
		 	Index=StateTab[Index].KeyDnState; 
			break; 
		}
		case BN_ESC: {
		 	Index=StateTab[Index].KeyEscState; 
			break; 
		} 
		default: 
			break; 
	}
 	Sev_Ptr=StateTab[Index].CurOper;
  	(*Sev_Ptr)(); 
	//cls();
	//disp(keyvalue/10,9);
	//disp(keyvalue%10,10);
	//delay(2000);
	
	}
		//SoftReset=0;
		//SoftReset();
}


⌨️ 快捷键说明

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