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

📄 boot.c

📁 把原先的快走丝设备改进
💻 C
字号:
#include".\XQG.h"
#include".\Disp.h"
#include".\Key.h"
#include".\EEPROM.h"
//-------------------------------------------
unsigned char gvc_counter_i,gvc_counter_j,gvc_counter_h;

unsigned char gvc_menu_point;		//the point of the menu. save the menu menber
unsigned char gvc_pulse_wide_point;
unsigned char gvc_pulse_gap_point;
unsigned char gvc_current_point;
unsigned char gvc_speed_point;
unsigned char gvc_voltage_point;

unsigned char gvc_load_flg;
unsigned char gvc_tmp;
bit gvb_speed_flg;
bit gvb_speed_time_flg=0;
bit gvb_dop=0;
//--------------------------------------------
bit gvb_key_get_flg;		//the flag mark the mcu get the valid key

unsigned char code gcc_default_value[8][8]={
										{0,2,0,3,0,10,0,0},
										{1,2,0,3,0,10,0,0},
										{2,2,0,3,0,10,0,0},
										{3,2,0,3,0,10,0,0},
										{4,2,0,3,0,10,0,0},
										{5,2,0,3,0,10,0,0},
										{6,2,0,3,0,10,0,0},
										{7,2,0,3,0,10,0,0}
};
		
unsigned char code gcc_pulse_wide[7]={2,4,8,16,32,64,128};
//unsigned char code gcc_pulse_wide[7]={15,3,6,12,24,48,96};
unsigned char code gcc_pulse_gap[6]={9,4,5,6,7,8};
unsigned char code gcc_speed[7]={10,15,20,25,30,40,50};
//unsigned char code gcc_speed[7]={5,10,15,20,25,30,50};
unsigned int code gcc_menu_addr[8]={SECTOR1,SECTOR2,SECTOR3,SECTOR4,SECTOR5,SECTOR6,SECTOR7,SECTOR8};


extern unsigned int	gvi_com_counter;
extern bit gvb_time_ok_flg;
void main()
{

	
	TMOD=0X25;		//定时器1工作方式1
	SCON=0X50;		//串口方式1,8位UART ,波特率可变
	PCON=0x00;
	TH1=0xfa;		//波特率=振荡器频率/[32*12(256-TH1)]
	TL1=0xfa;		//9600=11059200/[32*12*(256-TH1)]   22118400
	T2CON=T2CON_VALUE;
	RCAP2H=RCAP2H_VALUE;
	RCAP2L=RCAP2L_VALUE;
	IE=0X00;			//关中断
	IT0=SET;			
	IT1=SET;		
	EX1=CLEAR;	
	EX0=CLEAR;
	ES=CLEAR;				
	TR1=CLEAR;	
	TR2=SET;
	TR0=CLEAR;
	ET2=SET; 	
	ET0=CLEAR;
	ET1=CLEAR;
	WDT_CONTR=0x3b;
	EA=SET;	
	
	//---------------------------------------
	//------------------------------------------------
	
	gvc_load_flg=byte_read(EEPROM_MENU);
//	gvc_load_flg=0;
	if(gvc_load_flg==EEPROM_VALUE)
		{
			
			for(gvc_counter_h=0;gvc_counter_h<8;gvc_counter_h++)
				for(gvc_counter_j=0;gvc_counter_j<8;gvc_counter_j++)
					gvu_Menu_buffer[gvc_counter_h].gvc_arr[gvc_counter_j]=byte_read(gcc_menu_addr[gvc_counter_h]+gvc_counter_j);	
			
		}
	
	else
		{
			for(gvc_counter_h=0;gvc_counter_h<8;gvc_counter_h++)
				Sector_eraser(gcc_menu_addr[gvc_counter_h]);
			
			for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
				{
				for(gvc_counter_j=0;gvc_counter_j<8;gvc_counter_j++)
					{
						gvu_Menu_buffer[gvc_counter_i].gvc_arr[gvc_counter_j]=gcc_default_value[gvc_counter_i][gvc_counter_j];
						byte_write((gcc_menu_addr[gvc_counter_i]+gvc_counter_j), gcc_default_value[gvc_counter_i][gvc_counter_j]);
						//byte_write(gcc_menu_addr[gvc_counter_i]+gvc_counter_j,gcc_default_value[gvc_counter_i][gvc_counter_j]);

					}
				}
				gvc_tmp=1;
			
			Sector_eraser(EEPROM_MENU);
			byte_write(EEPROM_MENU, EEPROM_VALUE);
		}
	


		gvc_menu_point=0;
		#if 0
		for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
				{
			//	erasure_sector(gcc_menu_addr[gvc_counter_i]);
				for(gvc_counter_j=0;gvc_counter_j<8;gvc_counter_j++)
					{
						gvu_Menu_buffer[gvc_counter_i].gvc_arr[gvc_counter_j]=gcc_default_value[gvc_counter_i][gvc_counter_j];
					//	byte_write(gcc_menu_addr[gvc_counter_i]+gvc_counter_j, gcc_default_value[gvc_counter_i][gvc_counter_j]);

					}
				}
		#endif
#if 0
	for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
		{
			gvu_Menu_buffer[0].gvc_arr[gvc_counter_i]=byte_read(0x8000+gvc_counter_i);
			//gvu_Menu_buffer[0].gvc_arr[gvc_counter_i]=1;
		}
	
	Sector_eraser(0x8000);
	
	for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
		{
			byte_write(0x8000+gvc_counter_i, 3);
		}
#endif
	//-----------------------------------------------------
	gvc_menu_point=0;
	Fill_disp_buff(gvc_menu_point);
	
	
	


	//-------------------------------------------------
	while(1)
		{
		/*
			F_A=1;
			F_B=0;
			F_C=1;
		*/
			WDT_CONTR=0x3b;
//---------------------------------------------------------------
			if(gvb_key_scan_flg)
				{
					gvb_key_scan_flg=0;
					gvb_key_get_flg=Key_get();
					gvb_com_flg=Commad_Get();
				}

//---------------------------------------------------------------

			if(gvb_key_get_flg&&(!gvc_com_out))
			//if(gvb_key_get_flg)
				{
				//	gvb_com_flg=1;
					gvb_key_get_flg=0;
				//	VOLTAGE=!VOLTAGE;
					switch(gvc_key_out)
						{
							case KEY1_UP:
								
								Sector_eraser(gcc_menu_addr[gvc_menu_point]);
								
								for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
									{
										byte_write(gcc_menu_addr[gvc_menu_point]+gvc_counter_i, gvu_Menu_buffer[gvc_menu_point].gvc_arr[gvc_counter_i]);
									}
								
								gvc_menu_point++;				//add the menu
								if(gvc_menu_point>7)
									gvc_menu_point=0;
								
									//refresh the display
							
							break;

							case KEY1_DOWN:
								
								Sector_eraser(gcc_menu_addr[gvc_menu_point]);
								for(gvc_counter_i=0;gvc_counter_i<8;gvc_counter_i++)
									{
										byte_write(gcc_menu_addr[gvc_menu_point]+gvc_counter_i, gvu_Menu_buffer[gvc_menu_point].gvc_arr[gvc_counter_i]);
									}
								
								if(gvc_menu_point>0)
									gvc_menu_point-=1;
								else
									gvc_menu_point=7;
								

							break;
				//------------------------------------------------------------
							case KEY2_UP:
								
								gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value++;
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value>6)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value=0;
								gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide=
									gcc_pulse_wide[gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value];
								
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value==0)
									gvb_dop=0;
								else
									gvb_dop=1;
									
								
							break;

							case KEY2_DOWN:
								
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value>0)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value--;
								else
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value=6;
								gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide=
									gcc_pulse_wide[gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value];
								
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Wide_Value==0)
									gvb_dop=0;
								else
									gvb_dop=1;
								

							break;
				//-------------------------------------------------------------------
							case KEY3_UP:
								gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap++;
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap>9)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap=4;
								

							break;

							case KEY3_DOWN:
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap>4)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap--;
								else
									gvu_Menu_buffer[gvc_menu_point].menu.S_Pulse_Gap=9;

							break;
				//--------------------------------------------------------------------
							case KEY4_UP:
								gvu_Menu_buffer[gvc_menu_point].menu.S_Current++;
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Current>7)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Current=0;

							break;

							case KEY4_DOWN:
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Current>0)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Current--;
								else
									gvu_Menu_buffer[gvc_menu_point].menu.S_Current=7;

							break;
				//-------------------------------------------------------------------------
							case KEY5_UP:
								gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value++;
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value>6)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value=0;
								gvu_Menu_buffer[gvc_menu_point].menu.S_Speed=
									gcc_speed[gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value];

							break;

							case KEY5_DOWN:
								if(gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value>0)
									gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value--;
								else
									gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value=6;
								gvu_Menu_buffer[gvc_menu_point].menu.S_Speed=
									gcc_speed[gvu_Menu_buffer[gvc_menu_point].menu.S_Speed_Value];
							break;
				//---------------------------------------------------------------------------
							case KEY6_UP:
							case KEY6_DOWN:
								gvc_voltage_point=gvu_Menu_buffer[gvc_menu_point].menu.S_Voltage;
								if(gvc_voltage_point)
									gvc_voltage_point=0;
								else
									gvc_voltage_point=1;
								gvu_Menu_buffer[gvc_menu_point].menu.S_Voltage=gvc_voltage_point;
							

							break;

							default: break;

						}
					Fill_disp_buff(gvc_menu_point);
					if(!gvc_menu_point)
						{
							gvb_com_flg=1;
							gvb_time_ok_flg=1;
						}
					

				}


//----------------------------------------------------------------

			if(gvb_com_flg)
				{
					gvb_com_flg=0;
					Fill_disp_buff(gvc_com_out);
					
 					gvc_pulse_wide_point=gvu_Menu_buffer[gvc_com_out].menu.S_Pulse_Wide_Value;
					gvc_pulse_gap_point=gvu_Menu_buffer[gvc_com_out].menu.S_Pulse_Gap-3;
					gvc_current_point=gvu_Menu_buffer[gvc_com_out].menu.S_Current;
					gvc_speed_point=gvu_Menu_buffer[gvc_com_out].menu.S_Speed_Value+1;
					//gvc_speed_point=2;
		/*			
					if(gvc_speed_point&0x01)
						KS3=1;
					else
						KS3=0;
					
					gvc_speed_point>>=1;
					*/
					gvc_pulse_gap_point<<=2;
					gvc_pulse_wide_point<<=5;
					gvc_speed_point<<=1;
					P1=P1&0X03;
					P1|=(gvc_pulse_gap_point|gvc_pulse_wide_point);
					if(gvu_Menu_buffer[gvc_com_out].menu.S_Voltage)
						VOLTAGE=1;
					else
						VOLTAGE=0;
					//gvc_speed_point=~gvc_speed_point;
				
					//P2=P2&gvc_speed_point;
					if(gvc_speed_point&0x02)
						F_A=0;
					else
						F_A=1;
					if(gvc_speed_point&0x04)
						F_B=0;
					else
						F_B=1;
					if(gvc_speed_point&0x08)
						F_C=0;
					else
						F_C=1;
					//P2=P2|gvc_current_point;
					//P2=P2|gvc_speed_point;
					KS1=0;
					KS2=0;
					KS3=0;
					gvb_speed_flg=1;
					gvb_speed_time_flg=1;	
					
					
				}

			if(gvb_speed_flg&&gvb_time_ok_flg)
				{
					gvb_speed_flg=0;
					gvb_time_ok_flg=0;
					gvi_com_counter=0;
					/*
					if(gvc_current_point&0x01)
						KS3=1;
					else
						KS3=0;
					
					gvc_current_point>>=1;
					P1&=0xfc;
					P1|=gvc_current_point;
					*/
					
					if(gvc_speed_point&0x01)
						KS1=0;
					else
						KS1=1;
					if(gvc_speed_point&0x02)
						KS2=0;
					else
						KS2=1;
					if(gvc_speed_point&0x04)
						KS3=0;
					else
						KS3=1;
						
					
				}
				

		}

}

⌨️ 快捷键说明

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