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

📄 myprogdlg.cpp

📁 上位机软件 for avricp 根据功能设定熔丝
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			check[2]->SetCheck(1);
			check[3]->SetCheck(1);
			break;
		case 3:
			check[12]->SetCheck(0);
			check[0]->SetCheck(0);
			check[1]->SetCheck(0);
			check[2]->SetCheck(1);
			check[3]->SetCheck(1);
			break;
		case 4:
			check[12]->SetCheck(0);
			check[0]->SetCheck(1);
			check[1]->SetCheck(1);
			check[2]->SetCheck(0);
			check[3]->SetCheck(1);
			break;
		case 5:
			check[0]->SetCheck(0);
			check[1]->SetCheck(1);
			check[2]->SetCheck(0);
			check[3]->SetCheck(1);
			break;
		case 6:
			check[0]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(1);
			break;
		case 7:
			check[0]->SetCheck(0);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(1);
			break;
		case 8:
			check[0]->SetCheck(1);
			check[1]->SetCheck(1);
			check[2]->SetCheck(1);
			check[3]->SetCheck(0);
			break;
		case 9:
			check[0]->SetCheck(0);
			check[1]->SetCheck(1);
			check[2]->SetCheck(1);
			check[3]->SetCheck(0);
			break;
		case 10:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(1);
			check[3]->SetCheck(0);
			break;
		case 11:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(1);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		case 12:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		case 13:
			check[12]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		case 14:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(1);
			check[3]->SetCheck(0);
			break;
		case 15:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(1);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		case 16:
			//check[0]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		case 17:
			check[12]->SetCheck(1);
			check[1]->SetCheck(0);
			check[2]->SetCheck(0);
			check[3]->SetCheck(0);
			break;
		default:
			check[0]->SetCheck(0);
			check[1]->SetCheck(1);
			check[2]->SetCheck(1);
			check[3]->SetCheck(1);
			break;
			}
			/*		
			fuse2Combo->0("启动:BOD使能");
			fuse2Combo->1("启动:电源快速上升");
			fuse2Combo->2("启动:电源缓慢上升");
			fuse2Combo->3("启动:电源快速上升或BOD使能(外部RC或低频晶振)");
			fuse2Combo->4("启动:启动时频率已经稳定(外部低频晶振)");
			fuse2Combo->SetCurSel(2);
			*/		
			switch(fuse2Combo->GetCurSel())
			{
			case 0:
				if( fuse1Combo->GetCurSel() <= 8 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(1);
				}
				else if( fuse1Combo->GetCurSel() == 9 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(1);
				}
				else if( fuse1Combo->GetCurSel() <= 13 )
				{
					check[0]->SetCheck(1);
					check[5]->SetCheck(0);
					check[4]->SetCheck(1);
				}
				else 
				{
					check[0]->SetCheck(0);
					check[5]->SetCheck(1);
					check[4]->SetCheck(0);
				}
				break;
			case 1:
				if( fuse1Combo->GetCurSel() <= 8 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(0);
				}
				else if( fuse1Combo->GetCurSel() == 9 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(1);
				}
				else if( fuse1Combo->GetCurSel() <= 13 )
				{
					check[0]->SetCheck(1);
					check[5]->SetCheck(0);
					check[4]->SetCheck(0);
				}
				else 
				{
					check[0]->SetCheck(0);
					check[5]->SetCheck(0);
					check[4]->SetCheck(1);
				}
				break;
			case 2:
				if( fuse1Combo->GetCurSel() <= 8 )
				{
					check[5]->SetCheck(0);
					check[4]->SetCheck(1);
				}
				else if( fuse1Combo->GetCurSel() == 9 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(0);
				}
				else if( fuse1Combo->GetCurSel() <= 13 )
				{
					check[0]->SetCheck(0);
					check[5]->SetCheck(1);
					check[4]->SetCheck(1);
				}
				else 
				{
					check[0]->SetCheck(0);
					check[5]->SetCheck(0);
					check[4]->SetCheck(0);
				}
				break;
			case 3:
				if( fuse1Combo->GetCurSel() >= 5 && fuse1Combo->GetCurSel() <= 8 )
				{
					check[5]->SetCheck(0);
					check[4]->SetCheck(0);
				}
				else if( fuse1Combo->GetCurSel() == 9 )
				{
					check[5]->SetCheck(1);
					check[4]->SetCheck(1);
				}
				break;
			case 4:
				if( fuse1Combo->GetCurSel() == 9 )
				{
					check[5]->SetCheck(0);
					check[4]->SetCheck(1);
				}
				break;
			default:
				break;
			}
			/*		
			fuse3Combo->0("无BOD功能");
			fuse3Combo->1("BOD使能2.7V");
			fuse3Combo->2("BOD使能4.0V");
			fuse3Combo->SetCurSel(1);
			*/		
			switch(fuse3Combo->GetCurSel())
			{
			case 0:
				check[6]->SetCheck(0);
				break;
			case 1:
				check[7]->SetCheck(1);
				check[6]->SetCheck(1);
				break;
			case 2:
				check[7]->SetCheck(0);
				check[6]->SetCheck(1);
				break;
			default:
				break;
			}
			/*		
			fuse4Combo->0("BOOT块 1024 Words");
			fuse4Combo->1("BOOT块  512 Words");
			fuse4Combo->2("BOOT块  256 Words");
			fuse4Combo->3("BOOT块  128 Words");
			fuse4Combo->SetCurSel(0);
			
			*/
			switch(fuse4Combo->GetCurSel())
			{
			case 0:
				check[10]->SetCheck(1);
				check[9]->SetCheck(1);
				break;
			case 1:
				check[10]->SetCheck(1);
				check[9]->SetCheck(0);
				break;
			case 2:
				check[10]->SetCheck(0);
				check[9]->SetCheck(1);
				break;
			case 3:
				check[10]->SetCheck(0);
				check[9]->SetCheck(0);
				break;
			default:
				break;
			}
	}
	
}

//根据锁定位判断锁定状态
void CMYPROGDlg::GetLock()
{
	bitmap *p=avrp.device.getLockMap();
	if(p->ucCompatible == LockCompatibleIsAT89C51)
	{
		switch(avrp.device.LockBits & 0x07)
		{
		case 0:
			lock1Combo->SetCurSel(0);
			break;
		case 1:
			lock1Combo->SetCurSel(1);
			break;
		case 2:
			lockb[0 ]->SetCheck(1);
		case 3:
			lock1Combo->SetCurSel(2);
			break;
		case 4:
			//lockb[0 ]->SetCheck(1);
		case 5:
			lockb[1 ]->SetCheck(1);
		case 6:
			lockb[0 ]->SetCheck(1);
		case 7:
			lock1Combo->SetCurSel(3);
			break;
		default:
			lock1Combo->SetCurSel(0);
			break;
		}
		ResultLock();
	}
	if(p->ucCompatible == LockCompatibleIsAT90S1200)
	{
		switch(avrp.device.LockBits & 0x03)
		{
		case 3:
			lock1Combo->SetCurSel(0);
			break;
		case 2:
			lock1Combo->SetCurSel(1);
			break;
		case 1:
			lock1Combo->SetCurSel(3);
			break;
		case 0:
			lock1Combo->SetCurSel(2);
			break;
		default:
			break;
		}
	}
	if(p->ucCompatible == LockCompatibleIsATmeaga16)
	{
		switch(avrp.device.LockBits & 0x03)
		{
		case 3:
			lock1Combo->SetCurSel(0);
			break;
		case 2:
			lock1Combo->SetCurSel(1);
			break;
		case 1:
			lock1Combo->SetCurSel(3);
			break;
		case 0:
			lock1Combo->SetCurSel(2);
			break;
		default:
			break;
		}
		switch((avrp.device.LockBits>>2) & 0x03)
		{
		case 3:
			lock2Combo->SetCurSel(0);
			break;
		case 2:
			lock2Combo->SetCurSel(1);
			break;
		case 0:
			lock2Combo->SetCurSel(2);
			break;
		case 1:
			lock2Combo->SetCurSel(3);
			break;
		default:
			break;
		}
		switch((avrp.device.LockBits>>4) & 0x03)
		{
		case 3:
			lock3Combo->SetCurSel(0);
			break;
		case 2:
			lock3Combo->SetCurSel(1);
			break;
		case 0:
			lock3Combo->SetCurSel(2);
			break;
		case 1:
			lock3Combo->SetCurSel(3);
			break;
		default:
			break;
		}
	}
		
	}

//根据熔丝位判断熔丝功能
void CMYPROGDlg::GetFuse()
{
	/*
	0 ("外部时钟");
	1 ("内部RC振荡器,1MHz");
	2 ("内部RC振荡器,2MHz");
	3 ("内部RC振荡器,4MHz");
	4 ("内部RC振荡器,8MHz");
	5 ("外部RC振荡器,0-0.9MHz");
	6 ("外部RC振荡器,0.9MHz-3.0MHz");
	7 ("外部RC振荡器,3.0MHz-8.0MHz");
	8 ("外部RC振荡器,8.0MHz-12.0MHz");
	9 ("外部低频晶振(如:32.768KHz)");
	10("陶瓷谐振器,低频:0.4MHz-0.9MHz");
	11("陶瓷谐振器,中频:0.9MHz-3.0MHz");
	12("陶瓷谐振器,高频:3.0MHz-8.0MHz");
	13("陶瓷谐振器,高频:1.0MHz-16.0MHz");
	14("石英振荡器,低频:0.4MHz-0.9MHz(不适用)");
	15("石英振荡器,中频:0.9MHz-3.0MHz");
	16("石英振荡器,高频:3.0MHz-8.0MHz");
	17("石英振荡器,高频:1.0MHz-16.0MHz");
	fuse1Combo->SetCurSel(1);
	*/
	/*		
	fuse2Combo->AddString("启动:BOD使能");
	fuse2Combo->AddString("启动:电源快速上升");
	fuse2Combo->AddString("启动:电源缓慢上升");
	fuse2Combo->AddString("启动:电源快速上升或BOD使能(外部RC或低频晶振)");
	fuse2Combo->AddString("启动:启动时频率已经稳定(外部低频晶振)");
	fuse2Combo->SetCurSel(2);
	*/		
	
    bitmap	*p=avrp.device.getFuseMap();
	if(p->ucCompatible == FuseCompatibleIsATmeaga16)

	{
		if((avrp.device.FuseBits & 0x0f) <9)
		{
			switch(avrp.device.FuseBits & 0x0f)
			{
			case 0 :fuse1Combo->SetCurSel(0 );break; 
			case 1 :fuse1Combo->SetCurSel(1 );break; 
			case 2 :fuse1Combo->SetCurSel(2 );break; 
			case 3 :fuse1Combo->SetCurSel(3 );break; 
			case 4 :fuse1Combo->SetCurSel(4 );break; 
			case 5 :fuse1Combo->SetCurSel(5 );break; 
			case 6 :fuse1Combo->SetCurSel(6 );break; 
			case 7 :fuse1Combo->SetCurSel(7 );break; 
			case 8 :fuse1Combo->SetCurSel(8 );break; 
			default:
				break;
			}
			switch(((avrp.device.FuseBits>>4) & 0x03))
			{
			case 0 :fuse2Combo->SetCurSel(0 );break; 
			case 1 :fuse2Combo->SetCurSel(1 );break; 
			case 2 :fuse2Combo->SetCurSel(2 );break; 
			case 3 :
				if(5<=(avrp.device.FuseBits & 0x0f) )
					fuse1Combo->SetCurSel(3 );
				else fuse1Combo->SetCurSel(5 );
				break; 
			default:
				break;
			}
		}
		else if((avrp.device.FuseBits & 0x0f) == 9)
		{
			fuse1Combo->SetCurSel(9 );
			switch(((avrp.device.FuseBits>>4) & 0x03))
			{
			case 0 :fuse2Combo->SetCurSel(3 );break; 
			case 1 :fuse2Combo->SetCurSel(2 );break; 
			case 2 :fuse2Combo->SetCurSel(4 );break; 
			case 3 :fuse2Combo->SetCurSel(5 );break; 
			default:
				break;
			}
		}
		else
		{
			bool IsCrystal = false;
			switch(((avrp.device.FuseBits>>4) & 0x03))
			{
			case 0 :
				if(avrp.device.FuseBits & 0x01)
				{
					fuse2Combo->SetCurSel(2 );
					IsCrystal = false;
				}
				else 
				{
					fuse2Combo->SetCurSel(1 );
					IsCrystal = false;
				}
				break; 
			case 1 : 
				if(avrp.device.FuseBits & 0x01)
				{
					fuse2Combo->SetCurSel(0 );
					IsCrystal = true;
				}
				else 
				{
					fuse2Combo->SetCurSel(2 );
					IsCrystal = false;
				}
				break; 
			case 2 : 
				if(avrp.device.FuseBits & 0x01)
				{
					fuse2Combo->SetCurSel(1 );
					IsCrystal = true;
				}
				else 
				{
					fuse2Combo->SetCurSel(0 );
					IsCrystal = false;
				}
				break; 
			case 3 : 
				if(avrp.device.FuseBits & 0x01)
				{
					fuse2Combo->SetCurSel(2 );
					IsCrystal = true;
				}
				else 
				{
					fuse2Combo->SetCurSel(1 );
					IsCrystal = false;
				}
				break; 
			default:
				break;
			}
			switch(((avrp.device.FuseBits>>1) & 0x07))
			{
			case 5:
				if(IsCrystal)fuse1Combo->SetCurSel(14);
				else fuse1Combo->SetCurSel(10 );
			case 6:
				if(IsCrystal)fuse1Combo->SetCurSel(15 );
				else fuse1Combo->SetCurSel(11 );
			case 7:
				if(IsCrystal)
				{
					if(((avrp.device.FuseBits>>12) & 0x01))fuse1Combo->SetCurSel(16 );
					else fuse1Combo->SetCurSel(17 );
				}
				else 
				{
					if(((avrp.device.FuseBits>>12) & 0x01))fuse1Combo->SetCurSel(12 );
					else fuse1Combo->SetCurSel(13 );
				}
			default:break;
			}
		}
		
		/*		
		fuse2Combo->AddString("启动:BOD使能");
		fuse2Combo->AddString("启动:电源快速上升");
		fuse2Combo->AddString("启动:电源缓慢上升");
		fuse2Combo->AddString("启动:电源快速上升或BOD使能(外部RC或低频晶振)");
		fuse2Combo->AddString("启动:启动时频率已经稳定(外部低频晶振)");
		fuse2Combo->SetCurSel(2);
		*/		
		switch((avrp.device.FuseBits>>6) & 0x03)
		{
		case 0:fuse3Combo->SetCurSel(1 );break; 
		case 2:fuse3Combo->SetCurSel(2 );break; 
		case 1:fuse3Combo->SetCurSel(0 );break; 
		case 3:fuse3Combo->SetCurSel(0 );break; 
		default:
			break;
		}
		/*
		fuse3Combo->AddString("无BOD功能");
		fuse3Combo->AddString("BOD使能2.7V");
		fuse3Combo->AddString("BOD使能4.0V");
		fuse3Combo->SetCurSel(1);
		*/		
		switch((avrp.device.FuseBits>>9) & 0x03)
		{
		case 0:fuse4Combo->SetCurSel(0 );break; 
		case 1:fuse4Combo->SetCurSel(1 );break; 
		case 2:fuse4Combo->SetCurSel(2 );break; 
		case 3:fuse4Combo->SetCurSel(3 );break; 
		default:
			break;
		}
		/*
		fuse4Combo->AddString("BOOT块 1024 Words");
		fuse4Combo->AddString("BOOT块  512 Words");
		fuse4Combo->AddString("BOOT块  256 Words");
		fuse4Combo->AddString("BOOT块  128 Words");
		fuse4Combo->SetCurSel(0);
		
		*/
	}
	
}



void CMYPROGDlg::OnCheckL0(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL1(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL2(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL3(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL4(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL5(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL6(){ResultLock();GetLock();}  
void CMYPROGDlg::OnCheckL7(){ResultLock();GetLock();}  

void CMYPROGDlg::OnSelchangeComboLock1() {SetLock();ResultLock();}
void CMYPROGDlg::OnSelchangeComboLock2() {SetLock();ResultLock();}
void CMYPROGDlg::OnSelchangeComboLock3() {SetLock();ResultLock();}

//熔丝位更改后,计算熔丝数据,更改功能
void CMYPROGDlg::OnCheck0(){ResultFuse();GetFuse();} 
void CMYPROGDlg::OnCheck1(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck2(){ResultFuse();GetFuse();}

⌨️ 快捷键说明

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