📄 myprogdlg.cpp
字号:
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 + -