|
回复【楼主位】adolfshxq
-----------------------------------------------------------------------
楼主,看了你编写的工程代码(ourdev_438325.rar(文件大小:51K)),对照你给出的三菱PWM文件指令集发现你缺少了
关于LDI,OUT指令的转换。
今天特意在你的工程基础上添加了几行代码用来转换LDI,OUT指令。分享如下:
//by hebin 2011-3-1
//LDI 指令区
else if(inst[1]==0x34)//LD X(0~377)
{
str.Format(_T("LDI\tX%o"),inst[0]);
InstList.AddTail(str);
}
else if (inst[1]==0x35)//LD Y(0~377)
{
str.Format(_T("LDI\tY%o"),inst[0]);
InstList.AddTail(str);
}
else if (inst[1]<=0x3D&&inst[1]>=0x38)//LD M(0~1535)
{
str.Format(_T("LDI\tM%u"),(inst[1]-0x38)*0x100+inst[0]); //?????????????
InstList.AddTail(str);
}
else if (inst[1]<=0xAD&&inst[1]>=0xA8)//LD M(1536~3071)
{
str.Format(_T("LDI\tM%u"),(inst[1]-0xA8)*0x100+inst[0]+0x600); //?????????????
InstList.AddTail(str);
}
else if (inst[1]==0x3F)//LD M(8000~8255)
{
str.Format(_T("LDI\tM8%03u"),inst[0]);
InstList.AddTail(str);
}
else if (inst[1]<=0x33&&inst[1]>=0x30)//LD S(000~999)
{
str.Format(_T("LDI\tS%u"),(inst[1]-0x30)*0x100+inst[0]);
InstList.AddTail(str);
}
else if (inst[1]==0x36)//LD T(000~255)
{
str.Format(_T("LDI\tT%u"),inst[0]);
InstList.AddTail(str);
}
else if (inst[1]==0x3E)//LD C(000~255)
{
str.Format(_T("LDI\tC%u"),inst[0]);
InstList.AddTail(str);
}
//**********************************************
//end LDI by hebin 2011-3-1
//by hebin 2011-3-11
//补充OUT 指令
else if (inst[1]<=0xCD&&inst[1]>=0xC8)//OUT M(0~1535)
{
str.Format(_T("OUT\tM%u"),(inst[1]-0xC8)*0x100+inst[0]);
InstList.AddTail(str);
}
else if (inst[1]<=0xAD&&inst[1]>=0xA8)//OUT M(1536~3071)
{
str.Format(_T("OUT\tM%u"),(inst[1]-0xA8)*0x100+inst[0]+0x600);
InstList.AddTail(str);
}
else if (inst[1]==0x8F)//OUT M(8000~8255)
{
str.Format(_T("OUT\tM8%03u"),inst[0]);
InstList.AddTail(str);
}
else if (inst[1]<=0x83&&inst[1]>=0x80)//OUT S(000~999)
{
str.Format(_T("OUT\tS%u"),(inst[1]-0x80)*0x100+inst[0]);
InstList.AddTail(str);
}
//end 3-11
我简单测试了一下,挺好用,大家一起学习下,看看还有什么错误没。
另外,我对代码中有语句看的不是很明白
str.Format(_T("LDI\tM%u"),(inst[1]-0x38)*0x100+inst[0]);
谁能给我解释一下,什么意思啊? |
|