广工计算机接口与通信实验报告.docx
广工计算机接口与通信实验报告接口与通讯实验报告1、8253定时/计数器实验2、8255并行接口实验3、数字式时钟(电子钟)4、D/A(数/模)转换实验5、A/D(模/数)转换实验学生学院.计算机学院专业班级学号311000学生姓名指导教师2013年1月1日计算机学院2010级计算机科学与技术专业四班组、学号3110006015姓名张法光协作者教师评定实验题目8253定时/计数器实验一、实验目的与要求学习8253可编程定时器/计时器定时方法。学习8253多级串联实现大时间常数的定时方法。学习8086/86操纵8253可编程定时器的方法。二、实验内容用8253对标准脉冲信号进行计数,就能够实现定时功能。用板上的IMHZ作为标准信号,将8253可编程计数器/定时器的时间常数设在I(X)O(X)O次,就能够在定时器的管脚上输出1秒针高/1秒钟低得脉冲信号。由于8253每个计数器只有十六位,要用两个计数器才能实现一百万次的技术,实现每一秒输出状态发生一次反转。1、实验电路3ad1ad2ai>3ad4ai>5湍 XAOAIOVTOGATEDCLKOVCCOirrtGATEICLKlCSRDGNOWROuT2AOGATE2AICLK2L2GNDIMHz ljui82532、实验连线8253的CS,接地址译码CS4,8253.GATEO,接VCe(是+5V),8253.GATE1,也接VCC(是+5V)。8253.CLK1,接IMHz。具体连线见下表:连接孔】连接孔2连接孔1连接孔2连接孔1连接孔2CS4-8253/SVCC-8253.GATE0VCC-*8253_GATE1若8253的CS接地址孔COoOHCLO-8253.OUT0IMHz-*8253CLK1则:计数器0地址为C(XX)Ho8253_0UTI-8253-CLK0计数典1地址为C1H.计数盟2地址为C2H.控制口地址为C3H.仙,3、实验原理8253即可做定时器又可作计数器:(1)计数:计数器装入初值后,当GATE为高电平常,可用外部事件为CLK,脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,在OUT端输出一个标志信号。(2)定时:计数器装入初值后,当GATE为高电平常,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。8253操纵字0S253A控制字S;4JJ/抖制:Q三-ltt.1三6CD工作方式逸身:000方AoFO选计数器0-Ol选计数器1TD选计数卷2Ll 作法OOl方式1XlO方式2Kll方式3 100方丈4101方4500计数器榻存命令01只由小;低8位,高81才口动置010只读/弓高8位,低8位口动KO115tft8ft.后弓高8传三、实验程序与注释CONTROIequ0c003h;操纵口地址COUNTOequOcOOOh;计数器。地址COUNTlequOcOOlh;计数器1地址C0UNT2equ0c002h;计数器2地址codesegmentassumecs:codestartprocnearmoval,36H(00110110B);计数器0,16位,方式3,二进制movdx,CONTROLoutdx,al;将操纵字写入操纵寄存器movax,1000;在计数器0中写入初值movdx,COUNTOoutdx,al;计数器低字节moval,ahoutdx,al;计数器高字节moval,76H(01110110B):计数器1,16位,方式3,二进制movdx,CONTROLoutdx,al;将操纵字写入操纵寄存器movax,1000;在计数器1中写入初值movdx,COUNTloutdx,al;计数器低字节moval,ahoutdx,al;计数器高字节jmp$startendpcodeendsendstart若改用方式2,并改变时间常数。如何修改程序。(程序段加粗为修改部分)CONTROIequ0c003h;操纵口地址COUNTOequOcOOOh;计数器。地址COUNTlequOcOOlh;计数器1地址C0UNT2codeequ0c002hsegmentassumecs:codestartprocnear;计数器2地址moval,34H(00110100B);计数器0,16位,方式2,二进制movdx,CONTROLoutdx,al;将操纵字写入操纵寄存器movax,5000;在计数器0中写入初值movdx,COUNTOoutdx,al;计数器低字节moval,ahoutdx,al;计数器高字节moval,74H(01110110B);计数器1,16位,方式2,二进制movdx,CONTROLoutdx,al;将操纵字写入操纵寄存器movax,200;在计数器1中写入初值movdx,COUNT1outdx,al;计数器低字节moval,ahoutdx,al;计数器高字节jmp$startendpcodeendsendstart计算机学院2010级计算机科学与技术专业四班组、学号3110006015姓名张法光协作者教师评定实验题目8255并行接口实验一、实验目的与要求1 .熟悉8255芯片结构及编程方法。2 .熟悉8255输入/输出实验方法。二、实验内容利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输出,PB口作输入。1、实验电路01N34s7 DDDDDDDD AJOAl/WR/RDZiRESETCSO 一AOAI/WR/RDRESETZCSDDDDDDDD Eeeujeeee Lll-Illlj 三二二一e1234SG7 Kkkkkkkk 二三三 二二二一一 12、实验连线8255的CS,接地址译码/CS0°PA0-PA7(PA口)接LED0-LED7(LED),PB0PB7(PB口)接K0-K7(开关量)。数据线、读/写操纵、地址线、复位信号板上已接好。连接孔1连接孔2连接孔1连接孔2连接孔1连接孔2CSO8255.CSLO8255-PA0KO8255-PB0注:若8255的CS接地址Ll8255-PA1Kl8255-PB1孔8000HoL28255-PA2K28255-PB2则PA口地址为8000HL38255-PA3K38255-PB3PB地址为800IHL48255-PA4K48255-PB4PC地址为8002HL58255-PA5K58255-PB5操纵口地址为8OO3HL68255-PA6K6T8255-PB6L78255-PA7K78255-PB73、实验原理可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。本实验使用是方式0:PA,PC口输出,PB口输入。*8255操纵字OS255控工:字(1)方式R拧KtN71.pc3oIrN人.FBUluA.力式逸押:方K0-0.OMfll1-AtUP41除入0KllllPAIJ.1AA.ZlKaff:oo,方式oO1'1Ix=方大2方式作七效011三、实验程序与注释modeequ82H:1000001OB;方式0,PA,PC输出,PB输入;Port A;Port B;Port C;操纵字地址PortAequ8OOOhPortBequ800IhPortCequ8002hCAddrequ8003hcodesegmentassumecs:codestartprocnearStart:moval,modemovdx,CAddroutdx,al;输出操纵字movdx,PortCoutal,dx;输出到PortCmovdx,PortBindx,al;输入PortBmovdx,PortAoutdx,al;输出到PortAmovah,200calldelayjmpStartendpdelayprocnear;入栈保护现场pushaxmoval,0pushexmovex,axloop$;出栈恢复现场popCXpopaxretdelayendpcodeendsendstart若将B与C口的功能对调(连线对调),如何编写程序。(程序段加粗为修改部分)modeequ89H;10001001B,方式O,PA,PB输出,PC输入PortAequ8000h;PortAPortBequ8001h;PortBPortCequ8002h;PortCCAddrequ8OO3h;操纵字地址codesegmentassumecsxodestartprocnearStart:moval,modemovdx,CAddroutdx,al;输出操纵字movdx,PortCinal,dx:读入PortCmovdx,PortBoutdx,al:输出到POrtBmovdx,PortAoutdx,al;输出到PortAmovah,200calldelayjmpStartendpdelayprocnearpushaxmoval,0pushexmovex,axloop$popexpopaxretdelayendpcodeendsendstart计算机学院2010级计算机科学与技术专业四班组、学号310006015姓名张法光协作者教师评定实验题目数字式时钟(电子钟)一、实验目的与要求进一步掌握定时器的使用与编程方法。进一步掌握中断处理程序的编程方法。进一步掌握数码显示电路的驱动方法。二、实验内容利用CPU的定时器与试验仪上提供的数码显示电路,设计一个电子时钟。格式如下:XXXXXX由左向右分别为:时、分、秒。1、实验电路段码输出(OxO(MH)选通信号(OXoO2H)2、实验连线连接孔1连接孔2连接孔1连接孔2CS48253_CSCSOKEYLED.CSVCC8253_GATE1CS58259CSIMHz8253_CLK18253-OTl8259JNT03、实验原理关于8088的实验,8255做定时器,用定时器输出的脉冲操纵8259产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循环中用LED显示时间。8253用定时/计数器1,8253片选接CS4,地址为0C000H,8253时钟源CLKl接时钟信号1MHz。8253的GATEl接VCCo8259中断INTO接8253的OUTl,片选接CS5,地址为ODOOOIL显示电路的KEY/LEDCS接CSO,地址为08000H。定时器没IOoUS中断一次,在中断服务程序中,对中断次数进行技术,100us计数100OO次就是1秒。然后再对秒计数得到分与小时值,并送入显示缓存区。4、实验程序框图三、实验程序与注释;本实验利用8253做定时器,用定时器输出的脉冲操纵8259产生中断;在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循;环中用LED显示时间。;8253用定时器/计数器L8253片选接CS4,地址为OCOOoH。8253时钟;源CLKl接分频电路的F/16输出o分频器的Fin接IMHz时钟。8253的;GATEl接VCCo;8259中断INTO接8253的OUTL片选接CS5,地址为ODOooH。;显示电路的KEY/LEDCS接CSO,地址为08000H。CONTROLequ0c003hCOUNTOequOcOOOhCOUNTlequOcOOlhC0UNT2equ0c002hmd8255equ82h;8255工作方式PA8255equ8000h;8255PA口输出地址CTL8255equ8003h;8255操纵口地址OUTBITOUTSEGequ08002hequ08004h;位操纵口;段操纵口TCWlequ13H;(OOo100llB),单片8259,上升沿中断,要写ICW4ICW2equ20H(OolOOoOoB),中断号为20HICW4equOlH;(00000001B),工作在8086/88方式OCWlequFEH;(IlIlIII0B),只响应INTo中断CS8259AequOdOOOh;8259的基地址与偶地址CS8259BequOdOOlhdatasegmentCNTdb0LEDBufdb6dup(?);显示缓冲Numdb1dup(?);显示的数据DelayTdb1dup(?)Hourdb0Minutedb0Seconddb0LEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hdataendscodesegmentassumecs:code,ds:dataDelayprocnearpushax;延时子程序pushexmoval,0movex,axloop$popCXpopaxretDelayendpDisplayLEDprocnearmovbx,offsetLEDBufmovmovDLoop:movmovoutmovmov outmovmov outpush mov callpopshr inc dec jnzmovmovoutretDisplayLED )IEnter proc push pushincmovcmp jnemov incmovcmp jnecl,6;共6个八段管ah,20h;00100000b,从左边开始显示dx,OUTBITal,0dx,al;关所有八段管al,bxdx,OUTSEGdx,aldx,OUTBITal,ahdx,al;显示一位八段管axah,1Delayaxah,1bxclDLoopdx,OUTBTTal,0dx,al;关所有八段管nearaxdxSecondal,Secondal,60ExitSecond,0Minuteal,Minuteal,60ExitmovMinute,0incHourmoval,Hourcmpal,24jneExitmovHour,0Exit:movdx,CS8259Amoval,20h;中断服务程序结束指令outdx,alpopdxpopaxiret!EnterendpITnitprocmovdx,CS8259Amoval,ICWloutdx,almovdx,CS8259Bmoval,ICW2outdx,almoval,TCW4outdx,almoval,OCWloutdx,alretITnitendpstartprocnearmovax,datamovds,axmovHour,0movMinute,0movSecond,0climovmovax,0ds,axmoval,7611;Oil10110B,计数器1,16位,方式3,二进制movdx,CONTROLoutdx,almovax,62500;设定计数值,16US计数62500次就是一秒movdx,COUNTloutdx,al;计数器低字节moval,ahoutdx,al;计数器高字节moval,MD8255;设定8255工作方式movdx,CTL8255outdx,almovbx,4*TCW2;中断号movax,codeshlax,4;x16addax,offset!Enter;中断入口地址(段地址为0)movbx,ax;以段地址加上中断处理程序偏移地址注册中断向量表movax,0incbxincbxmovbx,ax;代码段地址为0callITnitmovax,datamovds,axmovCNT,0;计数值初始为0moval,CNTmovdx,PA8255outdx,alstiLP:;等待中断,并计数。moval,Hourmovah,0movcl,10divclmovch,ahmovah,0movbx,offsetLEDMAPaddbx,axmoval,bxmovLEDBuf,almovbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,bxoral,80hmovLEDBuf+1,almoval,Minutemovah,0movcl,10divclmovch,ahmovah,0movbx,offsetLEDMAPaddbx,axmoval,bxmovLEDBuf+2,almovbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,bxoral,80hmovLEDBuf+3,almoval,Secondmovah,0movcl,10divclmovch,ahmovah,0movbx,offsetLEDMAPaddbx,axmoval,bxmovLEDBuf+4,almovbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,bxoral,80hmovLEDBuf+5,alcallDiSPlayLEDjmpLPstartendpcodeendsendstart1、若使用IRl做中断源,如何编写程序?答:将OCWl的操纵字改为FDH(U1U101B)2、将电子钟的秒速变慢,如何编写程序?答:8253时钟源CLKl接分频电路的F/16输出。分频器的Fin接4MHz时钟。同时把电子时钟实验程序段中8253的计数值修改为250000o四、心得体会第一次上机是做8253定时计数器实验,因此印象十分深刻。加上实验老师在上次实验结束后提醒了电子时钟是个综合性实验,难度相对较大,建议我们提早预习。为了更好地懂得实验原理与具体操作,提早复习了定时器的使用与编程方法,同时上网查询了8259中断操纵处理程序的实验原理。实验的关键在于计数的实现与中断操纵的调用,对8253与8259初始化与写入各端口操纵字等。最终在实验课中完成了这看似复杂的电子时钟实验,本次实验比想象中做得顺利,得益于实验前的预习与实验课程上老师的讲解。事实上综合性实验并不是很难,关键在于对实验原理的懂得与动手操作,逐步付诸实践。计算机学院2010级计算机科学与技术专业四班组、学号310006015姓名张法光协作者教师评定实验题目D/A(数/模)转换实验一、实验目的与要求1、熟悉D/A转换的基本原理。2、熟悉D/A转换芯片0832的性能及编程方法。3、熟悉单片机系统中扩展D/A转换的基本方法。二、实验内容利用DACO832,编制程序产生锯齿波、三角波、正弦波。三种波轮番显示,用示波器观看。1、实验电路2、实验连线连接孔1连接孔2CS2-DA_CS-5V5V-逻辑波形L33、实验原理这是用总线器件做的ADC实验,关于MCSI96,LPC2103,芯片已经带有ADC转换电路,也能够用片上的ADC进行模数转换。(I)D/A转换是把数字量转换成模拟量的变换,试验台上D/A电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过差白哦来实现波形显示。(2)产生锯齿波与三角波的表格只需由数字量的增减来操纵,同时要注意三角波要封端来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高些。木例使用的采样点为256点/周期。(3)3为D/A转换的输入数据与输出电压的关系为U(0-5V)=Uref256*N与U(-5V+5V)=2*Uref256*N-5(这里的Uref为+5)4、实验程序框图三、实验程序与注释CS0832equ8000hdatasegmentassumeds:dataSinData:;正弦数字量表DBOCOH,0C3H,0C6H,0C911,OCC11,OCHI,0D2H,0D5HDB0D8ll,ODBIl,ODEH,OEO11,0E3H,0E6H,0E8H,OEAHDBOEDH,OEFH,OFlH,0F311,0F5H,0F6H,0F8H,0F91IDBOFBH,OFCH,OFD11,OFE11,OFEH,OFFH,OFFH,OFFHDBOFFH,OFFH,OFFH,OFFH,OFEH,OFEH,OFDH,OFCIIDBOFBH,0F9H,0F8H,0F6II,0F5H,0F3H,OFlH,OEFHDBOEDH,OEAIl,0E8H,0E611,0E3H,OEOH,ODER,ODBHDB0D8H,0D5H,0D2H,OCFH,OCCH,0C9H,0C6H,0C3HDBOCOH,OBCH,0B9H,0B6H,0B3H,OBOH,OADH,OAAHDB0A7H,0A4H,OAlH,9FH,9C11,99H,97H,95HDB92H,9011,8EH,8CH,8AH,89H,8711,8611DB84H,83H,82H,8111,8111,80H,8011,8011DB80H,8011,80H,80H,8111,81H,8211,8311DB84H,8611,87H,89H,8AH,8CH,8EH,9011DB92H,95H,97H,99H,9CH,9FH,OAlH,0A4HDB0A7H,OAAH,OADH,OBO11,0B3H,0B6H,0B911,OBCIIendscodesegmentassumecs:codeprocDelaynearpushexmovex,axDelayLoop:;延时子程序nopnopnopnopnopnoploopDelayLooppopexretendpprocOutputDAnear;输出子程序movdx,CS0832ShOwSin near ;显示正弦波 ex bx, 400H + offset SinData ex, 80h;循环显示波形 al, bx OutputDA bxax, 40;延时操纵DelayShoWSinLOoP ex;显示三角波;显示方波outretendpprocpushmovmovShowSinLoop:movcallincmovcallloopPOPretendpprocpushmovmovShowTriLoop:movcallincmovcallloopPOPretendpprocpushmovcallmovdx,alShowTrinearexbx,80hex,80hal,blOutputDAbxax,40DelayShowTriLoopexShowSqnearexal,80hOutputDAex,10Dl:movcallloopax,200DelayDlmoval,OffhcallOutputDAmovex,10D2:movax,200callDelayloopD2POPCXretendpstartprocnearmovax,0movds,axmoves,axMLoop:movex,100MDl:callShowSinloopMDlmovex,100MD2:callShowTriloopMD2movex,100MD3:callShowSqloopMD3jmpMLoopstartendpcodeendsendstart效果图:思考题:1、假如要将其中的正弦波去掉,如何修改程序。答:删除正弦数字量表Sindata与正弦波输出调用的有关代码。2、编写一个三角波。答:procShowTrinear;显示三角波pushexmovex,80hShowTriLoop:movex,Offhmoval,OOhrl:moval,blcallOutputDAincal;上升沿looprlmovex,Offhr2:decal;下降沿moval,blcal1OutputDAloopr2jmpShowTriLooppopexretendp计算机学院2010级计算机科学与技术专业四班组、学号310006015姓名张法光协作者教师评定实验题目A/D(模/数)转换实验一、实验目的与要求1、掌握A/D转换与微处理的借口方法。熟悉A/D芯片ADCO809转换性能及编程。2、通过实验熟悉微处理如何进行数据采集。二、实验内容利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换为二进制数字量,用8255的PA口输出到发光二极管显示。A/D转换器大致有三类:一是双积分A/D转换器,有点事精度高,抗干扰性好;价格便宜,但熟读满;而是主次逼近A/D转换器,精度,熟读,价格适中;三十并行A/D转换器,速度快,价格也昂贵。实验用的ADCO809属第二类,记住次逼近A/D转换器是八位A/D转换器。1、实验电路IH-7IN-2CLOCK IKUll ADCO8092、实验连线违接孔1五接孔2it接孔1五接孔2ICSl一8255CSLO-8255-PA0CSO一AD.CSLl一8255-PA1电付典山-INOL2一8255-PA2L3一8255-PA3若以中断方式实现数据采L4一8255-PA4柒,将0809的EOC信号接到L5一8255-P58259中断控制器的INO中断L6一8255-PA6MLL7一8255-PA7123.S67 eAO2AC>At>2AC>AO, 123.567 12 3 4 7 Aaaaaaaa BBeeBBBO ,ppp, RrrrrpprCT 12)4S? D nuB C Dddooood MA 八/ 0 / H ±q,123.667 DDDDDDDD Ccccccce3、实验原理实验用的ADCO809逐次逼近A/D转换器是八位A/D转换器。每采集一次通常需要lOOus。本程序是用演示查询的方式读入A/D转换结果。也能够用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与CPU的外部中断相接。4、实验程序框图三、实验程序与注释modeequ082h;8255工作字IOoOooIOB,方式0,A、C口输入,B输入PAequ09000h;8255A口地址CTLequ09003h;8255A操纵地址CS0809equ08000h:AD转换器端口codesegmentassumecs:codestartprocnearmovbx,Of123hmovax,5678hmovbx,axmovax,bxmovax,1234hmovbx,5678haddax,bxmovbx,400hmovbx,axmoval,modemovdx,CTLoutdx,alagain:moval,0movdx,CS0809outdx,al;起动A/Dmovex, 40hloop $inal, dx;延时 > IOoUS;读入结果movdx,PAoutdx,aljmpagaincodeendsendstart若以中断方式实现数据采集,将0809的EOC信号接到8259中断操纵器的INO中断源。并在中断服务程序里读取A/D转换值,如何编写程序。答:START:MOVAX,DATAMOVDS,AXMOVDI,OFFSETBUFFMOVAL,OAHMOVAH,35HINT21H;取IRQO中断服务程序入口地址ES:BXPUSF1ES;保护ES,BX,DSPUSHBXPUSFDSMOVAX,SEGADINT;填写中断向量表(N=OAH)MOVDS,AXMOVDX,OFFSETADINTMOVAL,OAHMOVAH,25HINT21HPOPDS;恢复DSINAL,2IHMOVBP,AX;保护中断屏蔽寄存器内容于BP中ANDAL,11111110BOUT21H,L;同意IRO中断MOVCX,300HMOVDX,203H;8253初始化,0通道方式3MOVAL,36HOUTDX,ALMOVDX,200HMOVAL,IOH;初值得OOlOHOUTDX,ALMOVAL,OOHOUTDX,ALCCC:STIMOVDX,220HOUTDX,AL;启动一次A/D转换HLTCLI;关中断MOVAX,SI;MZA/D转换结果MOVAH,25HINT21HMOVAX,BP;恢复中断屏蔽寄存器内容OUT21H,ALWAIT_IN:MOVAH,1;程序暂停,等待键入INT21HMOVSI,OFFSETBUFFCALLCRTSETEXIT:MOVAX,4C00H;结束INT21HADINTPROCNEAR;中断服务程序PUSHAX;保护AXPUSHDX;保护DXMOVDX,220H;读人力转换结果INAL,DXMOVSI,AX;送SlMOVAL,20HOUT20H,AL;发中断结束命令POPDXPOPAX;恢复IRETADINTENDPCODEENDSENDSTART