北京邮电大学微机原理硬件实验报告.doc

上传人:s****u 文档编号:12807887 上传时间:2020-05-25 格式:DOC 页数:31 大小:795.01KB
返回 下载 相关 举报
北京邮电大学微机原理硬件实验报告.doc_第1页
第1页 / 共31页
北京邮电大学微机原理硬件实验报告.doc_第2页
第2页 / 共31页
北京邮电大学微机原理硬件实验报告.doc_第3页
第3页 / 共31页
点击查看更多>>
资源描述
微机原理与接口技术硬件实验报告学 院:信息与通信工程学院 班 级:201* 学生姓名:* * 学 号:201* 201*班内序号:* * 实验一 熟悉实验环境及IO的使用一、 实验目的:1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用 Debug 的 I、O 命令来读写 IO 端口。 3. 学会 Debug 的使用及编写汇编程序二、实验内容:1. 学习使用 Debug 命令,并用 I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用 EDIT 编辑工具)实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮)三、实验步骤: 1.实验板的 IO 端口地址为0E8E0H在 Debug 下, I 是读命令。(即读输入端口的状态-拨码开关的状态) O 是写命令。(即向端口输出数据-通过发光管来查看) 进入 Debug 后, 读端口 拨动实验台上八位拨码开关 输入 I 端口地址回车 屏幕显示xx表示从端口读出的内容,即八位开关的状态 ON 是 0,OFF 是 1 写端口输入O端口地址xx (xx 表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在 Debug 环境下,用 a 命令录入程序,用 g 命令运行CDebug -amovdx, 端口地址 moval,输出内容 outdx, al movah, 0bhint21h oral, al jz0100 int20h -g 运行查看结果 ,修改输出内容 再运行查看结果 分析mov ah, 0bh int 21h oral, al jz0100 int 20h 该段程序的作用:检测键盘有没有按键,有则返回DOS。没有继续执行3.利用 EDIT 工具编写汇编写跑马灯程序程序 实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。B.通过输出端口控制灯的工作状态(低电平灯亮) CEDIT 文件名.asm录入程序 按 Alt 键 打开菜单 进行存盘或退出编译文件 CMASM 文件名.asm连接文件 CLINK 文件名.obj运行文件 或用 Debug 进行调试。四、程序流程图软件程序流程图:开始检测拨码开关最低位=1?中间位=1?最高位=1?按照速度设定向右运动按照速度设定向左运动结束YNYNNY硬件连线图:五、源程序代码:DAT SEGMENTNUM DB 0EFHDAT ENDS;定义数据段STA SEGMENT STACKSTACKDB 100 DUP(?)STA ENDS;定义堆栈段COD SEGMENTASSUME CS:COD,DS:DAT,SS:STASTART PROC FARPUSH DSMOV AX,0PUSH AX;使用第一种返回DOS的方式MOV AX,DATMOV DS,AXMOV DX,0E8E0H;输出端口设置LOOP0:IN AL,DXMOV AH,ALTEST AL,01HJZ GG;最低位为1则程序结束TEST AL,02H;检测中间位JZ LOOP0;若输入端为0则继续等待TEST AL,04H;JZ RR;跑马灯向右运动ROL NUM,1;跑马灯向左运动JMP LOOP2RR:ROR NUM,1;原数据循环右移,使得跑马灯向右跳转LOOP2:AND AH,1FHMOV CL,AH;设置子程序调用的次数,间接控制延迟时间MOV CH,0; MOV AL,NUMOUT DX,ALINC CXLOOP1:CALL DELAY;调用延时子程序LOOP LOOP1JMP LOOP0;返回等待输入过程GG:RETFSTART ENDP;延时子程序DELAY PROCPUSH CXMOV CX,008FFH;外循环过程D1:PUSH CXMOV CX,004FFH;内循环过程D2:LOOP D2POP CXLOOP D1POP CXRETDELAY ENDP;COD ENDSEND START六、思考题:通过实验说明用 debug 中的 a 命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。答:在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数。七、实验收获和体会:本次试验涉及到了计算机对于外部设备的控制的基本过程,我们主要学会如何在debug环境下编写I/O命令对于外部设备进行输入和输出。具体而言,利用命令点亮了LED灯,以及读取了拨码开关的状态。通过上述读写的操作,以及编写子程序等过程完成了跑马灯的实现。由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕捉,呈现出了八个LED灯都亮的状态,不符合要求。于是我们将循环延迟的子程序改成了两层,并且由于输入端的拨码开关一共有三个可以控制跑马灯的模式,其中一个控制开关,另一个控制方向(可左可右),另一个辅助控制跑马灯的速度。实际上我们在跑马灯开启状态下,读入三个拨码开关的状态并且将其转化为三位的二进制数,并且将这个二进制数作为控制延迟子程序的调用次数,从而实现了两种方向下七种速度的实现(本应该有八种,但是一种是关闭状态)。实现了功能的拓展和创新。我们通过本次实验,基本学会了汇编语言代码的编写,熟悉了DEBUG的工作环境和调试过程,并且对于计算机控制外部设备有了更客观清醒的认识,为今后汇编学习做了更充分的准备。实验二 8255A并行接口应用一、 实验目的:1.掌握 8255A 的功能及方式 0、1 的实现 2.熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 3.了解七段数码管显示数字的原理。 4.掌握同时显示多位数字的技术。二、实验内容:在实验一的基础上学习 PIO 芯片(8255)编程应用,熟悉平台的主要内容。CS 用 Y0 (E800H)(一) 简要说明:在方式 0(输入/输出)下,以 A 口为输出口,B 口为输出口, A 口接六个共阴极数码 管的八位段码,高电平点亮数码管的某一段, B 口接数码管的位选(即要使哪个数码管亮), 高电平选中某一位数码管点亮。8255A 中A 端口地址E800H B 端口地址E801HC 端口地址E802H控制地址E803H 八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的 I、O 命令来做。三、程序流程图:软件程序流程图:程序一:静态显示学号8255初始化开始待显示字符地址给BX点亮第一个字符熄灭依次点亮后面的字符检测键盘返回DOSYN程序二:动态显示hello8255初始化从端口读入数据,改变速度显示所需字符键盘是否有输入所需显示字符的地址加1或者返回最初地址程序结束,返回DOSNY硬件连线图:四、源程序代码 :程序一:显示静态学号DATA SEGMENT SHOW DB 0F4H,21H,0EDH,0F1H,0D9H,0EDH ;210350的ASCII码值COUNT EQU $-SHOW SL DB ? DATA ENDSSTACK SEGMENT STACKSTACKDB 100H DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK;延时子程序-DELAY PROC PUSH CX MOV CX,800HDELAY1: PUSH CX ;外层循环 MOV CX,400HDELAY2: LOOP DELAY2 ;内层循环 POP CX LOOP DELAY1 POP CX RETDELAY ENDP;主程序-START : MOV AX,DATAMOV DS,AX NEXT: MOV CX,COUNT ;字母个数LEA BX,SHOWMOV SL,01HAGAIN: MOV AL,80H MOV DX,0E803H OUT DX,AL ;设置输出端口MOV AL,SLMOV DX,0E801H OUT DX,ALMOV AL,BXMOV DX,0E800H OUT DX,AL ;数码管显示已经保存在数据段的数字 MOV AL,00H MOV DX,0E800HOUT DX,AL ;清除原有字符 INC BX ;增加BX数值,显示下一个数字SHL SL,1 ;Sl左移依次向左选通数码管 LOOP AGAIN ;循环此过程MOV AH,0BH INT 21HOR AL,ALJZ NEXTOK: MOV AH,4CHINT 21HCODE ENDSEND START程序二:动态显示HELLODATA SEGMENT MESG DB 0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0 DATA ENDS STACK SEGMENT STACK STACK DB 100 DUP(0)STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV AL,80H MOV DX,0E803H OUT DX,AL LOP6:MOV BX,OFFSET MESG MOV CX,07H LOP5:MOV DX,0E8E0H ;从端口读入数据 IN AL,DX INC AL AND AL,07H XOR AH,AH MOV DX,AX ;DX值设置为外循环次数LOPZ:CALL DISP ;显示子程序调用 DEC DX JNZ LOPZ ;显示当前状态直至DX=0 INC BX ;BX决定哪个数码管应被点亮 LOOP LOP5 ;重新设置数码管移动速度 JMP LOP6 ;当六种状态都结束后重新开始显示“HELLO”过程MAIN ENDP;显示子程序-DISP PROC NEAR PUSH CX PUSH DX PUSH AX MOV BP,0044H ;控制显示速度LOPX:XOR SI,SI MOV CX,06H ;每次记录六个数码管的状态 MOV DX,0E800H ;从外部设备读入数据 MOV AH,00000001B ;每次显示一个数码管LOP2:MOV AL,MESGBX+SI OUT DX,AL MOV AL,AH ;决定显示哪一个数码管 INC DX OUT DX,AL ;控制哪一个LED灯亮 DEC DX ROL AH,1 ;使得下一个LED灯亮 INC SI CALL DELAY ;调用延时子程序 CALL KEY ;检验按键是否有输入 LOOP LOP2 ;循环执行LOP2直到所有六个数码管都被点亮 DEC BP JNZ LOPX ;外层循环,控制显示时间 POP AX POP DX POP CX RET DISP ENDP;返回DOS子程序-KEY PROC NEAR ;检测键盘输入 PUSH AX MOV AH,0BH INT 21H OR AL,AL JZ GOON ;没有键盘输入则跳向GOON MOV AH,4CH ;有任意输入则返回DOS INT 21HGOON:POP AX RETKEY ENDP ;延时子程序-DELAY PROC PUSH AX PUSH CX MOV AX,0002H ;外层循环LOPD: MOV CX,0H LOOP $ ;内层循环 DEC AX JNZ LOPD POP CX POP AX RETDELAY ENDP CODE ENDS END MAIN五、实验心得与体会: 这次的实验里我学习了使用8255芯片进行并口接口的应用,先用了I/O命令检测出了数码管的显示规律和段选规律。在实际编写代码时,应该时刻都记住实际上数码管显示图形时,我们看到多个数码管的显示都是逐个选通。应该给数码管加入高于24*6Hz的始终使得人眼无法分清数码管是被依次点亮。在HELLO的动态显示时,这个问题更加复杂,不仅需要在每次显示时数码管被逐个点亮,还需要在每经过一个显示周期,HELLO字符都左移1位,这无法通过二进制数的左右移位实验,而需要另外编写代码。另外还需要注意就是在实验中,每次换下一个数码管显示的时候还会显示之前数码管已经显示的字符,需要将原来的显示清零,才能呈现出所需的左右移动的变化过程。本次过程经过多次调试,另外还经历了电脑死机、板子失灵、无法返回DOS等问题的干扰。但最终我和组员能够相互协作,并且认真分析一些bug出现的原因,并且及时分析修改代码,使得我们能最终顺利完成实验,收获颇丰。实验三 8253计数器/定时器的应用一、实验目的:学习掌握8253用作定时器的编程原理二、实验内容:1 完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。三,电路测试与连接测试:在Debug状态下,用“O”命令测试8353的发生功能,3组通道工作是否正常。电路连接: 8253的CS接译码器输出Y1 其地址为E820-E827H8253的OUT接蜂鸣器的BELL端8253的门控信号GATE接+5V8253的CLK端接Q7(32KHz)清零复位电路中的T/C端接地(或接RESET端)注意:由于8253计数速率应小于2MHz,CLK0的输入信号必须由8MHz经393分频到小于2MHz后使用。393分频之后,Q0输出为4MHz,Q1输出为2MHzQ7输出32KHz。编程提示:18253控制端口地址为E823H定时器0地址为E820H定时器1地址为E821H定时器2地址为E822H2.定时器可工作在方式3下。四、程序流程图:软件程序流程图:开始8255初始化8253A初始化设置数码管选通信号调用音阶子程序,并且读入拨码开关,蜂鸣器发声,数码管显示音阶数字结束键盘有输入?YN硬件连线图:五、源程序代码:DATA SEGMENT NUMS dw 0fffh;数据段NUM dw 01fffh ; NUML dw 02fffh ;延时大小DATA ENDSSTACK SEGMENT STACKSTACKDB 100H DUP(?)STACK ENDS CODE SEGMENT ;代码段ASSUME CS:CODE, DS:DATA, SS:STACKDELAY PROC FAR ;延时子程序PUSHFPUSH CXMOV CX,NUMLOOP1: PUSH CXMOV CX,NUMLOOP2: LOOP LOOP2POP CXLOOP LOOP1POP CXPOPFRETFDELAY ENDPDELAYS PROC FAR ;延时子程序PUSHFPUSH CXMOV CX,NUMLOOPS1: PUSH CXMOV CX,NUMSLOOPS2: LOOP LOOPS2POP CXLOOP LOOPS1POP CXPOPFRETFDELAYS ENDPDELAYL PROC FAR ;延时子程序PUSHFPUSH CXMOV CX,NUMLOOPL1: PUSH CXMOV CX,NUMLLOOPL2: LOOP LOOPL2POP CXLOOP LOOPL1POP CXPOPFRETFDELAYL ENDPsingdo proc far ;音阶do的发声及显示子程序do: mov dx,0e8e0h; in al,dx; test al,02h; ;test stop or not jz dodelay; ;stop mov dx,0E820h ;timer0 setmov al,7Dh ;doout dx,alMOV DX,0E800H ;led showMOV AL,21H ;1OUT DX,ALCALL DELAYretfdodelay:mov dx,0E820h ;timer0 setmov al,00h ;doout dx,almov dx,0e800hmov al,21hout dx,aljmp dosingdo endpsingre proc far ;音阶re的发声及显示子程序re: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz redelay ;stop mov dx,0E820h ;timer0 setmov al,6FH ;reout dx,alMOV DX,0E800H ;led showMOV AL,0F4H ;2OUT DX,ALCALL DELAYretfredelay:mov dx,0E820h ;timer0 setmov al,00H ;reout dx,alMOV DX,0E800H ;led showMOV AL,0F4H ;2OUT DX,ALjmp resingre endpsingmi proc far ;音阶mi的发声及显示子程序mi: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz midelay ;stop mov dx,0E820h ;timer0 setmov al,64H ;miout dx,alMOV DX,0E800H ;led showMOV AL,0F1H ;3OUT DX,ALCALL DELAYretfmidelay:mov dx,0E820h ;timer0 setmov al,00H ;miout dx,alMOV DX,0E800H ;led showMOV AL,0F1H ;3OUT DX,ALjmp misingmi endpsingfa proc far ;音阶fa的发声及显示子程序fa: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz fadelay ;stop mov dx,0E820h ;timer0 setmov al,5EH ;faout dx,alMOV DX,0E800H ;led showMOV AL,39H ;4OUT DX,ALCALL DELAYretffadelay: mov dx,0E820h ;timer0 setmov al,00H ;faout dx,alMOV DX,0E800H ;led showMOV AL,39H ;4OUT DX,ALjmp fasingfa endpsingso proc far ;音阶so的发声及显示子程序so: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz sodelay ;stop mov dx,0E820h ;timer0 setmov al,53h ;soout dx,alMOV DX,0E800H ;led showMOV AL,0D9H ;5OUT DX,ALCALL DELAYretfsodelay: mov dx,0E820h ;timer0 setmov al,00h ;soout dx,alMOV DX,0E800H ;led showMOV AL,0D9H ;5OUT DX,ALjmp sosingso endpsingla proc far ;音阶la的发声及显示子程序la: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz radelay ;stop mov dx,0E820h ;timer0 setmov al,4BH ;laout dx,alMOV DX,0E800H ;led showMOV AL,0DDH ;6OUT DX,AL CALL DELAYretfradelay:mov dx,0E820h ;timer0 setmov al,00H ;laout dx,alMOV DX,0E800H ;led showMOV AL,0DDH ;6OUT DX,AL jmp lasingla endpsingti proc far ; 音阶ti的发声及显示子程序ti: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz xidelay ;stop mov dx,0E820h ;timer0 setmov al,43H ;tiout dx,alMOV DX,0E800H ;led showMOV AL,61H ;7OUT DX,ALCALL DELAY retfxidelay:mov dx,0E820h ;timer0 setmov al,00H ;tiout dx,alMOV DX,0E800H ;led showMOV AL,61H ;7OUT DX,ALjmp tisingti endpsingdo2 proc far ;音阶高音do的发声及显示子程序do2: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz do2delay ;stop mov dx,0E820h ;timer0 setmov al,3fH ;high doout dx,alMOV DX,0E800H ;led showMOV AL,23H ;1.OUT DX,ALCALL DELAYretfdo2delay: mov dx,0E820h ;timer0 setmov al,00H ;high doout dx,alMOV DX,0E800H ;led showMOV AL,23H ;1.OUT DX,ALjmp do2singdo2 endpsingsod proc far ;音阶低音so的发声及显示子程序sod: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz soddelay ;stop mov dx,0E820h ;timer0 setmov al,0a4h ;soout dx,alMOV DX,0E800H ;led showMOV AL,0DBH ;5OUT DX,ALCALL DELAYretfsoddelay: mov dx,0E820h ;timer0 setmov al,00h ;soout dx,alMOV DX,0E800H ;led showMOV AL,0D9H ;5OUT DX,ALjmp sodsingsod endpsingmis proc far ;音阶mi的短发声及显示子程序mis: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz misdelay ;stop mov dx,0E820h ;timer0 setmov al,64H ;miout dx,alMOV DX,0E800H ;led showMOV AL,0F1H ;3OUT DX,ALCALL DELAYSretfmisdelay:mov dx,0E820h ;timer0 setmov al,00H ;miout dx,alMOV DX,0E800H ;led showMOV AL,0F1H ;3OUT DX,ALjmp missingmis endpsingfas proc far ;音阶fa的短发声及显示子程序fas: mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz fasdelay ;stop mov dx,0E820h ;timer0 setmov al,5EH ;faout dx,alMOV DX,0E800H ;led showMOV AL,39H ;4OUT DX,ALCALL DELAYSretffasdelay: mov dx,0E820h ;timer0 setmov al,00H ;faout dx,alMOV DX,0E800H ;led showMOV AL,39H ;4OUT DX,ALjmp fassingfas endp;主程序-START PROC FAR MOV AX,DATAMOV DS,AX ini:mov dx,0E823h ;8253初始化mov al,00010110B ;分频比小于255,mode3,二进制out dx,al;8255初始化MOV DX,0E803H ;A、B口均为方式0输出MOV AL,80HOUT DX,AL ;数码管显示的准备工作MOV DX,0E801H ;设置数码管选通信号MOV AL,01HOUT DX,ALMOV DX,0E800H ;显示清零MOV AL,00HOUT DX,ALcall singmi call singmi call singfa call singso call singso call singfa call singmi call singre call singdocall singdocall singrecall singmicall singmicall singre call singre call delay ;只延时,呈现长音效果call singmicall singmicall singfacall singsocall singsocall singfacall singmicall singrecall singdocall singdocall singrecall singmicall singrecall singdocall singdocall delaycall singrecall singrecall singmicall singdocall singrecall singmiscall singfascall singmicall singdocall singrecall singmiscall singfascall singmicall singrecall singdocall singrecall singsodcall singmicall singmicall singfacall singsocall singsocall singfacall singmicall singrecall singdocall singdocall singrecall singmicall singrecall singdocall singdomov ah,0bh ;检测键盘缓冲区int 21hOR AL,ALJNZ goonjmp inigoon: MOV DX,0E823H ;退出前送出一个控制字,使音乐停止播放 MOV AL,16H OUT DX,AL MOV AH,4CH mov ax,4c00h ;返回DOSint 21hretSTART ENDPCODE ENDSEND START六、思考题:写出8253计数初值、输入频率和输出频率的关系。答:输出频率 = 输入频率 / 8253计数初值七、实验心得与体会:这次实验中我们学习使用了8253定时器,8253共有3个工作通道,每个通道有5种工作方式,在程序一开始应该将控制字送入控制寄存器以确定工作的通道和方式,在这次实验里主要是驱动蜂鸣器所以选择工作方式2。通过技术初值,输入频率和输出频率的关系计算出每个音符应该给工作通道送的计数初值,将计数初值送到工作通道的地址以实现蜂鸣器响。再通过改变不同的计数初值实现音乐播放。值得一提的是,我们在初步设计时候,没有考虑到可能有低音,但是由于我们选用了贝多芬的欢乐颂,这一旋律中出现了低音so,于是我们利用已有的中音do的频率是高音do频率的一半推测低音so是中音so频率的一半并且尝试写进了代码中,实际运行时证实了我们这么做的正确性。还有就是长短音也有出现,只要改变延迟时间即可。还有就是我们在实现时,增加了一个“暂停”的功能,为使得逻辑上方便编写代码,将这一部分的代码分配给了每个音阶的子程序中。在暂停期间,能使得蜂鸣器不发出声音,但是数码管仍然显示当前停止时的音阶数目,在编写这部分程序时,我们仔细推敲了逻辑过程,并且在调试时反复修改,最终获得了成功。 总之本次实验是微机原理硬件实验中代码最多,调试时间最长的一次,非常遗憾的是没有能够完成扩展功能。但是我们通过基本内容的实现编程能力已经得到了提高,举一反三的能力也初见端倪。实验四 串行8251A实验一、实验目的:1.了解串行通信的一般原理和 8251A 的工作原理 2.初步了解 RS232 串行口标准及与 TTL 电路的连接方法; 3.学会扩充 8251A 的方法,并设计实现用 8251A 进行数据传输; 4.掌握 8251A 的编程方法。二、实验内容: (一)自收自发:采用查询方式:将内存制定区域内存放的一批数据通过 8251A 的 TXD 发 送出去,然后从 RXD 接收回来,并在屏幕上或数码管上显示出来。1.连接线路,即: 1.8MHz 信号接分频器 74LS393 的 CLK 端(已接好) ,从 74LS393 的 Q4 (250kHz)接 8253 的 CLK;T/C 接地或接 RESET2.GATE 接+5V; 3.8253 的 OUT 和 8251A 的 TXC、RXC 相连,作为发送时钟和接收时钟; 4.8251A 的 CS 和 Y2 相连,Y2 地址为 EE40-EE47H; 5.8253 的 CS 和 Y1 相连,Y1 地址为 EE20-EE27H; 6.用导线将 TXD 和 RXD 相接,成为自发自收方式; 7.CTS 端必须为低电平(实验台中已接为低电平),8251A 才可想外发送信号, RTS、DTR、DSR 可不用。(但实验台中 RTS、DTR、DSR 均已接地)三,实验步骤1.按原理图连接所需连线; 2.在检测连线无误的情况下,方可开启电源。 3.运行调试程序,发送数据被接收后应正确无误地显示出来。 提示:8251A 数据口地址 E840H,控制口地址 E841H8253 控制口地址 E823H 8253 通道 0 地址 E820H 8253 通道 1 地址 E821H四、程序流程图:软件程序流程图:开始8253初始化设置计数器初始值8251初始化读取8251状态判断是否允许接收接收字符并传送到显示器Y判断是否允许发送字符NY发送字符N硬件连线图:五、源程序代码:DATA SEGMENT NUM DB 1,2,3,4,5,6,7,8 ;欲发送和显示的字符数据DATA ENDSSTACK SEGMENT STACKSTACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AX;给DS赋初值MOV DX,0E823H;8253初始化命令MOV AL,16H;给8253写入控制字00010110H,即选择计数器0,只读低8位,方式3,二进制计数OUT DX,ALMOV DX,0E820HMOV AL,11111010B;设置计数器初值使输出频率为1KHzOUT DX,ALMOV DX,0E841H;8251初始化MOV AL,40H;首先写入控制字01000000H进行内部软复位OUT DX,ALCALL DELAYMOV AL,5EH;写入方式控制字,选择异步方式,奇校验,一个校验位,8位数据,波特率因子是16OUT DX,ALCALL DELAYMOV AL,37H;写入命令控制字OUT DX,ALCALL DELAYMOV CX,10;设置循环变量是10MOV SI,0LEA BX,NUM REPLY: MOV DX,0E841HIN AL,DX;查询8251状态TEST AL,38H;检查是否出错JZ OVER;出错则返回DOSTEST AL,02H;检查是否接收到新数据JNZ RECEI;转到接收新数据的程序TEST AL,01H;检查是否可以发送字符JZ REPLY;否则继续检测MOV DX,0E840H;是则发送字符MOV AL,BX+SIOUT DX,AL;发送数据CALL DELAYCALL DELAYINC SI;SI自加LOOP REPLY;继续检测JMP OVERRECEI: MOV DX,0E840HIN AL,DX;接收字符MOV AH,02H MOV DL,AL;DOS功能调用02H,将放入DL寄存器的字符在屏幕上显示输出INT 21HJMP REPLYOVER: MOV AH,4CH ;返回DOS系统 INT 21HDELAY PROC NEAR;延时子程序 PUSH CX MOV CX,0FFFHLOOP1: LOOP LOOP1 POP CX RETDELAY ENDP CODE ENDS END START六、思考题:在实验中,你如何确定 RXC、TXC 的值,写出计算公式。答:RXC = TXC = 8253输入时钟频率 = 8251的波特率 8251的波特因子七、实验心得和体会:本次实验用到了之前用过的8253计数器和没有学过的8251接口芯片,虽然单纯理解实验原理并不是很难,但是还是要提前预习理解接口芯片的工作原理和具体的初始化方法。程序代码主要是根据书上讲的命令字的格式和含义自己写出来的,难度并不大,将电路连接好之后很容易调试出结果。但是首先要确保理解电路的搭建方式,不要搭错。我们的实验使用的是显示屏输出显示数据,搭的线就要少一点。实验中主要搞清楚了电路的搭建方法,加深了对芯片管脚的理解,学会了命令字的含义。31
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!