绘制芯片内部结构图 int D8255::DrawObject(CDC* pDC) 内容来自论文无忧网 www.paper51.com { copyright paper51.com DComponent::DrawObject(pDC); 内容来自www.paper51.com
intrx,ry,rcx,rcy;//定义4个点以确定一个框 http://www.paper51.com rx= Position.x + cx /2 ; 内容来自www.paper51.com ry= Position.y + cy /2 ; 内容来自www.paper51.com rcx= cx / 9 ; 内容来自www.paper51.com
rcy= cy / 6 ; paper51.com pDC->Rectangle(rx,ry,rx+ rcx,ry + rcy); http://www.paper51.com // pDC->TextOut(rx+2,ry+2,"ISR"); 内容来自论文无忧网 www.paper51.com pDC->SetTextAlign(TA_TOP); copyright paper51.com pDC->DrawText("A组",CRect(rx,ry,rx + rcx,ry +rcy),DT_CENTER | DT_VCENTER |DT_SINGLELINE ) ;//显示内容为“A组”,居中 内容来自www.paper51.com
// rcx= cx / 9 ; 内容来自论文无忧网 www.paper51.com
// rcy= cy / 6 ; http://www.paper51.com rx= rx + 2*rcx ; paper51.com 根据上面代码所示,结果将会在8255芯片图中间画出两个框,框内分别标志出“A组”和“B组”。以同样的方式画出芯片内部结构。 copyright paper51.com
画图时管脚的定义 copyright paper51.com
在a8255_1.txt中 paper51.com U8255 copyright paper51.com
20,20 http://www.paper51.com 380,180 paper51.com 5:10,0;10,-10;(RD) //数字分别代表:管脚编号,横纵坐标;字母代表管脚名称. 内容来自论文无忧网 www.paper51.com 36:25,0;25,-10;(WR) http://www.paper51.com 6:40,0;40,-10;(CS) 内容来自论文无忧网 www.paper51.com 8:55,0;55,-10;(A1) copyright paper51.com 9:70,0;70,-10;(A0) 内容来自论文无忧网 www.paper51.com 27:85,0;85,-10;(D7) 内容来自www.paper51.com 28:100,0;100,-10;(D6) 内容来自论文无忧网 www.paper51.com 29:115,0;115,-10;(D5) copyright paper51.com if(isInPA == 0) //输出方式 copyright paper51.com { copyright paper51.com
if(iSigVal== 0) 内容来自www.paper51.com { copyright paper51.com pParent->DispMsg("A组得到ACK应答低电平,将产生OBF(PC7)高电平"); paper51.com pParent->AddDrawingLine(this,10,1); http://www.paper51.com PC= PC | 0x80 ; //置状态字相应位为1 内容来自www.paper51.com } http://www.paper51.com else http://www.paper51.com { copyright paper51.com if(PC& 0x40 && PC & 0x80 ) // INTEa = 1 ,_OBFa=1 内容来自论文无忧网 www.paper51.com { http://www.paper51.com
pParent->DispMsg("A组得到ACK应答高电平,将产生INTR(PC3)高电平"); 内容来自www.paper51.com pParent->AddDrawingLine(this,17,1); 内容来自论文无忧网 www.paper51.com PC= PC | 0x08 ; //置状态字相应位为1 paper51.com http://www.paper51.com if(PBMode ==1) //上升沿 内容来自www.paper51.com { 内容来自www.paper51.com if(pre== 0 && cur == 1 &&pinCS == 0 && isInPB == 1 && ((pinA & 0x3) == 1)) 内容来自www.paper51.com { 内容来自www.paper51.com
pParent->DispMsg("控制B组的IBF联络线,通过PC1输出低电平"); copyright paper51.com
pParent->AddDrawingLine(this,15,0); 内容来自论文无忧网 www.paper51.com PC= PC & ~(0x02); //置状态字相应位为0 内容来自www.paper51.com http://www.paper51.com } 内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com } copyright paper51.com
8255芯片按方式0工作 内容来自www.paper51.com intD8255::WritePA() http://www.paper51.com { copyright paper51.com
CStringmsg; 内容来自论文无忧网 www.paper51.com int ret =0; 内容来自论文无忧网 www.paper51.com
switch(PAMode) 内容来自www.paper51.com
{ 内容来自论文无忧网 www.paper51.com case0: // A组按方式0工作 内容来自www.paper51.com
if(isInPA) http://www.paper51.com
{ 内容来自www.paper51.com //A口是输入口,无法通过写实现输出功能 内容来自www.paper51.com pParent->DispMsg("PA口是输入口,无法通过写实现输出功能"); 内容来自www.paper51.com 内容来自www.paper51.com } copyright paper51.com
else copyright paper51.com
{ http://www.paper51.com pinPA= PA = pinD ; 内容来自www.paper51.com
msg.Format("让PA口按方式 0 输出%x,无联络信息",PA); 内容来自论文无忧网 www.paper51.com pParent->DispMsg(msg); copyright paper51.com pParent->AddDrawingLine(this,37,(PA>>7)&1); 内容来自论文无忧网 www.paper51.com pParent->AddDrawingLine(this,38,(PA>>6)&1); paper51.com pParent->AddDrawingLine(this,39,(PA>>5)&1); paper51.com
pParent->AddDrawingLine(this,40,(PA>>4)&1); http://www.paper51.com pParent->AddDrawingLine(this,1,(PA>>3)&1); copyright paper51.com
pParent->AddDrawingLine(this,2,(PA>>2)&1); copyright paper51.com pParent->AddDrawingLine(this,3,(PA>>1)&1); copyright paper51.com pParent->AddDrawingLine(this,4,PA&1); http://www.paper51.com } http://www.paper51.com
break; 内容来自论文无忧网 www.paper51.com
方式1和方式2代码类似于方式0. 内容来自论文无忧网 www.paper51.com
结 论 内容来自论文无忧网 www.paper51.com
本课题完成了并行接口器件功能演示的可视化设计,利用仿真实验平台,仿真实现了并行接口器件的逻辑功能。 paper51.com 在此设计中,主要分成两大功能,一是并行接口器件的逻辑功能仿真;二是并行接口器件工作时内部状态的可视化显示。在逻辑功能仿真方面,在有前人的基础上,除了工作方式2以外已经基本实现完善,修正了以前实现的一些错误和漏洞。在可视化方面,完全重新设计,已经做到能够显示器件内部状态结构,并能随着用户的不同应用方式,显示内部工作状态的变化,但直观性稍差,是今后进一步修正开发要努力的方面。 内容来自www.paper51.com |