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

📄 mainfrm.cpp.bak

📁 数字面板开发的单片机的软件仿正程序
💻 BAK
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "pslab.h"

#include "MainFrm.h"
#include "pslabDoc.h"
#include "pslabView.h"

#define simrunhead

///PSLAB---INCLUDE
#include "psrun.h"
#include "psrun.cpp"
///PSLAB---INCLUDE

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
	int i;
	i=0;
	sbufFile.Close();
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	fileerr=0;
	strCFile[0]=0;
	CFrameWnd::SetTimer(1,100,NULL);
	ijk=0;
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


void CMainFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default

	//********************MAIN LOOP
	char str[80];
	uchar i,j,k;
	int brkpc;
	MSG msg;
	CDC *pDC=GetDC();
	if(nIDEvent==1)
	{
		CFrameWnd::KillTimer(1);

///PSLAB---MLOOP
		while(!fileerr)
		{
///PSLAB---route for STEP CYCLE CONTINUE	
			if(BSCrun)
			{
				brkpc=pc;
				if(kchstep)
				{
					txtrun=TRUE;
				}
	    	if(BSTEPrun)
				{
					if(kchstep)
					{
						if(runCYCLE>BSTEP)
						{
							runCYCLE=0;
							kchstep=0;
							goto NOTSIM;
						}
						runCYCLE++;
						goto	pDCSTEPSIMRUN;
					}
					else
					{
						goto NOTSIM;
					}
				}
			  if(BASTEPrun)
				{
					if(kchstep)
					{
						if(runCYCLE>BASTEP)
						{
							runCYCLE=0;
							goto pDCSTEPSIMRUN;
						}
						runCYCLE++;
						goto	NOTSIM;
					}
					else 
					{
						goto NOTSIM;
					}
				}
				else if(BCYCLErun)
				{
					if(kchstep)
					{
						if(pc==CPPPC)
						{
							if(runCYCLE>BCYCLE)
							{
								runCYCLE=0;
								kchstep=0;
								goto NOTSIM;
							}
							runCYCLE++;
						}
						goto	SIMRUN;
					}
					else
					{
						goto	NOTSIM;
					}
				}
			}
SIMRUN:
///PSLAB***route for STEP CYCLE CONTINUE	
	
			dat2simrun();
			
///PSLAB---runTime				

///PSLAB---simDATdsp pDC DISPLAY	every time
			if(newout74595)
			{
				dspval(110);
				newout74595=FALSE;
				pDC->TextOut(120,ly4,strOUT74595);//OUT74595
			}
///PSLAB***simDATdsp pDC DISPLAY	every time

			kkkk+=tmstep;
			if(kkkk>=400000)
			{
				if(!BSCrun)
				{
					if(CPPPC==pc)
					{
						kkkk-=400000;
						iikk++;
						pDC->TextOut(00,ly0,_itoa(iikk,str,10) );
					}
				}
				else
				{
					kkkk-=400000;
					iikk++;
					pDC->TextOut(00,ly0,_itoa(iikk,str,10) );
				}	
			}
///PSLAB***runTime				

///PSLAB---run loop counter	
			if(BSCrun)
			{
				
				if(((B0run)&&(brkpc==breakpc))||((B1run)&&(pc==breakpc1))||((B2run)&&(pc==breakpc2)))
				{
					kchstep=0;
				}
				if(BSCdsp)
				{
					BSCdsp=FALSE;
					pDC->TextOut(50,ly0,strBSC);//BSC
				}
				if(BCYCLErun)
				{
					if(pc==CPPPC)
					{
						goto	CYCLEpDC;
					}
				}
				else
				{
					goto	STEPpDC;
				}
			}
			else if(pc==CPPPC)
			{
				if(runCYCLE>ACYCLE)
				{
					runCYCLE=0;
					goto	OUTpDC;
				}
				runCYCLE++;
			}
			continue;
///PSLAB***run loop counter	

pDCSTEPSIMRUN:
			{
				if((BSTEPrun)||(BASTEPrun))
				{
				//PSLAB---dsp disasmble
					strcpy(strdisasm[0],strdisasm[1]);
					strcpy(strdisasm[1],strdisasm[2]);
					strcpy(strdisasm[2],strdisasm[3]);
					strcpy(strdisasm[3],strdisasm[4]);
					strcpy(strdisasm[4],strdisasm[5]);
					strcpy(strdisasm[5],strdisasm[6]);
					strcpy(strdisasm[6],strdisasm[7]);
					
					_itoa(pc,strdisasm[7],16);
					i=strlen(strdisasm[7]);
					while(i<6)
					{
						strdisasm[7][i++]=0x20;
					}
					strdisasm[7][i]=0x0;
					strcat(strdisasm[7],datstr[pc]);
					i=strlen(strdisasm[7]);
					while(i<28)
					{
						strdisasm[7][i++]=0x20;
					}
					strdisasm[7][i]=0x0;

					pDC->TextOut(400,ly0,strdisasm[0]);
					pDC->TextOut(400,ly1,strdisasm[1]);
					pDC->TextOut(400,ly2,strdisasm[2]);
					pDC->TextOut(400,ly3,strdisasm[3]);
					pDC->TextOut(400,ly4,strdisasm[4]);
					pDC->TextOut(400,ly5,strdisasm[5]);
					pDC->TextOut(400,ly6,strdisasm[6]);
					pDC->TextOut(400,ly7,strdisasm[7]);
				//PSLAB---dsp disasmble

				//PSLAB---dsp SP
					if(spp!=sppdsp)
					{
						if(spp==0)
						{
							sppdsp=8;
						}
						else
						{
							sppdsp=spp-1;
						}
						for(j=0;j<8;j++)
						{
							if(j==sppdsp)
							{							
								str[0]='=';
								str[1]='=';
								str[2]=0x20;
								str[3]=0x0;
								_itoa(spaddr[j],strSP[j],16);
								i=strlen(strSP[j]);
								while(i<6)
								{
									strSP[j][i++]=0x20;
								}
								strSP[j][i]=0x0;
								strcat(strSP[j],datstr[spaddr[j]]);
								i=strlen(strSP[j]);
								while(i<28)
								{
									strSP[j][i++]=0x20;
								}
								strSP[j][i]=0x0;
								strcat(str,strSP[j]);
								strcpy(strSP[j],str);
							}
							else
							{
								str[0]=0x20;
								str[1]=0x20;
								str[2]=0x0;
								str[3]=0x0;
								str[4]=0x0;
								strSP[j][0]=0x20;
								strSP[j][1]=0x20;
								strcat(str,strSP[j]);
							}
							pDC->TextOut(570,ly0+j*15,str);
						}
						sppdsp=spp;
					}
				//PSLAB---dsp SP
				}
				goto	SIMRUN;
			}

///PSLAB---break pDC DISPLAY	
STEPpDC:
CYCLEpDC:
NOTSIM:
BRKTXTOUT:
			if((txtrun)&&(kchstep==0))
			{
				txtrun=FALSE;
				rtxtFile.Open(frtxt, CFile::modeWrite);
				if(rtxtFile==-1)
				{
					fileerr=1;
					strcpy(strCFile,"frtxtFile Write error!");
					return;
				}
				strcpy(str,"    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0E 0E 0F");					
				str[51]=13;
				str[52]=10;
				rtxtFile.Write(str,53);
				for(i=0;i<32;i++)
				{
					_itoa(i,str,16);
					k=strlen(str);
					if(k==1)
					{
						str[1]=str[0];
						str[0]='0';
					}
					str[2]=0x20;
					rtxtFile.Write(str,3);
					for(j=0;j<16;j++)
					{
						_itoa(filv[(i*16)+j],str,16);
						k=strlen(str);
						if(k==1)
						{
							str[2]=str[0];
							str[1]='0';
						}
						else if(k==2)
						{
							str[2]=str[1];
							str[1]=str[0];
						}
						str[0]=0x20;
						rtxtFile.Write(str,3);					
					}
					str[0]=13;
					str[1]=10;
					rtxtFile.Write(str,2);
				}
				rtxtFile.Close();
			}
//OUTpDC:	

///PSLAB---simDATdsp pDC DISPLAY	
			for(i=0;i<4;i++)
			{
				k=1;
				for(j=0;j<8;j++)
				{
					if((filv[simdatval[2+i]]&k)==k)
					{
						pDC->TextOut(D00X[((i*8)+j)],D00Y[((i*8)+j)],D001[((i*8)+j)]);
					}
					else
					{
						pDC->TextOut(D00X[((i*8)+j)],D00Y[((i*8)+j)],D000[((i*8)+j)]);
					}
					k*=2;
				}
			}
///PSLAB***simDATdsp pDC DISPLAY	
			
///PSLAB***break pDC DISPLAY	

OUTpDC:	
			{	
///PSLAB---run infomation pDC DISPLAY	
				itm++;
				if(BSCdsp)
				{
					BSCdsp=FALSE;
					pDC->TextOut(50,ly0,strBSC);//BSC
				}
				if(B0dsp)
				{
					B0dsp=FALSE;
					if(B0run)
					{
						pDC->TextOut(80,ly0,"0");//B0
					}
					else
					{
						pDC->TextOut(80,ly0,"  ");//B0
					}					
				}
				if(B1dsp)
				{
					B1dsp=FALSE;
					if(B1run)
					{
						pDC->TextOut(100,ly0,"1");//B1
					}
					else
					{
						pDC->TextOut(100,ly0,"  ");//B1
					}					
				}
				if(B2dsp)
				{
					B2dsp=FALSE;
					if(B2run)
					{
						pDC->TextOut(120,ly0,"2");//B2
					}
					else
					{
						pDC->TextOut(120,ly0,"  ");//B0
					}					
				}
				if(BSTEPSTRdsp)
				{
					BSTEPSTRdsp=FALSE;
					strcpy(str,rundatstr[BSTEPVALpt]);
					i=strlen(str);
					while(i<12)
					{
						str[i++]=0x20;
					}
					str[i]=0x0;
					pDC->TextOut(140,ly0,str);//BRK/ACYCLE/BSTEP/BASTEP/BCYCLE
				}
				if(BSTEPVALdsp)
				{
					BSTEPVALdsp=FALSE;
					pDC->TextOut(210,ly0,strrunDSP);
				}
				if(simfilvdsp)
				{
					simfilvvaldsp=TRUE;
					simfilvdsp=FALSE;
					_itoa(simfilvpt,str,16);
					i=strlen(str);
					if(i==1)
					{
						str[2]=str[0];
						str[1]='0';
						str[0]='0';
					}
					else if(i==2)
					{
						str[2]=str[1];
						str[1]=str[0];
						str[0]='0';
					}
					str[3]=str[2];
					str[2]=str[1];
					str[1]=str[0];
					str[0]=0x20;
					str[4]=0x20;
					str[5]=0x20;
					str[6]=0;
					pDC->TextOut(00,ly1,str);
				}
				if(simfilvvaldsp)
				{
					simfilvvaldsp=FALSE;
					_itoa(filv[simfilvpt],str,16);
					i=strlen(str);
					if(i==1)
					{
						str[1]=str[0];
						str[0]=0x20;
					}
					str[2]=str[1];
					str[1]=str[0];
					str[0]=0x20;
					str[3]=0x20;
					str[4]=0x20;
					str[5]=0;
					pDC->TextOut(40,ly1,str);
				}
///PSLAB***run infomation pDC DISPLAY	

///PSLAB---simDATdsp pDC DISPLAY	
				if(dspval(6))
				{
					pDC->TextOut(80,ly7,strKCH);//KCH
				}
				if(dspval(5))
				{
					pDC->TextOut(20,ly4,strE);//E
				}
				if(dspval(3))
				{
					pDC->TextOut(20,ly5,strC);//C
				}
				if(dspval(4))
				{
					pDC->TextOut(120,ly5,strD);//D
				}
				if(dspval(1))
				{
					pDC->TextOut(20,ly6,strA);//A
				}
				if(dspval(2))
				{
					pDC->TextOut(120,ly6,strB);//B
				}
				{
					pDC->TextOut(220,ly6,_itoa(pccnt,str,10));
				}

				j=0;
				k=0;
				while(j<simdatcnt)
				{
					for(i=0;i<16;i++)
					{
						if(dspsimdatval(j))
						{
							pDC->TextOut(00+i*25,ly2+k*15,strsimDSP[j]);//LCDXDAT/LCDADDR/DSPDAT/DSPDAT1/DSPDAT2/DSPDAT3
						}
						j++;
						if(j>=simdatcnt)
						{
							break;
						}
					}
					k++;
				}
///PSLAB***simDATdsp pDC DISPLAY	
				
///PSLAB---PAUSE FOR MESSAGE PROCESS	
				if(itm>=15)
				{
					if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))	//有消息在等待吗?
					{
						TranslateMessage (&msg) ; //翻译消息
						PostMessage(msg.message,NULL,NULL) ; //撤去消息
					}
					itm=0;
					ijk=10;
					break;
				}
///PSLAB***PAUSE FOR MESSAGE PROCESS	
				
			}
		}
	}
///PSLAB***MLOOP

///PSLAB---ERROR EXIT
	if(fileerr)
	{
		pDC->TextOut(120,ly3,strCFile);//fileerr
	}
///PSLAB***ERROR EXIT
	
	CFrameWnd::OnTimer(nIDEvent);

}


LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class

	if(ijk==10)
	{
		ijk=0;
		CFrameWnd::SetTimer(1,1,NULL);
	}
	else if(ijk==20)
	{
		ijk=0;
		CFrameWnd::SetTimer(1,100,NULL);
	}
	return CFrameWnd::WindowProc(message, wParam, lParam);
}


⌨️ 快捷键说明

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