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

📄 psmain.cpp

📁 与i2c_24c5.9.22.rar和shengfangagsi5.9.22.rar一起工作的AT24CXX的驱动翻译源程序
💻 CPP
字号:
//SIMDAT+SIMSTEP

//plf open file to get .hex\strfilv\eeprom\-+
//run .hex opcode
//spp:intr;;call;;ret

//1.MainFrm.cpp:
//1)Oncreat:settimer;
//2)OnTimer:KillTimer;dat2simrun;dispval;
//PeekMessage;//有消息在等待吗?;
//TranslateMessage; //翻译消息;PostMessage
//brk route//step disasm disp//step stack disp
//disp filv---simdatval//step val//filv val modify
//ly0,1 for system
//ly2...for filv simdat disp
//3)WindowProc:SetTimer
//2....View.cpp:
//1)call getkch:sim function by kwyboard;
//2)call getBSTEP:for modify val;;;brk step
//3)OnChar:simulate with keyboard

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

//3.psmain.cpp
//1)dat2simrun:siminit;simmain
//2)hex2dat:call plfopen;read *.eem;etc;output *dis.asm
//3)disasmpro(int idis):get data from *.hex;run dath.m.l.opcode
//4)plfopen:open *.plf(from hex2dat());;simdatdsp(get filv[]---name)
//psrun.plf====rundatdsp:brk0,1,2,BSTEP,BASTEP,BCYCLE,ACYCLE
//psrunXXXX.plf====simXXXXdatdsp:CPPPC,simdatstr and filv val
//5)include all-dvc.cpp
//6)getfilvdat()::for simdatval;;simdatstr;;simdatcnt
//7)getpsrundat()::for rundatval

//4.pssim.cpp 
//1)gettmr0;
//2)gettmr1;
//3)gettmr2;
//4)getintr;
//5)getadcc
//6)getBSTEP:+-BSTEP...+-filv[]...//brk0,1,2:::kch=asdFGHzxCVbNM
/////////, valset Bpc==,f0==,f1==,f2!=,Rf0x,dFstr
/////////c v valsetpt 
/////////n m valsetval
/////////a b0/s b1/d b2/f bf0/g bf1/h bf2
/////////Z:CC BC BS BA X:BA BS BC CC
//7)runinidisp:for rundatdisp ini;;;rundatstr[]=""
//psval.h====#define ly0...,rundatcnt,rundatstr,rundatval,strrunDSP;
//#define simdatcnt,simdatstr,simdatval,strsimDSP;
/////*****/////*****/////*****/////*****/////*****
//8)char * dspsimdatval(char ival);

//5.simdat.cpp 
//1)siminidisp: filv[]:simdatstr[]=""
//simval.h====only for XXXX sim

//6.simstep.cpp
//1)siminit:hex2dat();
//2)simmain:breakpc;disasmpro(pc);gettmr0;etc
//3)dspval:_itoa(filv[modev],str,10);
//4)getkch:simulate with keyboard
//5)getcode:simulate display

//7.ps18dis.cpp
//1)disasmpro(pc)
//2)brkpc....1...2...3

//11.simds1302.cpp;
//12.simeeprom.cpp;
//13.sim74595.cpp;
//14.sim74165.cpp
//15.simht1621.cpp
//16.sim24cxx1.cpp

//include all-dvc.cpp
#include "f:\zmz\psmain\pssim.cpp"
#include "f:\zmz\psmain\psdis.cpp"
#include "f:\zmz\psmain\simds1302.cpp"
#include "f:\zmz\psmain\simeeprom.cpp"
//#include "f:\zmz\psmain\sim74595.cpp"
#include "f:\zmz\psmain\sim74165.cpp"
#include "f:\zmz\psmain\sim24cxx1.cpp"
#include "f:\zmz\psmain\simht1621.cpp"
//---------dat2simrun
//---------dat2simrun
//---------dat2simrun
//---------dat2simrun
void dat2simrun(void)
{
	siminit();

	simmain();
}
//---------hex2dat
//---------hex2dat
//---------hex2dat
//---------hex2dat
void hex2dat(void)
{	
	int orgx=0;
	char ccc[47];
	int i,j;
	char cnt;
	int  dat;
	int  addr,addrold;
	char ln1[100];
	char ln2[100];
	char lnst,lnend;
	char k;
	CFile destFile;
	CFile myFile;
	
	for(i=0;i<30;i++)
	{
		lyxx[i]=ly0+i*15;
	}
								strspold[0]=0x20;
								strspold[1]=0x20;
								strspold[2]=0x20;
								strspold[3]=0x0;
								strsp111[0]='=';
								strsp111[1]=0x20;
								strsp111[2]=0x20;
								strsp111[3]=0x0;

	siminidisp();
	runinidisp();

	strcpy(ln1,m_fName);
	i=strlen(ln1);
	if(!i)
	{
		strcpy(ln2,"psrun.plf");
	}
	strcpy(ln1,plfopen(ln2));
	if(fileerr)
	{
		return;
	}
	
	runinidisp();

	strcpy(fat24xx,ln1);
	i=strlen(fat24xx);
	fat24xx[--i]='x';
	fat24xx[--i]='4';
	fat24xx[--i]='2';
	rdat24xx();

	strcpy(ln2,ln1);
	i=strlen(ln2);
	ln2[--i]='d';
	ln2[--i]='x';
	ln2[--i]='t';
	subfFile.Open(ln2, CFile::modeWrite);
	if(subfFile==-1)
	{
		subfFile.Open(ln2, CFile::modeCreate);
		if(subfFile==-1)
		{
			fileerr=1;
			strcpy(strCFile,"subfFile Create error!");
			return;
		}
		subfFile.Close();
		subfFile.Open(ln2, CFile::modeWrite);
		if(subfFile==-1)
		{
			fileerr=1;
			strcpy(strCFile,"subfFile Write error!");
			return;
		}
	}
	
	strcpy(frtxt,ln1);
	i=strlen(frtxt);
	frtxt[++i]=0;
	frtxt[--i]='t';
	frtxt[--i]='x';
	frtxt[--i]='t';
	frtxt[--i]='.';
	frtxt[--i]='r';
	rtxtFile.Open(frtxt, CFile::modeCreate);
	if(rtxtFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"frtxtFile Create error!");
		return;
	}
	rtxtFile.Close();
	
	strcpy(feeprom,ln1);
	i=strlen(feeprom);
	feeprom[--i]='m';
	feeprom[--i]='e';
	feeprom[--i]='e';
	rdeeprom();

	strcpy(fds1302,ln1);
	i=strlen(fds1302);
	fds1302[--i]='m';
	fds1302[--i]='s';
	fds1302[--i]='d';
	rdds1302();
	
	strcpy(ln2,ln1);
	i=strlen(ln2);
	ln2[++i]=0;
	ln2[--i]='m';
	ln2[--i]='s';
	ln2[--i]='a';
	ln2[--i]='.';
	ln2[--i]='d';
	myFile.Open(ln1, CFile::modeReadWrite);
	if(myFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"hexFile Open error!");
		return;
	}
	destFile.Open(ln2, CFile::modeCreate);
	if(destFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"disFile Create error!");
		return;
	}
	destFile.Close();
	destFile.Open(ln2, CFile::modeWrite);
	if(destFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"disFile Wreate error!");
		return;
	}
	
	for(i=0;i<10000;i++)
	{
		datx[i]=0;
		dath[i]=0xFF;
	}
	BOOL CCCC=TRUE;
	ln1[00]=0;
	ln2[00]=0;
	lnst=100;
	lnend=0;
	while(CCCC)
	{
		if(addr>=0xef8)
		{
			addr=addr;
		}
		for(i=0;i<47;i++)
		{
			ccc[i]=0;
		}
		myFile.Read(ccc,46);//10);
		i=strlen(ccc);
		j=46;
		if(i<46)
		{
			CCCC=FALSE;
			if(i>0)
			{
				j=i;
			}
		}
		strcat(ln1,ccc);
		j=strlen(ln1);
		lnst=127;	
		for(i=0;i<j;i++)
		{
			if(ln1[i]==':')
			{
				lnst=i;
			}
			else if((ln1[i]==10)||(ln1[i]==13))
			{
				lnend=i;
				if(lnend>lnst)
				{
					cnt=0;
					for(k=0;k<2;k++)
					{
						lnst++;
						if(ln1[lnst]>=0x61)
						{
							cnt=cnt*16+ln1[lnst]-0x57;
						}
						else if(ln1[lnst]>=0x41)
						{
							cnt=cnt*16+ln1[lnst]-0x37;
						}
						else
						{
							cnt=cnt*16+ln1[lnst]-0x30;
						}
					}
					if(cnt==0)
					{
						CCCC=FALSE;
						break;
					}
					addrold=addr;
					addr=0;
					for(k=0;k<4;k++)
					{
						lnst++;
						if(ln1[lnst]>=0x61)
						{
							addr=addr*16+ln1[lnst]-0x57;
						}
						else if(ln1[lnst]>=0x41)
						{
							addr=addr*16+ln1[lnst]-0x37;
						}
						else
						{
							addr=addr*16+ln1[lnst]-0x30;
						}
					}
					addr/=2;
					if(addrold>addr)
					{
						CCCC=FALSE;
						break;
					}
					cnt/=2;
					lnst+=4;
					while(cnt--)
					{
						//dat=0;
						lnst++;
						if(ln1[lnst]>=0x61)
						{
							dath[addr]=ln1[lnst]-0x57;
						}
						else if(ln1[lnst]>=0x41)
						{
							dath[addr]=ln1[lnst]-0x37;
						}
						else
						{
							dath[addr]=ln1[lnst]-0x30;
						}
						lnst++;
						if(ln1[lnst]>=0x61)
						{
							datm[addr]=ln1[lnst]-0x57;
						}
						if(ln1[lnst]>=0x40)
						{
							datm[addr]=ln1[lnst]-0x37;
						}
						else
						{
							datm[addr]=ln1[lnst]-0x30;
						}
						lnst-=4;
						for(k=0;k<2;k++)
						{
							if(ln1[++lnst]>=0X61)
							{
								datl[addr]=datl[addr]*16+ln1[lnst]-0X57;
							}
							else if(ln1[lnst]>=0x40)
							{
								datl[addr]=datl[addr]*16+ln1[lnst]-0x37;
							}
							else
							{
								datl[addr]=datl[addr]*16+ln1[lnst]-0x30;
							}
						}
						//datl[addr]=dat;
						datx[addr]|=1;
						if(dath[addr]==2)
						{
							datx[(datm[addr]&7)*256+datl[addr]]|=0x80;
						}	
						lnst+=4;
						addr++;  
						addrold=addr;
					}
					k=0;
					for(i=lnst-1;i<j;i++)
					{
						ln1[k++]=ln1[i];
					}
					ln1[k]=0;
					lnst=127;
					j=k;
					i=0;
				}
			}
		}
	}
	myFile.Close();
	simrun=FALSE;
	strcpy(ccc,"		org 0x0");
	j=strlen(ccc);
	ccc[j++]=13;
	ccc[j++]=10;
	ccc[j]=0;
	destFile.Write(ccc,j);
	for(i=0;i<addrold;i++)
	{
		if(datx[i])
		{
			if(orgx!=i)
			{
				strcpy(ccc,"		org 0x"); 
				strcat(ccc,_itoa(i,ln1,16));
				j=strlen(ccc);
				ccc[j++]=13;
				ccc[j++]=10;
				ccc[j]=0;
				destFile.Write(ccc,j);
			}
			orgx=i+1;	

			if((datx[i]&0x80))
			{
				strcpy(ln2,"x");
				strcat(ln2,_itoa(i,ln1,16));
			}
			else 
			{
				ln2[0]=0;				
			}
			j=strlen(ln2);
			for(;j<8;j++)
			{
				ln2[j]=' ';
			}
			ln2[j]=0;
			strcpy(datstr[i],disasmpro(i));
			strcat(ln2,datstr[i]);//disasm16m(i));
			j=strlen(ln2);
			ln2[j++]=13;
			ln2[j++]=10;
			ln2[j]=0;
			destFile.Write(ln2,j);
		}	
	}
	strcpy(ln2,"	END");
	j=strlen(ln2);
	ln2[j++]=13;
	ln2[j++]=10;
	ln2[j]=0;
	destFile.Write(ln2,j);

	destFile.Close();
}
//---------char * plfopen(char fln[100])
//---------char * plfopen(char fln[100])
//---------char * plfopen(char fln[100])
//---------char * plfopen(char fln[100])
char * plfopen(char fln[100])
{//get fin	
	int orgx=0;
	char ccc[47];
	int i,j;
	int cnt;
	int  addr;
	char ln1[100];
	char ln2[100];
	char ln3[100];
	char ln4[100];
	char fin[100];
	char lnst,lnend;
	char k;
	BOOL CCCC=TRUE;
	CFile myFile;
	strcpy(psrunFstr,fln);
	myFile.Open(psrunFstr, CFile::modeReadWrite);
	if(myFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"psrunFile Open error!");
		ln1[0]=0;
		return ln1;
	}
	lnst=100;
	lnend=0;
	addr=0;
	ln1[0]=0;
	while(CCCC)
	{
		if(addr>=2080)
		{
			addr=addr;
		}
		for(i=0;i<47;i++)
		{
			ccc[i]=0;
		}
		myFile.Read(ccc,46);//10);
		i=strlen(ccc);
		j=46;
		if(i<46)
		{
			CCCC=FALSE;
			if(i>0)
			{
				j=i;
			}
		}
		strcat(ln1,ccc);
		j=strlen(ln1);
		lnst=0;	
		for(i=0;i<j;i++)
		{
			if((ln1[i]==13)||(ln1[i]==10)||(ln1[i]==0))
			{
				for(;1;)
				{
					if((ln1[lnst]>=48)||(ln1[lnst]=='.'))
					{
							ln2[lnst]=ln1[lnst++];
					}
					else
					{
						break;
					}
				}
				ln2[lnst]=0;
				if(!strlen(ln2))
				{
					CCCC=FALSE;
					break;
				}		
				if(addr==0)
				{
					strcpy(fin,ln2);					
					addr++;
				}
				else if(addr==1)
				{
					strcpy(ln3,ln2);
					addr++;
				}	
				else if(addr==2)
				{
					strcpy(ln4,ln2);
					addr=1;
					cnt=0;
					k=strlen(ln4);
					for(i=2;i<k;i++)
					{
						if(ln4[i]>=0x61)
						{
							cnt=cnt*16+ln4[i]-0x57;
						}
						else if(ln4[i]>64)
						{
							cnt=cnt*16+ln4[i]-55;
						}
						else
						{
							cnt=cnt*16+ln4[i]-48;
						}
					}
					getpsrundat(ln3,cnt);
				}	
				for(;lnst<j;)
				{
					if(ln1[lnst++]>=48)
					{
						break;
					}
				}
				lnst--;
				for(k=0;lnst<j;)
				{
					ln1[k++]=ln1[lnst++];
				}
				j=k;
				ln1[j]=0;
				lnst=0;
				i=0;
			}
		}
	}
	myFile.Close();
	strcpy(psrunFln0,fin);
	i=strlen(psrunFln0);
	psrunFln0[i++]=13;
	psrunFln0[i++]=10;
	psrunFln0[i]=0;	
	myFile.Open(fin, CFile::modeReadWrite);
	if(myFile==-1)
	{
		fileerr=1;
		strcpy(strCFile,"plfFile Open error!");
		ln1[0]=0;
		return ln1;
	}
	lnst=100;
	lnend=0;
	addr=0;
	ln1[0]=0;
	CCCC=TRUE;
	while(CCCC)
	{
		if(addr>=2080)
		{
			addr=addr;
		}
		for(i=0;i<47;i++)
		{
			ccc[i]=0;
		}
		myFile.Read(ccc,46);//10);
		i=strlen(ccc);
		j=46;
		if(i<46)
		{
			CCCC=FALSE;
			if(i>0)
			{
				j=i;
			}
		}
		strcat(ln1,ccc);
		j=strlen(ln1);
		lnst=0;	
		for(i=0;i<j;i++)
		{
			//if((ln1[i]==13)||(ln1[i]==10)||(ln1[i]==0x20)||(!ln1[i]))
			if((ln1[i]<48)&&(ln1[i]!='.'))
			{
				for(;1;)
				{
					if((ln1[lnst]>=48)||(ln1[lnst]=='.'))
					{
							ln2[lnst]=ln1[lnst++];
					}
					else
					{
						break;
					}
				}
 			ln2[lnst]=0;
			if(strlen(ln2))
			{
				if(addr==0)
				{
					strcpy(fin,ln2);					
					addr++;
				}
				else if(addr==1)
				{
					strcpy(ln3,ln2);
					addr++;
				}	
				else if(addr==2)
				{
					strcpy(ln3,ln2);
					addr++;
				}	
				else if(addr==3)
				{
					strcpy(ln4,ln2);
					addr=2;
					cnt=0;
					k=strlen(ln4);
					for(i=2;i<k;i++)
					{
						if(ln4[i]>=0x61)
						{
							cnt=cnt*16+ln4[i]-0x57;
						}
						else if(ln4[i]>64)
						{
							cnt=cnt*16+ln4[i]-55;
						}
						else
						{
							cnt=cnt*16+ln4[i]-48;
						}
					}
					getfilvdat(ln3,cnt);
				}
			}	
				while(lnst<j)
				{
					if(ln1[lnst++]>=48)
					{
						break;
					}
				}
				if(lnst>=j)
				{
					ln1[0]=0;
					break;
				}
				lnst--;
				for(k=0;lnst<j;)
				{
					ln1[k++]=ln1[lnst++];
				}
				j=k;
				ln1[j]=0;
				i=0;
				lnst=0;
			}
		}
	}
	myFile.Close();

//	LPCTSTR lpszString;
//	lpszString=fin;
	CWnd* m_pMainWnd=AfxGetMainWnd();       // main window (usually same AfxGetApp()->m_pMainWnd)
	m_pMainWnd->SetWindowText(fin);//lpszString);

	return fin;
}
//getfilvdat(ln3,cnt);
//getfilvdat(ln3,cnt);
//getfilvdat(ln3,cnt);
//getfilvdat(ln3,cnt);
void getfilvdat(char ln3[100],int cnt)
{
	char i,j;
	if(!strcmp(ln3,"CPPPC"))
	{
		CPPPC=cnt;
	}
	else
	{
		j=0;
//////////////////////////////same access filv		
			switch(cnt)
			{
				case 0x101:
				case 0x181:
				case 0x106:
				case 0x186:
				{
					cnt&=0xff;
					break;
				}
				case 0x82:
				case 0x102:
				case 0x182:
				case 0x83:
				case 0x103:
				case 0x183:
				case 0x84:
				case 0x104:
				case 0x184:
				case 0x8A:
				case 0x10A:
				case 0x18A:
				case 0x8B:
				case 0x10B:
				case 0x18B:
				{
					cnt&=0x7f;
					break;
				}
				default:
				{
					break;
				}
			}	
			if((cnt&0x7f)>0x6f)
			{
				cnt&=0x7f;
			}
//////////////////////////////same access filv				
		for(i=0;i<simdatcnt;i++)
		{
			if(!strcmp(ln3,simdatstr[i]))
			{
				j=1;
				simdatval[i]=cnt;
			}
		}
		if(!j)
		{
			strcpy(simdatstr[simdatcnt],ln3);
			simdatval[simdatcnt++]=cnt;
		}
	}
}
//getpsrundat(ln3,cnt);
//getpsrundat(ln3,cnt);
//getpsrundat(ln3,cnt);
//getpsrundat(ln3,cnt);
void getpsrundat(char ln3[100],int cnt)
{
	char i;
	for(i=0;i<rundatcnt;i++)
	{
		if(!strcmp(ln3,rundatstr[i]))
		{
			rundatval[i]=cnt;
		}
	}
}

⌨️ 快捷键说明

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