计算机接口技术大作业

合集下载

计算机接口技术课堂大作业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就开始计数.。

华工20秋计算机接口技术作业

华工20秋计算机接口技术作业

《计算机接口技术》习题一.解释下列概念1.I/O端口答:每个连接到I/O总线上的设备都有自己的I/O地址集,即所谓的I/O端口(I/O port)。

2. 中断向量答:中断向量是指早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址)。

3. 独立编址答:独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中。

4. 可编程答:可编程一般指的是可编程控制器Programmble Controller)简称PC或PLC是一种数字运算操操作的电百子系统,专门在工业环境下应用而设计。

5. 模/数转换答:模/数转换,或叫数字化,是将现实世界中连续变化的波形转变成可以在计算机中存储和处理的数字信号的过程。

二.简答题1.在8253计数器/定时器的6种式作方式中,方式2和方式3各输出何种波形?它们有何种特点?答:方式2输出连续负脉冲,脉冲宽度同CLK周期;方式3 输出连续方波;计数初值为偶数时输出对称方波,为奇数时输出非对称方波,既能高电平启动,也能上跳沿启动2.为什么在长途串行通讯中需要加入Modem,常用的调制方法有哪几种?答:二进制数据信号频带很宽,而通信线路往往使用公用电话线,电话线带宽有限,这会导致接收端信号严重失真。

为此发送端必须加入Modem进行调制,接收端进行解调。

调制方法有:调幅、调频、调相。

3.简述即插即用功能。

答“即插即用”是指为微机系统提供了这样的一种功能:只要将扩展卡插入微机的扩展槽中时,微机系统会自动进行扩展卡的配置工作,保证系统资源空间的合理分配,以免发生系统资源占用的冲突。

这一切都是开机后由系统自动进行的,而无需操作人员的干预。

为达到“即插即用”完全一致的要求,应该变PC系统的4个主要部分,即基于ROM的BIOS、操作系统、硬件设备和应用软件。

PCI所采用的技术非常完善,为用户提供真正的即插即用功能。

计算机接口技术试题试卷考试习题含答案

计算机接口技术试题试卷考试习题含答案

《计算机接口技术》习题1第一部分一、单项选择题1.当一个系统有多片8259芯片时,主片必须工作在()。

A、全嵌套方式B、特殊全嵌套方式C、优先级自动循环方式D、优先级特殊自动循环方式2.下面哪一个中断的优先级最高?()A、NMI中断B、INTR中断C、单步中断D、断点中断3.在中断级联系统中,从片支持的中断服务子程序在结束时必做的工作是()。

A、检查ISR是否为0B、输出一个EOI命令C、输出两个EOI命令D、清除ISR4.PC/XT总线的地址信号和数据信号是()的。

A、分时复用B、分开传送C、混杂一起D、不需地址5.地址译码器的输入端应接到()上。

A、控制总线B、数据总线C、地址总线D、外部总线6.8253工作在BCD码计数据器时,若初值为100,则应写为()。

A、100HB、64HC、100D、100B7.8253()工作方式能产生连续方波输出。

A、方式0B、方式1C、方式2D、方式38.对8253的定时与计数()。

A、有两种不同的工作方式B、定时只加时钟脉冲,不设计数值C、实质相同D、从各自的控制端口设置9.微机中串口1的I/O地址范围是()。

A、3F0H—3F7HB、3F8H—3FFHC、2F0H—2F7HD、2F8H—2FFH10.并行接口没有()功能。

A、输出锁存B、输入缓冲C、模字量变成数字量D、物理量变成模拟量11.当8255端口PA、PB分别工作在方式2、方式1时,其PC端口引脚为()。

A、2位I/OB、2个4位I/OC、全部作应答联络线D、1个8位I/O12.接口的基本功能是()。

A、输入缓冲B、输出锁存C、输入缓冲,输出锁存D、编址使用13.8255A的工作方式设置为方式2,则表示()。

A、仅PA口用于双向传送B、仅PB口用于双向传送C、PA口和PB口都用于双向传送D、PA口和PB都不用于双向传送14.8086响应INTR中断的条件是()。

A、IF=1B、IF=1,当前指令执行完毕C、IF=0,当前指令执行完毕D、IF=015.计算机中广泛应用的RS-232C实质上是一种()。

福师大本科计算机接口技术作业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)哈尔滨工业大学本科毕业设计(论文)摘要学习计算机组成原理和计算机接口技术之中,“中断”是一个必须要学习的美容,计算机之所以能够“智能”的运行起来使得其更容易被人使用很重要的一点就是有了中断技术。

吉林大学2019-2020学年第一学期期末考试《计算机接口技术》大作业参考答案

吉林大学2019-2020学年第一学期期末考试《计算机接口技术》大作业参考答案

吉林大学网络教育学院2019-2020学年第一学期期末考试《计算机接口技术》大作业学生姓名专业层次年级学号学习中心成绩年月日作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word 文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word 文档格式),如有雷同、抄袭成绩按不及格处理。

一、简答题(每小题8分,共80分)1、计算机I/O接口有何用途?试列出8个I/O接口。

答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。

例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。

2、简述系统总线,AGP总线,PCI总线及ISA总线的作用。

答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速外设接口作为非高速外设与CPU或内存交换信息的通道。

3、存储单元的选择由什么信号控制?读、写靠什么信号区分?答:存储单元的选择由地址信号控制,而对存储单元进行读操作还是写操作则要靠读、写信号区分。

4、详细叙述总线缓冲器的作用。

答:总线缓冲器的作用主要是控制各路数据在总线上的交叉传送避免相互冲突,当几路数据都要向总线上传送时,就通过各路的缓冲器来解决,当一路传送时,缓冲器使其它各路数据与总线断开。

5、锁存器和寄存器有什么不同?答:锁存器与寄存器都是用来暂存数据的器件,在本质上没有区别,不过寄存器的输出端平时不随输入端的变化而变化,只有在时钟有效时才将输入端的数据送输出端(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,只有当锁存器信号到达时,才将输出端的状态锁存起来,使其不再随输入端的变化而变化。

计算机接口技术大作业

计算机接口技术大作业

计算机接口技术大作业课题名称:单路中断方式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。

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

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

小组成员:赖…,欧…,李…..一、设计任务及要求编写一实现电子琴的程序,并实现若干扩展功能。

基本功能:用8257键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:1、录音:记录所弹奏曲目2、放录音:任意时刻重放最新记录曲目3、在程序中可预设一曲目,按一键实现播放该曲目。

4、在播放录制曲目或预设曲目时,按8279键盘上任意键可以暂停播放,再按一次从暂停处继续播放。

5、程序运行时有友好的用户介面二、元件与仪器介绍本设计所要用到的元器件有:计时器8253,使用8088芯片的键盘控制器,并行控制器8255A,实验箱。

2.1 8253的介绍8253是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。

2.1.1 8253的工作原理8253是可编程的计数器/定时器,其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端及内部结构见下图。

当用8253做外部事件计数器时,在CLK端所加的计数脉冲由外部事件产生,这些脉冲的间隔可以不相等。

如果要用它做定时器,则CLK端应输入精确的时钟脉冲。

这时, 8253所能实现的定时时间决定于计数脉冲的频率和计数器的初值,即定时时间=时钟脉冲周期t c ×预置的计数初值n8253的控制逻辑由5个控制信号WR、CS、A1和A0组成,对应的操作见表1。

8253编程时,要对其控制字寄存器写入相应的控制字,控制字寄存器格式如表2所示。

其中: SC1, SC0———通道选择位。

为00, 01, 10分别表示选择0, 1, 2通道。

RL1, RL0——读/写操作位。

00 表示锁存数据,可随时读取计数器中的计数值; 01 表示只读/写低8位,高8位自动置为0; 10表示只读/写高8位,低8位自动置为0; 11表示读/写16位数据,先低8位,后高8位。

计算机接口技术课堂大作业(2)

计算机接口技术课堂大作业(2)

计算机接口课堂大作业(2)一、选择题(每题1分,共20分)1. 8255A引脚信号-----WR=0,-----CS=0,A1=1,A0=1时,表示()。

(A) CPU向数据口写数据 (B) CPU向控制口送控制字(C) CPU读8255A控制口 (D) 无效操作2. 在数据传送过程中,数据由串行变为并行,或由并行变为串行,这种转换是通过接口电路中的什么实现的()。

(A) 数据寄存器 (B) 移位寄存器 (C) 锁存器 (D) 状态寄存器3. 8255A既可作数据输入、出端口,又可提供控制信息、状态信息的端口是()。

(A) B口 (B) A口 (C) A、B、C三端口均可以 (D) C口4. 设串行异步通信的数据格式是:1个起始位,7个数据位,1个校验位,1个停止位,若传输率为1200,则每秒钟传输的最大字符数为()。

(A)10个(B)110个 (C)120个(D)240个5. 某系统采用8255A作并行I/O接口,初始化时CPU所访问的端口地址为0CBH,并设定为方式1输出,则A口的口地址应为()。

(A) 0C8H (B) 0CAH (C) 0CH (D) 0EH6. DMA工作方式时,总线上的各种信号是由()发送的。

(A) 中断控制器 (B) CPU (C) 存储器 (D) DMA控制器7. 异步串行通信的主要特点是()。

(A) 通信双方不需要同步 (B) 传送的每个字符是独立发送的(C) 字符之间的间隔时间应相同 (D) 传送的数据中不含有控制信息8. 连接到68000H~6FFFF地址范围上的存储器用8K×8位芯片构成,该芯片需要()片。

(A)4 (B)8 (C)6 (D)129. 两片8259A接成级联缓冲方式可管理()个可屏蔽中断。

(A) 2 (B) 15 (C) 16 (D) 25610. 两台微机间进行串行双工通信时,最少可采用()根线。

(A) 2 (B) 3 (C) 4 (D) 511. 若内存容量为64KB,则访问内存所需地址线()条。

吉林大学2020大作业-计算机接口技术 (2)

吉林大学2020大作业-计算机接口技术 (2)
OUT20H,AL
MOVAL,00110010B
OUT21H,AL
MOVAL,00010011B
OUT21H,AL
(2)如果显示E,则端口A送出的数据是30H;
如果显示O,则端口A送出的数据是01H;
程序如下:MOVAL,10000000B
OUT63H,AL
MOVAL,30H
OUT60H,AL
MOVAL,01H
(3)(3)PR分析后,把当前最高优先级的中断请求由INT送至CPU
(4)(4) 若IF=1,CPU执行完当前指令后,连续发出2个INTA信号
(5)(5) 接到第1个INTA后,8259A的ISR和IRR对应位分别置1清0
(6) 接到第2个INTA后,8259A把中断类型号送上数据总线
(7)CPU将收到的中断类型号乘以4,到中断向量表中获取中断向量,转入相应
20200415批次计算机接口技术
一、综合题(共6道小题,共60分)
1设8255的4个端口地址力90H 93H,将口置成方式0出,阳置成方式输入,作为输入口。要求编82587始化程序并设计证码电蹈(可选用任意芯片
解:
2.
存储器系统连接如下图,请分别写出图中第一组(1#. 2#) .第二组(3#. 4#)的地址分配范围。(写出具体步骤)
请在纸页上作答,并拍照上传。(分数: 8分)
2.
中断可分为哪几个阶段?在执行中断响应后,要完成哪些主要功能? CPU在进入中断响应周期,通过总线控制器发出二个连续中断应答信号INTA,为什么?
答:(1)IRQ0~IRQ7有中断请求,8259A的IRR的相应位置1
(2)IRR与IMR相应位比较后,封锁或发送中断请求给PR
(3)写出实现上述功能的8253初始化程序。

计算机接口技术大作业

计算机接口技术大作业

计算机接口技术大作业班级:姓名:学号:指导老师:设计内容:总结计算机接口技术发展,CPU可以选择8086或者单片机,应用所学芯片(不限于)8255、8251、8253、8237、8259、0809、0832、8279及总线接口相关知识,设计一套系统或一个小装置。

要求至少用到以上三款芯片或接口技术,提倡在proteus 中仿真,然后到实验室验证。

计算机接口技术发展微机系统中,接口处于微机总线与设备之间,进行CPU与设备之间的信息交换。

设置接口的目的有两条:通过接口实现设备与总线的连接;连接起来以后,CPU通过接口对设备进行访问,即操作或控制设备。

接口技术的基本内容包括设备接口设计和应用程序设计,实现把设备连接到用户总线(ISA)和完成对设备在应用层的访问。

接口技术的新内容包括总线接口设计和设备驱动程序设计,实现把用户总线(ISA)连接到PCI总线和完成对设备在windows操作系统核心层的访问。

设备驱动程序的程序结构,编程语言,开发工具和程序设计,调试,安装方法与应用程序完全不同,是现代微机接口技术的新内容。

接口技术的发展是随着微机体系结构(CPU,总线,存储器)和被连接的对象,以及操作系统应用环境的发展而发展的。

当接口的两端及应用环境发生了变化,作为中间桥梁的接口也必须发生变化。

这种变化与发展,过去是如此,今后仍然如此。

早期的计算机系统,接口与设备之间无明显的边界,接口与设备控制器做在一起。

到8位微机,在接口与设备之间有了边界,并且出现了许多接口标准。

早期计算机系统中并没有设置独立的接口电路,对外设的控制和管理完全由CPU直接操作。

由于微机技术的发展,其应用越来越广泛,外设品种和门类大大增加,且性能各异,操作复杂,因此,不设接口就不行了。

为了解决矛盾,开始在CPU与外设之间设置了简单的接口电路,后来逐步发展成为独立功能的接口和设备控制器,把对外设的控制任务交给接口去完成,这样大大减轻了主机的负担,简化了CPU对外设的控制和管理。

完整word版计算机接口技术大作业

完整word版计算机接口技术大作业

苏州科技学院电子与信息工程学院《计算机接口技术》大作业业:电子信息工程专级:班姓名:号:学月6年20121.设计内容:应用所学芯片8255、8251、8253、8237、8259、0809、0832及总线接口相关知识,在proteus中设计一套系统或一个小装置。

要求至少用到以上三款芯片或接口技术。

2.考核要求:1、设计具有基本完整的功能,具有可实现性;2、强调创新性和应用性,不与现有系统、产品雷同;3、硬件设计要求详尽,软件设计可以限于主要功能和关键部分4、自拟题目,题目要求新颖硬件设计3.3.1 设计思想硬件电路的搭建主要由8255A、8251和8253组成,利用地址译码器将8086芯片的端口地址分隔开,然后分给各个芯片。

3.2主要元器件介绍3.2.1 8255A模型页1第:各引脚功能如下采用双列直插式封装,共有40个引脚,8255 用来传送数据信息。

与单片机数据总线连接,D0--D7:三态双向数据线, CS:片选信号线,低电平有效,表示芯片被选中。

RD:读出信号线,低电平有效,控制数据的读出。

WR:写入信号线,低电平有效,控制数据的写入。

+5V电源。

Vcc: /输出线。

PA0--PA7:A口输入 /输出线。

:B口输入PB0--PB7 输出线。

口输入:C/PC0--PC7 :复位信号线。

RESET 内部端口。

A0:地址线,用来选择8255A1、:地线。

GND: 其控制逻辑为A1 A0 RD WR CS 工作状态A口数据-->数据总线0 0 0 1 0B口数据-->数据总线0 1 0 1 0C口数据-->数据总线1 0 0 1 0总线数据-->A口0 0 1 0 0总线数据-->B口0 1 1 0 0总线数据-->C口1 0 1 0 0总线数据-->控制字寄存器111页2第三态数据总线-->* * * 1 *1 非法状态0 1 0 1-->0 * 三态* 1 数据总线1//输出端口,两个工作方式控制电路,一个读8255内部包括三个并行数据输入8位总线缓冲器。

吉大18秋学期《计算机接口技术》在线作业一(满分)

吉大18秋学期《计算机接口技术》在线作业一(满分)

------------------------------------------------------------------------------------------------------------------------------ (单选题) 1: 系统规定:串行口1的中断号是( )A: 0BHB: 0CHC: 0DHD: 0EH正确答案:(单选题) 2: 一片1ntel8255A需占用()个端口地址。

A: 2B: 4C: 6D: 8正确答案:(单选题) 3: 将微处理器、内存储器及I/O接口连接起来的总线是()。

A: 片总线B: 外总线C: 系统总线D: 局部总线正确答案:(单选题) 4: 串行通信中,若收发双方的动作由同一个时钟信号控制,则称为()串行通信。

A: 同步B: 异步C: 全双工D: 半双工正确答案:(单选题) 5: 如果约定在字符编码的传送中采用偶校验,若接收到校验代码11010010,则表明传送中()。

A: 未出现错误B: 出现奇数位错C: 出现偶数位错D: 最高位出错正确答案:(单选题) 6: 同步串行通信的帧格式开头有同步字符SYNC,其作用是将“消息到达”通知( )A: 接收器B: 发送器C: 调制解调器D: CPU正确答案:(单选题) 7: 异步串行通信的接口电路中,提供准确的发送和接收时钟的模块是( )A: A发送器/接收器B: 比特率发生器C: 电平转换电路------------------------------------------------------------------------------------------------------------------------------ D: 接收/发送移位寄存器正确答案:(单选题) 8: 在8255的初始化程序中,使INTEA=1的目的是使()。

A: A口在中断方式下完成输入/输出操作B: B口在中断方式下完成输入/输出操作C: A口在查询方式下完成输入/输出操作D: B口在查询方式下完成输入/输出操作正确答案:(单选题) 9: 串行异步通信协议所规定的一帧数据中,允许最长的一帧数据共有()位。

计算机接口大作业

计算机接口大作业

《计算机接口技术及其应用》大作业电子琴设计班级:姓名 :学号 :指导老师:一、设计目的:1.掌握8255A、8253、DAC0832、8279的原理及连接方式,并学会综合应用;2.熟悉8255A、8253、DAC0832、8279芯片与PC机连接方式3.进一步巩固8255A、8253、DAC0832、8279的初始化和应用知识。

二、设计资料1.8255A8255A在使用前要写入一个方式控制字,共有三种;方式0 :基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1。

方式2:双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

2.82538253内部有三个计数器,分别成为计数器0、计数器1和计数器2。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

3.DAC0832一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。

输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。

根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。

8279可按其功能分为:键盘功能块;显示功能块;控制功能块,与CPU 接口功能块控制功能包括控制和定时寄存器,定时和控制,扫描计数器三部分,它主要用来控制键盘和 显示功能块工作。

《计算机接口技术》大作业

《计算机接口技术》大作业

苏州科技学院电子与信息工程学院《计算机接口技术》大作业专业:电子信息工程班级:姓名:学号:2012年6月1.设计内容:应用所学芯片8255、8251、8253、8237、8259、0809、0832及总线接口相关知识,在proteus中设计一套系统或一个小装置。

要求至少用到以上三款芯片或接口技术。

2.考核要求:1、设计具有基本完整的功能,具有可实现性;2、强调创新性和应用性,不与现有系统、产品雷同;3、硬件设计要求详尽,软件设计可以限于主要功能和关键部分4、自拟题目,题目要求新颖3.硬件设计3.1 设计思想硬件电路的搭建主要由8255A、8251和8253组成,利用地址译码器将8086芯片的端口地址分隔开,然后分给各个芯片。

3.2主要元器件介绍3.2.1 8255A模型8255共有40个引脚,采用双列直插式封装,各引脚功能如下:D0--D7:三态双向数据线,与单片机数据总线连接,用来传送数据信息。

CS:片选信号线,低电平有效,表示芯片被选中。

RD:读出信号线,低电平有效,控制数据的读出。

WR:写入信号线,低电平有效,控制数据的写入。

Vcc:+5V电源。

PA0--PA7:A口输入/输出线。

PB0--PB7:B口输入/输出线。

PC0--PC7:C口输入/输出线。

RESET:复位信号线。

A1、A0:地址线,用来选择8255内部端口。

GND:地线。

其控制逻辑为:8255内部包括三个并行数据输入/输出端口,两个工作方式控制电路,一个读/写控制逻辑电路和8位总线缓冲器。

各部分功能概括如下:(1)端口A、B、CA口:是一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。

B口:是一个8位数据输入/输出锁存器/缓冲器和一个8位数据输入锁存器。

C口:是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器(输入不锁存)。

通常A口、B口作为数据输入/输出端口。

C口作为控制/状态信息端口,它在“方式控制字”的控制下可分为两个4位端口,每个端口有一个4位锁存器,分别与A口、B口配合使用,作为控制信号输出或状态信息输入端口。

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

计算机中断技术大作业题目深入理解中断系统目录一:什么是中断 (2)中断的定义 (2)中断技术差生的原因 (3)中断技术差生的优点 (5)中断技术差生的缺点 (7)二:基本概念 (8)中断源 (8)我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。

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

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

因为中断计算机从一个只靠计算速度和存储量来来博得人们喜爱的机器变成了一个用户有好的聪明的机器。

本文将从几个问题入手来来逐一介绍计算机中断技术和中断系统。

一:什么是中断中断的定义在计算机科学中,中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理。

发出这样的信号称为进行中断请求(interrupt request,IRQ)。

硬件中断导致处理器通过一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。

中断在计算机多任务处理,尤其是实时系统中尤为有用。

这样的系统,包括运行于其上的操作系统,也被称为“中断驱动的”(interrupt-driven)。

上面是来自维基百科对中断定义。

个人认为中断就是计算机在执行程序的过程中,当出现异常情况或者是特殊请求时,计算机停止执行现行程序的运行,转向对这些异常情况或特殊请求的处理,处理后再返回到现行程序的间断处,继续执行原程序,这就是中断。

图中断处理过程打一个不太恰当的比方。

比如说你正在看书那么你就是CPU,看书就相当于你正在执行的程序,当你电话响了或者是有其他的事情发生导致你必须停下正在看的书去做另一件事(接电话)。

那么这就是一个中断,在这个中断中现行程序是看书,中断时电话响了,CPU是你自己。

当你接完电话之后(假设接完电话就没其他特殊的事了)那么你就回去看书,也就相当于定义中的返回执行原程序。

中断技术差生的原因讲了上面的内容也许你对中断概念有了一定的了解。

那么为什么会产生中断呢为了介绍为什么会产生中断我们有必要对计算机的组成结构和工作的过程来了解一下。

下图是计算机的组成结构。

图计算机组成结构可以看到计算机石油输入输出设备控制器运算器和存储器组成的,那么计算机是如何工作的呢计算机工作时,首先由键盘等输入设备。

输入程序和数据,程序和数据信息,通过J/O接口电路,经数据总线送入主存贮器中,接着CPU开始运行输入的指令,并处理输入的数据。

CPU要进行下列工作:⑴将指令的地址放到地址总线;⑵按着上述地址,通过数据总线在主存贮器中找到并取出指令,由指令译码器对该指令进行分析译码;⑶根据译码结果,取出指令所要处理的数据地址及相应的数据;⑷执行指令所代表的具体操作;⑸检查是否还有其它的控制信号,若有,则对定进行处理;⑹把执行指令后所得的指令结果、状态的标志信号、控制信号和定时信号提供给整个微机系统;⑺继续处理用户输入的程序和数据。

可以看到上在计算机工作过程中要始终检查有没有控制信号,而这控制信号中就有关于中断的控制信号。

在计算机系统中中断的例子有很多。

用户敲击键盘,每击一次键都要产生一个中断信号。

告诉CPU有“键盘输入发生了”,要求CPU读入键值。

至于为什么必须要读入键值呢其实很简单,在执行程序和用户控制两个事件之间显然是用户控制事件的优先级要高于执行程序的优先级。

要不你按下键盘电脑半天没有反应那你还不得把电脑踢了以I/O中断为例。

在I/O设备与主机交换信息时,由于设备本身机电特性的影响,其工作效率较低,与CPU无法匹配。

因此,CPU启动之设备之后,往往需要等待一段时间才能实现与I/O设备之间的信息交换。

如果在设备准备同时,CPU不做无所谓的等待,而继续执行现行程序,只有当I/O设备就绪向CPU提出请求后在暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。

中断是用以提高计算机工作效率、增强计算机功能的一重要技术。

最初引入硬件中断,只是出于性能上的考量。

如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待(Busy waiting,反复轮询该设备是否完成了动作并返回结果。

这就造成了大量处理器周期被浪费。

引入中断以后,当处理器发出设备请求后就可以立即返回以处理其他任务,而当设备完成动作后,发送中断信号给处理器,后者就可以再回过头获取处理结果。

这样,在设备进行处理的周期内,处理器可以执行其他一些有意义的工作,而只付出一些很小的、切换上下文所引发的时间代价。

后来被用于CPU外部与内部紧急事件的处理、机器故障的处理、时间控制等多个方面,并产生通过软件方式进入中断处理(软中断)的概念。

中断技术差生的优点先让我们感受一下中断机制对并发处理带来的帮助。

让我们用程序来探讨一下烧水问题,如果没有“中断”(注意,我们这里只是模仿中断的场景,实际上是用异步事件——消息——处理机制来展示中断产生的效果。

毕竟,在用户空间没有办法与实际中断产生直接联系,不过操作系统为用户空间提供的异步事件机制,可以看作是模仿中断的产物),设计如下:voidStayInKitchen(){boolWaterIsBoiled= false;while(WaterIsBoiled!= true ){boolVaporGavenOff= false;if(VaporGavenOff)WaterIsBoiled=true;elseWaterIsBoiled=false;}n”);n”);}voidwatching_tv(){while(1){编程异常通常叫做软中断2.? 软中断是通讯进程之间用来模拟硬中断的一种信号通讯方式。

3.? 中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能4.? 软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。

?硬中断:1.? 硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。

2.? 硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。

3.? 硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。

4.? 硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断不可屏蔽。

区别:1.? 软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的2.? 软中断是由程序调用发生的,而硬中断是由外设引发的3.? 硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等待较长时间NMI(不可屏蔽中断)& 可屏蔽中断非屏蔽中断是出现在NMI线上的请求,不受标志位IF的影响,在当前指令执行完以后,CPU就响应。

这种中断通常用于电源故障。

非屏蔽中断的优先权高于屏蔽中断。

可屏蔽中断I/O设备发出的所有中断(IRQ)都可以产生可屏蔽中断,受标志位IF的影响,根据中断循序标志的设置来判断CPU是否响应中断请求。

中断请求号 & 中断向量中断请求号就是中断编号。

中断向量中断服务程序的入口地址。

在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。

中断响应INTA & 中断周期中断响应INTA:当8259A接收到第一个/INTA有效的负脉冲后,将被响应的中断源置入ISR(正在服务寄存器)的对应位,即ISR对应位置1,同时把IRR(中断请求寄存器)的对应位清0;当8259A接收到第二个/INTA有效的负脉冲后,就将其中断类型号送入数据总线。

中短周期:当CPU采用中断方式实现I/O交换信息时,CPU在每条指令执行结束之后检查是否又中断请求,如果有就执行中断响应,又称中短周期。

单步中断 & IF中断允许标志位单步中断:执行一条指令中断一次。

IF中断允许标志位:标识寄存器中的一位,可以屏蔽可屏蔽中断请求INTR如果外设有可屏蔽中断请求INTR,而此时CPU内IF=0,那么CPU不会响应中断只有可屏蔽中断请求INTR和IF有关系,内中断和不可屏蔽中断NMI,都不受IF的影响IMR中断屏蔽字 & 中断优先级IMR中断屏蔽字:以实现对各中断的屏蔽。

中断优先级:为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。

中断控制器 & APIC中断控制器:中断控制器的功能就是在多个中断源的系统中,接收外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断子程序的处理过程后,中断控制器仍负责外部的中断请求的管理。

比如当某个外部中断的请求的优先级高于当前正在处理的中断优先级时,中断控制器会让此中断通过而到达CPU的INTR端,从而实现中断的嵌套,反之,对其它的级别较底的中断则给予禁止。

相关文档
最新文档