




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微原硬件实验报告班级:2009211119 班 学号:09210550 班内序号:07 姓名:胡易实验一 熟悉实验环境及IO的使用一, 实验目的1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用 Debug 的 I、O 命令来读写 IO 端口。 3. 学会 Debug 的使用及编写汇编程序二,实验内容1. 学习使用 Debug 命令,并用 I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用 EDIT 编辑工具)实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮)三,实验步骤1.实验板的 IO 端口地址为EEE0H在 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 运行查看结果 ,修改输出内容 再运行查看结果 分析movah, 0bh int21h oral, al jz0100 int20h 该段程序的作用:检测键盘有没有按键,有则返回DOS。没有继续执行3.利用 EDIT 工具编写汇编写跑马灯程序程序 实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。B.通过输出端口控制灯的工作状态(低电平灯亮) CEDIT 文件名.asm录入程序 按 Alt 键 打开菜单 进行存盘或退出编译文件 CMASM 文件名.asm连接文件 CLINK 文件名.obj运行文件 或用 Debug 进行调试。四,程序流程图 开始初始化点亮最左边的灯延时子程序点亮右边的灯点亮了7次? 否 是否运行了255次?是结束图表 1:实验1的程序流程图硬件连线图:五,源程序代码data segment ;数据段,堆栈段,代码段 data ends stack segment stackstackdb 100 dup(?) stack ends code segmentassume cs:code,ds:datamov ax,datamov ax,ds start: mov dx,0eee0hmov ax,7f00hmov cx,255 again: out dx,ax ;点亮最左边的灯ror ah,1call delaycall delayloop againmov ax,04c00hint 21hdelay proc near ;延时子程序push cxpush axpush bxmov cx,0fffhloop1: nopmov bx,0ffffhloop2: dec bxjnz loop2loop loop1pop bxpop axpop cxretdelay endp code endsend start六,思考题通过实验说明用 debug 中的 a 命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数七,实验收获和体会在这次试验中,我主要学会使用debug环境下的I/O命令,利用该命令点亮了LED灯,并且读取了拨码开关的状态,并知道了如何利用键盘检测返回DOS,在跑马灯实验中,我学会了写延时子程序,在一开始只用了一层循环,导致速度过快而无法观察到跑马灯的效果,在同学的帮助下我编写了二层循环才达到了应有的效果。同时,自己也整体的练习了汇编语言程序的编写,包括段声明,子程序编写等等。除了软件部分,也学习了实验板上的电路连接,初步了解了CPU是如何通过总线读写数据和地址的,为以后的学习奠定了基础。实验二 8255A并行接口应用一, 实验目的1.掌握 8255A 的功能及方式 0、1 的实现 2.熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 3.了解七段数码管显示数字的原理。 4.掌握同时显示多位数字的技术。二,实验内容在实验一的基础上学习 PIO 芯片(8255)编程应用,熟悉平台的主要内容。CS 用 Y0 (EE00H)(一) 简要说明:在方式 0(输入/输出)下,以 A 口为输出口,B 口为输出口, A 口接六个共阴极数码 管的八位段码,高电平点亮数码管的某一段, B 口接数码管的位选(即要使哪个数码管亮), 高电平选中某一位数码管点亮。8255A 中A 端口地址EE00H B 端口地址EE01HC 端口地址EE02H控制地址EE03H 八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的 I、O 命令来做。(二)6 位数码管静态显示 在数码管电路上静态地显示 6 位学号,当主机键盘按下任意键时,停止显示,返回 DOS。 提示:该电路 6 个数码管的同名阳极段已经复接,当段选寄存器寄存了一个字型编码之后,6 个数码管都有可能显示出相同的数字。如果要使 6 个数码管“同时”显示不同的数 字,必须采用扫描显示的方法,通过选位寄存器选择某一位数码管,显示其数字(对应段值 为 1),然后关闭此数码管,再选择下一位数码管进行显示;如果在一秒钟内,每一位数码 管都能显示 30 次以上,则人眼看到的是几位数码管同时在显示。实验证明,在扫描显示过程中,每一位显示延迟 1ms 是最佳选择。(三)6 位数码管动态显示要求在数码管电路 1-6 位数码管上按图 3.2 所示的规律,动态显示字符串 HELLO,当 主机键盘按下任意键时结束。二, 程序流程图程序一:静态显示学号结束是否检测是否有按键在最右边的数码管显示0在右边的数码管显示5在右边的数码管显示0在右边的数码管显示9在右边的数码管显示5在右边的数码管显示0在最左边的数码管显示08255初始化 图表 2:静态显示学号的程序流程图8255初始化 point偏移地址送BX,SI 计数器CX=255 最右边数码管显示BX的字符左边一个数码管显示BX+1的字符左边一个数码管显示BX+2的字符左边一个数码管显示BX+3的字符左边一个数码管显示BX+4的字符左边一个数码管显示BX+5的字符否一共255次?延时是是检测是否有按键?否结束BX值是否和SI相等?是 否 BX= BX+1硬件连线图:四,源程序代码 程序一:显示静态学号DATA SEGMENTa dw 0ee00hb dw 0ee01hc dw 0ee02hchoose db 01hzero db 0edhnine db 79hfive db 0d9hcontrol dw 0ee03h ;数据段DATA ENDSSTACK SEGMENT DB 100 DUP(?) STACK ENDS ;堆栈段CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;代码段start: MOV AX, DATA MOV DS, AX MOV AX, STACKMOV SS, AX MOV DX,controlMOV AL,10001001B OUT DX,AL ;8255控制字 Mov cx,0ffffh ;计数器again: MOV DX,b MOV AL,choose ;数码管段选数据 OUT DX,ALMOV DX,a MOV AL,zero ;显示0OUT DX,ALnopmov al,00hout dx,almov al,00000010b ;显示9mov dx,bout dx,almov al,ninemov dx,aout dx,alnop mov al,00hout dx,almov al,00000100bmov dx,bout dx,al ;显示0mov al,zeromov dx,aout dx,alnopmov al,00hout dx,al mov al,00001000bmov dx,bout dx,al ;显示5mov al,fivemov dx,aout dx,alnopmov al,00hout dx,almov al,00010000b ;显示5mov dx,bout dx,almov al,fivemov dx,aout dx,alnopmov al,00hout dx,almov al,00100000b ;显示0mov dx,bout dx,almov al,zeromov dx,aout dx,almov ah,0bh ;检测键盘按键int 21hor al,aljz nextmov ax,4c00hint 21hnext: jmp againcode endsend start程序二:动态显示HELLOdata segment ;数据段 a dw 0ee00h b dw 0ee01h c dw 0ee02h mesg db 0,0,0,0,0,0,3dh,0dch,8ch,8ch,0edh,0 ;显示字符 point dw mesg choose db 01h zero db 0edh nine db 79h five db 0d9h control dw 0ee03h data endsstack segment db 100 dup(?) stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds, axmov ax, stackmov ss, ax mov dx,controlmov al,10001001Bout dx,al ;8255初始化控制字mov si,point ;字符偏移地址add si,06h mov bx,pointagain1: nop mov cx,0ffffhagain2: mov dx,amov al,00hout dx,almov dx,bmov al,00000001bout dx,almov dx,a mov al,bx ;显示第一个字符out dx,alnopmov al,00hout dx,almov al,00000010bmov dx,bout dx,almov al,bx+1mov dx,aout dx,al ;显示第二个字符nop mov al,00hout dx,almov al,00000100bmov dx,bout dx,almov al,bx+2mov dx,aout dx,al ;显示第三个字符nopmov al,00hout dx,al mov al,00001000bmov dx,bout dx,almov al,bx+3mov dx,aout dx,al ;显示第四个字符nopmov al,00hout dx,almov al,00010000bmov dx,bout dx,almov al,bx+4mov dx,aout dx,al ;显示第五个字符nopmov al,00hout dx,almov al,00100000bmov dx,bout dx,almov al,bx+5mov dx,aout dx,al ;显示第六个字符loop again2call delaycall delaymov ah,0bh ;检测键盘按键int 21hor al,aljz nextmov ax,4c00hint 21hnext: mov ax,bx xor ax,sijz beginc bxjmp again1 ;判断是否显示完beg: jmp startdelay proc near ;延时子程序 push cx push ax push bx mov cx,256loop1: nop mov bx,0ffffhloop2: dec bxjnz loop2loop loop1pop bxpop axpop cxretdelay endp code endsend start五,实验心得与体会 这次的实验里我学习了使用8255芯片进行并口接口的应用,先用了I/O命令检测出了数码管的显示规律和段选规律。在显示学号的实验中,由于数码管一次只能显示一个,所以只有靠扫描显示的方法,通过选位寄存器选择一个数码管,显示数字,接下来换下一个显示另一个数字,由于数字停留的时间特别短,所以一秒内数码管会显示很多次从人眼看就是几位数码管在同时显示。显示动态HELLO的原理也是一样。在实验中有一个小的问题,就是每次换下一个数码管显示的时候还会显示之前数码管显示的字符,后来在显示下一个字符前先将数码管清0,就解决了这个问题。这次实验的程序比上一个复杂的多,编程过程中也遇到了很多问题,好在利用单步调试都一一解决了,经过这次实验我也再次提高了自己的编程能力。实验三 8253计数器/定时器的应用一,实验目的学习掌握8253用作定时器的编程原理二,实验内容1 完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。三,电路测试与连接测试:在Debug状态下,用“O”命令测试8353的发生功能,3组通道工作是否正常。电路连接: 8253的CS接译码器输出Y1 其地址为EE20-EE27H8253的OUT接蜂鸣器的BELL端8253的门控信号GATE接+5V8253的CLK端接Q7(32KHz)清零复位电路中的T/C端接地(或接RESET端)注意:由于8253计数速率应小于2MHz,CLK0的输入信号必须由8MHz经393分频到小于2MHz后使用。393分频之后,Q0输出为4MHz,Q1输出为2MHzQ7输出32KHz。编程提示:18253控制端口地址为EE23H定时器0地址为EE20H定时器1地址为EE21H定时器2地址为EE22H2.定时器可工作在方式3下。四,程序流程图图表 3:音乐发声器程序流程图硬件连线图:五,源程序代码data segment ;数据段song db 7dh,7dh,53h,53h,4bh,4bh,53hdb 5eh,5eh,64h,64h,6fh,6fh,7dhdb 53h,53h,6eh,5eh,64h,64h,6fhdb 53h,53h,5eh,5eh,64h,64h,6fhdb 7dh,7dh,53h,53h,4bh,4bh,53hdb 5eh,5eh,64h,64h,6fh,6fh,7dh ;音乐音符cont equ $-songnum db 21h,21h,0d9h,0d9h,0ddh,0ddh,0d9h db 39h,39h,0f1h,0f1h,0f4h,0f4h,21h db 0d9h,0d9h,39h,39h,0f1h,0f1h,0f4h db 0d9h,0d9h,39h,39h,0f1h,0f1h,0f4h db 21h,21h,0d9h,0d9h,0ddh,0ddh,0d9h db 39h,39h,0f1h,0f1h,0f4h,0f4h,21h ;数码管字符A dw 0ee00hB dw 0ee01hcon dw 0ee03hcon2 dw 0ee23hCCC0 dw 0ee20hdata endsstack segmentdb 100 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov si,offset songmov di,offset nummov cx,contloop1: cmp bx,0jnz contnmov bx,07hcontn: mov dx,con2 mov al,16hout dx,al;8253控制字mov dx,ccc0 mov al,siout dx,al ;蜂鸣器响mov dx,conmov al,10001001b out dx,al ;8255控制字mov dx,Bmov al,01hout dx,al mov dx,Amov al,diout dx,al ;数码管显示音符call delay dec bxjnz nextcall delaynext: inc diinc simov ah,0bh ;检测按键int 21hor al,aljnz endlastloop loop1jmp startendlast:mov dx,A mov al,0out dx,almov dx,0ee20hmov al,0out dx,al mov ax,4c00hint 21hdelay proc near ;延时子程序push cxpush bxmov cx,100fhmov bx,0ffffhloop2: noploop3: dec bx jnz loop3loop loop2pop bxpop cxretdelay endpcode ends end start 六,思考题写出8253计数初值、输入频率和输出频率的关系。答:输出频率 = 输入频率 / 8253计数初值七,实验心得与体会这次实验中我们学习使用了8253定时器,8253共有3个工作通道,每个通道有5种工作方式,在程序一开始应该将控制字送入控制寄存器以确定工作的通道和方式,在这次实验里主要是驱动蜂鸣器所以选择方式2.通过技术初值,输入频率和输出频率的关系计算出每个音符应该给工作通道送的计数初值,将计数初值送到工作通道的地址以实现蜂鸣器响。再通过改变不同的计数初值实现音乐播放。通过本次实验,我学习了8253定时器的使用,并进一步提升了编程能力。实验四 串行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 数据口地址 EE40H,控制口地址 EE41H8253 控制口地址 EE23H 8253 通道 0 地址 EE20H 8253 通道 1 地址 EE21H8253 通道 2 地址 EE22H8255初始化三, 程序流程图 8251控制字 8251命令字是检测是否有按键结束 否是否可接收? 是 否接收数据。并查表送数码管显示发送数据图表 4:8251应用程序流程图五,源程序代码data segmentmesg db 1,2,3,4,5,6,7,8,7,6,5,4,3,2,0,0,1tab db 0edh,21h,0f4h,0f1h,39h,0d9h,0ddh,61h,0fdh,79hpoint dw mesgpoint1 dw tabdata endsstack segment stack stackdb 100 dup(?)stack endscode segment assume cs:code,ds:data,ss:stackbegin: mov ax,datamov ds,axmov ax,stackmov ss,axmov dx,0ee03h;数码管初始化mov al,80hout dx,almov dx,0ee01hmov al,1out dx,al ;每次都必须赋值吗?mov dx,0ee23h;8253初始化 初始值为7fffhmov a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册验船师资格考试(B级船舶检验法律法规)综合试题及答案一
- 2025年项目经理IT行业面试模拟题及答案详解
- 2025年注册验船师资格考试(A级船舶检验专业案例分析)测试题及答案一
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)练习题及答案一
- 2025年公需科目人工智能和健康考试题和答案
- 海安银行考试题库及答案
- 2025年检察院审查起诉官选聘预测试题与解析
- 2025年软件编程工程师招聘面试模拟题及答案详解
- 株洲知识培训班课件
- 公务员面试题及答案法院
- 储能项目投资测算方案
- 【25秋】统编版小学语文二年级上册-《第八单元大单元设计》课件
- 2025年长沙中考化学试卷真题解读及复习备考指导
- 舆情安全管理办法
- 2025个人洗护市场趋势洞察报告-魔镜洞察
- 替换车管理办法规定
- 厨房4D管理课件下载
- 临床营养学病例报告
- 危险作业票 安全作业票格式模板 动火登高煤气受限空间作业票
- 水电工安全考试题及答案
- 心脏起搏器植入术超声评估要点
评论
0/150
提交评论