计算机接口技术课堂大作业1

合集下载

吉大2020-2022学期《计算机接口技术》在线作业一(1)答案

吉大2020-2022学期《计算机接口技术》在线作业一(1)答案

吉大2020-2022学期《计算机接口技术》在线作业一提醒:本科目含有多少随机试卷,请核实本套试卷是否是您需要的材料!!!一、单选题(共17题,68分1、串行通信主要用于( )A近距离通信系统B远程通信系统C并行通信系统D局域网通信系统提示:复习课程相关知识802,并完成上述题目[正确参考选择]:B2、主机与外设传送数据时,采用()方式,主机与外设是串行工作的。

A程序查询B中断CDMADIOP处理机提示:复习课程相关知识802,并完成上述题目[正确参考选择]:A3、8255A引脚信号/WR=0,/CS=0,A1=1,A0=1时,表示()。

ACPU向数据口写数据BCPU向控制口送控制字CCPU读8255A控制口D无效操作提示:复习课程相关知识802,并完成上述题目[正确参考选择]:BMA方式中,周期“窃取”是窃取一个()。

A存储周期B指令周期CCPU周期D总线周期提示:复习课程相关知识802,并完成上述题目[正确参考选择]:A5、支持无条件传送方式的接口电路中,至少应包含()。

A数据端口,控制端口B状态端口C控制端口D数据端口提示:复习课程相关知识802,并完成上述题目[正确参考选择]:D——————————6、CPU与外设间数据传送的控制方式有()。

A中断方式BDMA方式C程序控制方式D以上三种都是提示:复习课程相关知识802,并完成上述题目[正确参考选择]:D7、PC机中,确定硬中断的服务程序入口地址的是()。

A主程序中的调用指令B主程序中的转移指令C中断控制器发出的类型码D中断控制器中的中断服务寄存器提示:复习课程相关知识802,并完成上述题目[正确参考选择]:C8、设中断向量表18CH~18FH单元中,依次存放着12H、34H、56H、78H,则中断服务程序的入口地址(段基址:偏移地址)为( )A1234H:5678HB3412H:7856HC5678H:1234HD7856H:3412H提示:复习课程相关知识802,并完成上述题目[正确参考选择]:D9、在异步通信方式中,通常采用()来校验错误。

【奥鹏】吉大19秋学期《计算机接口技术》在线作业一[5]答案

【奥鹏】吉大19秋学期《计算机接口技术》在线作业一[5]答案

【奥鹏】吉大19秋学期《计算机接口技术》在线作业一
试卷总分:100 得分:100
一、单选题(共17题,68分
1、8255A的方式选择控制字为80H,其含义是()。

AA、B、C口全为输入
BA口为输出,其他为输入
CA、B为方式0
DA、B、C口均为方式0,输出
[仔细分析以上题目,运用所学知识完成作答]
参考选择:C
2、执行返回指令,退出中断服务程序,这时返回地址来自()。

AROM区
B程序计数器
C堆栈区
DCPU的暂存寄存器
[仔细分析以上题目,运用所学知识完成作答]
参考选择:C
3、DMA方式中,周期“窃取”是窃取一个()。

A存储周期
B指令周期
CCPU周期
D总线周期
[仔细分析以上题目,运用所学知识完成作答]
参考选择:A
4、串行异步通信协议所规定的一帧数据中,允许最长的一帧数据共有()位。

A13
B7
C12
D8
[仔细分析以上题目,运用所学知识完成作答]
参考选择:C
5、串行通信主要用于( )
A近距离通信系统
B远程通信系统
C并行通信系统
D局域网通信系统
[仔细分析以上题目,运用所学知识完成作答]
参考选择:B。

计算机接口技术课堂大作业1

计算机接口技术课堂大作业1

计算机接口技术课堂大作业参考答案(1)姓名:班级:学号:成绩:——————————————————————————————————一.填空题(每空2分,共30分)1.接口的编址方式有(统一编址)和(独立编址)。

2.数据输入/输出的三种基本方式是(查询)、(中断)和(DMA)。

3.8086CPU的外部中断引脚有(INTR)和(NMI)。

4.在8086CPU系统中,设某中断源的中断类型号为08H,中断矢量为0100H:1000H,则相应的中断矢量存储地址为(0020H);从该地址开始,连续的4个存储单元存放的内容依次为(00H、10H、00H、01H)。

5.定时器/计数器8254的地址范围是304H~307H,则控制端口的地址是(307H)。

6.如用译码器74LS138的输出信号与8086CPU的WR信号组合后成为8255A的片选控制信号,应选用下列哪中逻辑电路(B)。

A.与门 B.和门C.与非门D.和非门7.在某一存储器系统中,设有只读存储器16KB,随机存储器48KB,用16根地址线来寻址,如只读存储器位于低地址段,则其地址范围是(C)。

A. 0000H—2BFFHB. 0000H—0FFFHC. 0000H—3FFFHD. 0000H—4AFFH8.键盘硬中断的类型号是9,它对应的中断向量指针是( 0000:0024H )。

(包括段地址和徧移量)9.在给接口编址的过程中,如果有5根地址线没有参加译码,则可能产生(32)个重叠的地址。

10.某8254A定时器/计数器0的CLK0输入时钟频率是1MHz,要求的定时时间是10ms,则定时器/计数器0的定时常数应该是(10000)二.简答题(每小题5分,共40分)1.什么是端口?8086共有多少端口?答:一个I/O地址称为一个端口;8086共有65536个端口。

2.请用74LS138设计一个产生308H~30FH的PC机译码电路。

答:3.请简述在8254A定时器/计数器中,什么是硬件触发和软件触发?答:软件触发特点:8253A初始化后,只要写入定时/计数常数,8253A就开始计数.。

计算机接口技术大作业

计算机接口技术大作业

计算机中断技术大作业题目深入理解中断系统哈尔滨工业大学本科毕业设计(论文)目录一:什么是中断? (3)1.1中断的定义 (3)1.2中断技术差生的原因 (4)1.3中断技术差生的优点 (6)1.4中断技术差生的缺点 (8)二:基本概念 (9)2.1中断源 (9)我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。

在上面看书的例子中,打断你看书的时间就是中断源(电话响了)。

(9)2.2中断嵌套 (9)2.3中断级联 (10)图2.3 (11)2.4软中断,硬中断 (11)2.5NMI(不可屏蔽中断)&可屏蔽中断 (12)2.6中断请求号&中断向量 (12)2.7中断响应INTA&中断周期 (12)中断响应INTA:当8259A接收到第一个/INTA有效的负脉冲后,将被响应的中断源置入ISR(正在服务寄存器)的对应位,即ISR对应位置1,同时把IRR(中断请求寄存器)的对应位清0; (12)2.8单步中断&IF中断允许标志位 (13)2.9IMR中断屏蔽字&中断优先级 (13)2.10中断控制器&APIC (13)2.11中断共享&中断冲突 (13)2.12MSI-X中断(PCI E)、中断处理子程序 (14)2.130号中断、1号中断 (14)2.14中断描述符、中断描述符表 (14)2.15异常 (14)2.16中断门、OS的事件、消息 (15)三:中断资源相关 (15)3.1我的电脑中断相关资源占用情况 (15)3.2ISA中断 (19)3.3PCI中断 (23)3.4IRQ0-15中断请求外的 (23)四:中断系统 (23)4.1中断系统怎样协调完成中断过程 (24)哈尔滨工业大学本科毕业设计(论文)五:多处理器系统的中断 (25)5.1怎么连接 (25)5.1如何处理 (26)六:硬件、软件是怎么配合完成中断处理的 (26)七:编写8251查询发送、中断接收的自检程序 (28)哈尔滨工业大学本科毕业设计(论文)摘要学习计算机组成原理和计算机接口技术之中,“中断”是一个必须要学习的美容,计算机之所以能够“智能”的运行起来使得其更容易被人使用很重要的一点就是有了中断技术。

福师大本科计算机接口技术作业1

福师大本科计算机接口技术作业1

福师大本科计算机接口技术作业1第1章基础知识1.1进制变换(153.375)10=(10011001.011)2=(231.3)8=(99.6)16;(369.5)10=(101110001.1)2=(561.4)8=(171.8)16(10000000)2=(128)10=(200)8=(80)161.2① 11110000B=( 360Q )8=( F0H )16= (240D )10;1111111111111111B=( 177777Q )8=( FFFFH )16 = (65535D )10② 32AH =( 1100101010)2=(1452)8= (810)10;FFFE H =(1111111111111110)2=(177776)8 = (65534)101.5真值与机器数(设系统为8 位字长)⑴.已知补码求真值(有符十进制表示)①11110000B 真值=-16②00110110B 真值=+54⑵.已知真值求机器数X=-28 [X]原=10011100 [X]补=111001001.6 下列各数为十六进制表示的8位二进制数,请说明当它们被看作是用补码表示的带符号数时,它们所表示的十进制数是什么?(1)59H (2)B2H (3)73H (4)F4H(1)+89 (2)-78(3) +115 (4) -12第2章基本电路2.1 ALU是什么部件?其主要功能是什么?答:ALU是算术逻辑单元,是进行算术和逻辑运算的部件,是运算器的基本电路。

2.3 N位地址的存储器其容量是多少?若某动态存储器芯片有行、列地址各12位,该芯片的存储单元数是多少?若系统中需组成一个256K字节的RAM,选用128K×4位的芯片,需要多少片?答:容量=2N。

行12位+列12位=地址共24位,容量=224=16M。

2.4 什么是总线?微型机采作总线结构有何好处?答:各部件之间信息的公共通道。

相对简单,成本低,具有良好的扩充性。

微型计算机接口技术大作业

微型计算机接口技术大作业

微型计算机接口技术大作业学院(系):软件学院专业:软件工程班级:姓名:学生学号:电话:2011年6月5日P2P语音聊天工具一、程序简介程序实现了文字聊天和语音聊天,程序即可以作为服务器端侦听其他用户的连接请求,也可以作为客户端主动连接其他用户。

程序使用了Win32 API提供的用于多媒体服务的函数接口,主要涉及波形音频设备的相关内容。

程序主要分为四个模块:1.主程序模块(消息处理和界面控制)2.负责接收连接的服务器Socket模块3.负责接收和发送数据的客户端模块4.声卡数据的采集和播放模块二、流程图主模块流程图:负责接收连接的服务器Socket模块:负责接收和发送数据的客户端模块:声卡数据的采集和播放模块流程图:三、代码实现代码主要是用MFC对话框程序框架编写的,对于界面上的控件和消息传递的部分,此处略去,仅仅给出主要程序的代码。

主模块代码://初始化端口号、聊天消息框和输入框CExample2_ChatRoomDlg::CExample2_ChatRoomDlg(CWnd* pParent /*=NULL*/) : CDialog(CExample2_ChatRoomDlg::IDD, pParent){//{{AFX_DATA_INIT(CExample2_ChatRoomDlg)m_sInputString = _T(""); //输入框m_sShowString = _T(""); //聊天消息框m_uPort = 4000; //端口号//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}//初始化服务器IP地址(默认设置为本机的IP地址)BOOL CExample2_ChatRoomDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);if(AfxSocketInit(NULL)==0){AfxMessageBox("CSocketInital Error");}BYTE f0,f1,f2,f3;CString name;CClientSocket::GetLocalHostName(name); //获取本机名CClientSocket::GetIpAddress(name,f0,f1,f2,f3); //获取本机IP//设置服务器IP为本机IP((CIPAddressCtrl *)(GetDlgItem(IDC_IPADDRESS)))->SetAddress(f0,f1,f2,f3);m_bInit=false;m_bClient=false;m_willchating=TRUE;return TRUE;}//显示主窗体BOOL CExample2_ChatRoomApp::InitInstance(){AfxEnableControlContainer();#ifdef _AFXDLLEnable3dControls();#elseEnable3dControlsStatic();#endifCExample2_ChatRoomDlg dlg; //创建窗体实例m_pMainWnd = &dlg;intnResponse = dlg.DoModal();if (nResponse == IDOK){}else if (nResponse == IDCANCEL){}return FALSE;}//对于用户更改聊天窗口内容的判断void CExample2_ChatRoomDlg::OnInputText(){if(!m_bInit) //如果用户还没有连接就输入聊天内容,提示用户先连接{AfxMessageBox("还没有连接到服务器!");return;}//如果用户按下Enter按钮,且焦点在输入窗口中,则对当前聊天室中的所//有用户发送消息CString in;CMessgmsg;GetDlgItemText(IDC_INPUTTEXT,in);if(in.GetLength()<1){return;} //如果用户没有输入内容,返回if(in.GetAt(in.GetLength()-1)=='\n'){in.TrimRight(" ");SetDlgItemText(IDC_INPUTTEXT,"");if(in.GetLength()>2){m_sMsgList+=in;SetDlgItemText(IDC_SHOWTEXT,m_sMsgList);Intm_iLineCurrentPos=((CEdit*)(GetDlgItem(IDC_SHOWTEXT)))->GetLineCount();((CEdit*)(GetDlgItem(IDC_SHOWTEXT)))->LineScroll(m_iLineCurrentPos);msg.m_strText=in;if(!m_bClient){POSITION pos;for(pos=m_connectionList.GetHeadPosition();pos!=NULL;){ //循环遍历所有建立连接的用户,分别发送消息CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);t->SendMessage(&msg);}}else{m_clientsocket.SendMessage(&msg);}}}}//建立服务器按钮void CExample2_ChatRoomDlg::OnSetserver(){if(!m_bInit){m_bClient=false; //作为服务器端m_bInit=true;if(m_pListenSocket.Init(GetDlgItemInt(IDC_PORT),this)==FALSE){ //初始化服务器(建立套接字并侦听,详见Server模块)m_bInit=false;return;}}}//连接服务器按钮void CExample2_ChatRoomDlg::OnConnectserver(){if(!m_bInit){BYTE f0,f1,f2,f3;CString name;//读取服务器IP输入框中的数据((CIPAddressCtrl *)(GetDlgItem(IDC_IPADDRESS)))->GetAddress(f0,f1,f2,f3);CStringip;ip.Format("%d.%d.%d.%d",f0,f1,f2,f3);m_bClient=true;m_clientsocket.Create();if(m_clientsocket.Connect(ip,GetDlgItemInt(IDC_PORT))) //连接服务器{m_clientsocket.Init(this);SetDlgItemText(IDC_SHOWTEXT,"成功连接到服务器.");m_bInit=true;}else{m_clientsocket.Close();AfxMessageBox("连接服务器失败!");m_bInit=false;}}}//用户按下语音聊天按钮void CExample2_ChatRoomDlg::OnNewsend(){if(m_willchating==TRUE){m_sound.Init(this); //初始化音频m_sound.Record(); //开始录音SetDlgItemText(IDC_NEWSEND,"停止语音聊天");m_willchating=FALSE;}else{CSingleLocklock(&m_mutex,TRUE);m_sound.StopRecord(); //停止录音SetDlgItemText(IDC_NEWSEND,"语音聊天");m_willchating=TRUE;lock.Unlock();}}负责接收连接的服务器Socket模块代码://服务器初始化BOOL CServerSocket::Init(UINT port, CExample2_ChatRoomDlg* dlg){m_uPort=port;m_dlg=dlg;if(Create(m_uPort)==FALSE) //创建套接字{AfxMessageBox("Server Socket Create Error");return FALSE;}if(this->Listen()==FALSE) //侦听{AfxMessageBox("Server Listen Error");return FALSE;}m_dlg->SetDlgItemText(IDC_SHOWTEXT,"正在侦听其他用户的连接请求!");return TRUE;}//当有连接请求时把该用户加入连接队列中void CExample2_ChatRoomDlg::ProcessPendingAccept(){CClientSocket* pSocket = new CClientSocket(); //为该用户分配一个套接口if (m_pListenSocket.Accept(*pSocket)) //接收连接请求{CMessgmsg;msg.m_strText="一个游客进入聊天室了\n";m_sShowString+="一个游客进入聊天室了\n";POSITION pos;//向所有用户发送消息for(pos=m_connectionList.GetHeadPosition();pos!=NULL;){CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);t->SendMessage(&msg);}pSocket->Init(this);m_connectionList.AddTail(pSocket);}elsedeletepSocket;}负责接收和发送数据的客户端模块代码://发送消息BOOL CClientSocket::SendMessage(CMessg * msg){if (m_aSessionOut != NULL){msg->Serialize(*m_aSessionOut);m_aSessionOut->Flush();return TRUE;}else{//对方关闭了连接m_bClose=true;CloseSocket();m_dlg->CloseSessionSocket();return FALSE;}}//接收消息voidCClientSocket::OnReceive(intnErrorCode){CSocket::OnReceive(nErrorCode);do{CMessg temp;temp.Serialize(*m_aSessionIn);m_dlg->m_sMsgList+=temp.m_strText; //添加条目m_dlg->SetDlgItemText(IDC_SHOWTEXT,m_dlg->m_sMsgList);if(temp.m_tag==1&&m_dlg->m_willchating==FALSE)//如果有声音过来并且本机的声音设备已经准备好了则首先在本机发出声音{memcpy(m_dlg->m_sound.m_cBufferOut,temp.m_buffer,MAX_BUFFER_SIZE);}intlinenum=((CEdit*)(m_dlg->GetDlgItem(IDC_SHOWTEXT)))->GetLineCount();((CEdit *)(m_dlg->GetDlgItem(IDC_SHOWTEXT)))->LineScroll(linenum);if(!m_dlg->m_bClient) //如果是服务器端的话,转发消息{for(POSITIONpos=m_dlg->m_connectionList.GetHeadPosition();pos!=NULL;){CClientSocket * t = (CClientSocket*)m_dlg->m_connectionList.GetNext(pos);if(t->m_hSocket!=this->m_hSocket){t->SendMessage(&temp);}}}}while (!m_aSessionIn->IsBufferEmpty());}声卡数据的采集和播放模块代码://初始化voidCSound::Init(CExample2_ChatRoomDlg *dlg){int result;m_dlg=dlg;if(waveInGetNumDevs()==0) //是否有音频输入设备{AfxMessageBox("There is no sound input device");}if(waveOutGetNumDevs()==0) //是否有音频输出设备{AfxMessageBox("There is no sound output device");}//指定录音格式m_soundFormat.wFormatTag=WAVE_FORMAT_PCM;m_soundFormat.nChannels=1;m_soundFormat.nSamplesPerSec=8000;m_soundFormat.nAvgBytesPerSec=16000;m_soundFormat.nBlockAlign=2;m_soundFormat.cbSize=0;m_soundFormat.wBitsPerSample=16;int res=waveInOpen(&m_hWaveIn,WAVE_MAPPER, &m_soundFormat, (DWORD)m_dlg->m_hWnd,0L,CALLBACK_WINDOW); //打开录音设备if(res!= MMSYSERR_NOERROR){AfxMessageBox("Error in waveInOpen function");return ;}res=waveOutOpen(&m_hWaveOut,WAVE_MAPPER, &m_soundFormat, (DWORD)m_dlg->m_hWnd,0L,CALLBACK_WINDOW); //打开录音设备if(res!= MMSYSERR_NOERROR){AfxMessageBox("Error in waveOutOpen function");return ;}//inm_pWaveHdrIn[0].lpData=m_cBufferIn;m_pWaveHdrIn[0].dwBufferLength=MAX_BUFFER_SIZE;m_pWaveHdrIn[0].dwBytesRecorded=0;m_pWaveHdrIn[0].dwFlags=0;result=waveInPrepareHeader(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR) ); //准备内存块录音if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot InPrepareHeader !"));return;};//增加内存块result=waveInAddBuffer(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR));if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot InAddBuffer !"));return;};//outm_pWaveHdrOut[0].lpData=m_cBufferOut;m_pWaveHdrOut[0].dwBufferLength=MAX_BUFFER_SIZE;m_pWaveHdrOut[0].dwBytesRecorded=0;m_pWaveHdrOut[0].dwFlags=0;waveOutPrepareHeader(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR)); //准备内存块录音waveOutWrite(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR));}//开始录音voidCSound::Record(){waveInStart(m_hWaveIn);//开始录音}//播放本地声音voidCSound::Play(){memcpy(m_cBufferOut,m_cBufferIn,MAX_BUFFER_SIZE);}//停止录音voidCSound::StopRecord(){waveInStop(m_hWaveIn); //停止录音waveInReset(m_hWaveIn); //清空内存块}//清空录音缓冲区voidCSound::FreeRecordBuffer(){intresult=waveInUnprepareHeader(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR)); if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot UnInPrepareHeader !"));return;}; //inm_pWaveHdrIn[0].lpData=m_cBufferIn;m_pWaveHdrIn[0].dwBufferLength=MAX_BUFFER_SIZE;m_pWaveHdrIn[0].dwBytesRecorded=0;m_pWaveHdrIn[0].dwFlags=0;result=waveInPrepareHeader(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR) ); //准备内存块录音if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot InPrepareHeader !"));return;}; //inresult=waveInAddBuffer(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR)); //增加内存块if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot InAddBuffer !"));return;}; //in}//清空输出缓冲区voidCSound::FreePlayBuffer(){staticbool once=true;int result;result=waveOutUnprepareHeader(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(W AVEHDR));m_pWaveHdrOut[0].lpData=m_cBufferOut;m_pWaveHdrOut[0].dwBufferLength=MAX_BUFFER_SIZE;m_pWaveHdrOut[0].dwBytesRecorded=0;m_pWaveHdrOut[0].dwFlags=0;result=waveOutPrepareHeader(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAV EHDR)); //准备内存块录音if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot OutPrepareHeader !"));return;}; //outresult=waveOutWrite(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR)); //增加内存块if (result!= MMSYSERR_NOERROR){AfxMessageBox(_T("Cannot OutWrite !"));return;}; //out}//输入缓冲区满的时候触发的发送音频消息函数void CExample2_ChatRoomDlg::WriteBufferFull(LPARAM lp,WPARAMwp){m_sound.Play();//发出本地声音CSingleLocklock(&m_mutex,TRUE);CMessgmsg;msg.m_strText="";msg.m_tag=1;memcpy(msg.m_buffer,m_sound.m_cBufferIn,MAX_BUFFER_SIZE);if(!m_bClient){POSITION pos;for(pos=m_connectionList.GetHeadPosition();pos!=NULL;){ //如果是服务器端,就给所有客户端发送音频CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);t->SendMessage(&msg);}}else{m_clientsocket.SendMessage(&msg);}m_sound.FreeRecordBuffer();m_sound.FreePlayBuffer();lock.Unlock();}四、程序运行结果截图五、心得与体会通过学习大作业和平时的小作业,了解并掌握了网络通信编程、视频和音频传输技术,对于MPI、语音识别技术也有了一定的了解。

计算机接口专业技术大作业

计算机接口专业技术大作业

计算机接口技术大作业————————————————————————————————作者:————————————————————————————————日期:计算机中断技术大作业题目深入理解中断系统哈尔滨工业大学本科毕业设计(论文)目录一:什么是中断? (2)1.1中断的定义 (2)1.2中断技术差生的原因 (3)1.3中断技术差生的优点 (5)1.4中断技术差生的缺点 (7)二:基本概念 (8)2.1中断源 (8)我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。

在上面看书的例子中,打断你看书的时间就是中断源(电话响了)。

(8)2.2中断嵌套 (8)2.3中断级联 (9)图2.3 (10)2.4软中断,硬中断 (10)2.5NMI(不可屏蔽中断)&可屏蔽中断 (11)2.6中断请求号&中断向量 (11)2.7中断响应INTA&中断周期 (11)中断响应INTA:当8259A接收到第一个/INTA有效的负脉冲后,将被响应的中断源置入ISR(正在服务寄存器)的对应位,即ISR对应位置1,同时把IRR(中断请求寄存器)的对应位清0; (11)2.8单步中断&IF中断允许标志位 (12)2.9IMR中断屏蔽字&中断优先级 (12)2.10中断控制器&APIC (12)2.11中断共享&中断冲突 (12)2.12MSI-X中断(PCI E)、中断处理子程序 (13)2.130号中断、1号中断 (13)2.14中断描述符、中断描述符表 (13)2.15异常 (13)2.16中断门、OS的事件、消息 (14)三:中断资源相关 (14)3.1我的电脑中断相关资源占用情况 (14)3.2ISA中断 (18)3.3PCI中断 (22)3.4IRQ0-15中断请求外的 (22)四:中断系统 (22)4.1中断系统怎样协调完成中断过程 (23)哈尔滨工业大学本科毕业设计(论文)五:多处理器系统的中断 (24)5.1怎么连接 (24)5.1如何处理 (25)六:硬件、软件是怎么配合完成中断处理的 (25)七:编写8251查询发送、中断接收的自检程序 (27)哈尔滨工业大学本科毕业设计(论文)摘要学习计算机组成原理和计算机接口技术之中,“中断”是一个必须要学习的美容,计算机之所以能够“智能”的运行起来使得其更容易被人使用很重要的一点就是有了中断技术。

计算机接口技术大作业

计算机接口技术大作业

计算机接口技术大作业课题名称:单路中断方式A/D采集及8355LED显示驱动班级:B13082041姓名:高炼学号:132208100055一.技术要求及说明1.一路检测,在LED上显示。

2.判断上下限并区别显示,下限LED全灭,上限LED全亮。

二.硬件原理及说明1.8259芯片内部结构原理如图2. 8255A内部结构8255芯片编程模型A口方式控制输出结构图8255方式选择控制字3.ADC0809内部结构图ADC0809通道选择表如图74HC138的作用:就是选择芯片时用的,提供芯片的入口地址74HC138集成译码器原理图5.电位器作用电位器的作用就是产生模拟信号,输送到模数转换器,然后模数转换器将模拟信号转变为数字信号。

6.LED灯LED灯的亮灭由8255的PA口控制,8个PA口中输出高电平的PA口对应的LED灯就会发光。

三.总体流程及重要子程序流程设计与分析四.收获与体会模数转换,电位器产生模拟信号,产生的模拟信号就通过模数转换器转变成数字信号,产生的数字信号输入到8259中断控制器中,使8259在适当的时候产生中断,通过中断控制8255的工作方式,而译码器的作用就是提供每个芯片的入口地址。

五.程序清单程序源代码:#define PA8255 0x8000 //8255 PA输出地址#define CTL8255 0x8003#define CS0809 0x9000#define mode 0x82#define ICW1 0x13 //单片8259, 上升沿中断, 要写ICW4#define ICW2 0x20 // 中断号为20H#define ICW4 0x01 // 工作在8086/88 方式#define OCW1 0xfe // 只响应INT0 中断#define CS8259A 0xd000#define CS8259B 0xd001extern unsigned char IN(unsigned int port);extern void OUT(unsigned int port, unsigned char v); extern void DISABLE(void);extern void ENABLE(void);extern void SETINT(unsigned char NO, unsigned int *ENTER); unsigned char buf;unsigned char Read0809(){unsigned char i;OUT(CS0809, 0); //起动A/Dfor (i=0; i<0x80; i++) ; //延时>100usreturn(IN(CS0809)); //读入结果}interrupt IEnter(){if(buf == 0x00) //下限{OUT(PA8255, 0x00);}else if(buf == 0xff) //上限{OUT(PA8255, 0xff);}else{OUT(PA8255, 0x3c);}OUT(CS8259A, 0x20); //中断服务程序结束指令}void IInit() //初始化{OUT(CS8259A, ICW1);OUT(CS8259B, ICW2);OUT(CS8259B, ICW4);OUT(CS8259B, OCW1);}void main(){OUT(CTL8255,mode);DISABLE(); //关闭中断响应IInit();SETINT(ICW2, &IEnter); //中断入口地址ENABLE(); //打开中断响应while (1){buf = Read0809();}叮叮小文库}欢迎有需要的朋友下载!!11。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机接口技术课堂大作业参考答案(1)
姓名:班级:学号:成绩:——————————————————————————————————一.填空题(每空2分,共30分)
1.接口的编址方式有(统一编址)和(独立编址)。

2.数据输入/输出的三种基本方式是(查询)、(中断)和(DMA)。

3.8086CPU的外部中断引脚有(INTR)和(NMI)。

4.在8086CPU系统中,设某中断源的中断类型号为08H,中断矢量为0100H:1000H,则相应的中断矢量存储地址为(0020H);从该地址开始,连续的4个存储单元存放的内容依次为(00H、10H、00H、01H)。

5.定时器/计数器8254的地址范围是304H~307H,则控制端口的地址是(307H)。

6.如用译码器74LS138的输出信号与8086CPU的WR信号组合后成为8255A的片选控制信号,应选用下列哪中逻辑电路(B)。

A.与门 B.和门C.与非门D.和非门
7.在某一存储器系统中,设有只读存储器16KB,随机存储器48KB,用16根地址线来寻址,如只读存储器位于低地址段,则其地址范围是(C)。

A. 0000H—2BFFH
B. 0000H—0FFFH
C. 0000H—3FFFH
D. 0000H—4AFFH
8.键盘硬中断的类型号是9,它对应的中断向量指针是( 0000:0024H )。

(包括段地址和徧移量)
9.在给接口编址的过程中,如果有5根地址线没有参加译码,则可能产生(32)个重叠的地址。

10.某8254A定时器/计数器0的CLK0输入时钟频率是1MHz,要求的定时时间是10ms,则定时器/计数器0的定时常数应该是(10000)
二.简答题(每小题5分,共40分)
1.什么是端口?8086共有多少端口?
答:一个I/O地址称为一个端口;8086共有65536个端口。

2.请用74LS138设计一个产生308H~30FH的PC机译码电路。

答:
3.请简述在8254A定时器/计数器中,什么是硬件触发和软件触发?
答:软件触发特点:8253A初始化后,只要写入定时/计数常数,8253A就开始计数.。

硬件触发特点:8253A初始化并写入定时/计数常数后,还必须有一个硬件的触发信号,8253A才能开始计数。

4.什么是中断向量?什么是中断向量表?中断向量地址与中断向量表的关系是什么?
答:中断向量是中断服务程序的入口地址,把系统中所有的中断类型码及其对应的中断向量按一定的规律存放在一个区域内,这个存储区域就叫中断向量表。

中断向量地址也叫中断向量指针,它指出了中断入口地址在中断向量表中存放的位置。

5.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?
答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程。

硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。

6.定时与计数有什么不同的特点?
答:定时与计数在本质上是一致的,不同的是,定时是对固定频率的脉冲信号计数。

7.I/O地址线作端口寻址时,高位地址线和低位地址线各作何用?如何决定低位地址线的根数?
答:高位地址线主要接译码器,用来选择接口芯片;低位地址线用来选择片内地址。

低位地址线的根数可由片内地址最多的芯片来决定,如片内最多是32个地址,则需5根低位地址线。

8.什么是中断嵌套?全嵌套与特殊嵌套有什么区别?
答:为了使更紧急的级别高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被中断了的中断服务程序继续执行。

只有优先级高的才能打断优先级低的,称为全嵌套;同级的中断能够被打断,称为特殊嵌套。

三.编程题(每小题15分,共30分)
1.某16位机的中断系统如下图所示,设主、从片的工作方式为边沿触发,主片的中断类型号为10H~17H,从片A的中断类型号为20H~27H,从片B的中断类型号为28H~2FH,主从片都允许嵌套,请写出系统的初试化程序。

主片初始化:
MOV AL,00010001B OUT 20H,AL
MOV AL,10H
OUT 21H,AL
MOV AL,01000100B OUT 21H,AL
MOV AL,00010001B OUT 21H,AL
从片A初始化:
MOV AL,00010001B OUT 0A0H,AL MOV AL,20H
OUT 0A1H,AL MOV AL,03
OUT 0A1H,AL MOV AL,00000001B OUT 0A1H,AL
从片B初始化:
MOV AL,00010001B OUT 0B0H,AL MOV AL,28H
OUT 0B1H,AL MOV AL,06
OUT 0B1H,AL MOV AL,00000001B
OUT 0B1H,AL
2.写出如下图所示原理图中,芯片8254选通工作的地址范围,各端口地址各为多少?如设8254计数器0为BCD 码计数方式,工作于方式3(方波发生器),CLK 0输入端每来5个计数脉冲,输出端OUT 0的高电平与低电平反相一次(对称方波),请写出初始化程序。

(1)地址范围:80H ~
计数器0#:80H ; 计数器2#:82H ; 控制寄存器:83H
(2)计数器0为BCD 码计数方式,工作于方式3,方式控制字为00010111B=17H
CLK0输入端每来5个计数脉冲,输出端OUT0的高电平与低电平反相
一次(对称方波),即计数初值为10,BCD 码计数,为10H 。

(3)8253初始化程序:
MOV AL ,17H
OUT 83H ,AL
MOV AL ,10H
OUT 80H ,AL 8254 A A A A A A。

相关文档
最新文档