兰州大学接口与通讯实验报告.docx

上传人:叶*** 文档编号:89015088 上传时间:2023-05-05 格式:DOCX 页数:13 大小:733.46KB
返回 下载 相关 举报
兰州大学接口与通讯实验报告.docx_第1页
第1页 / 共13页
兰州大学接口与通讯实验报告.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《兰州大学接口与通讯实验报告.docx》由会员分享,可在线阅读,更多相关《兰州大学接口与通讯实验报告.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验6-6 8255并行接口(LED)实验实验说明8255工作于方式0,此时PA, PB, PC均为可独立输入输出的并行口。8255的各寄存器对应的端口地址为:PA口:288HPB口:289HPC口:28AH控制口:28BH8255的片选信号为CS连138译码器的288H-28FH。由于各PC速度不同,为到达较好的实验效果,可以适当调节LED亮灭的延迟时间。源代码:data segmentioport equ 0ff00h-0280hio8255a equ ioport+288h;PA口io8255b equ ioport+289h;PB口io8255c equ ioport+28ah;PC口

2、io8255d equ ioport+28bh;控制口mess1 db 左循环按1,0dh,0ah,$;提示信息 db 右循环按2,0dh,0ah,$ db 间隔闪烁按3,0dh,0ah,$ db 退出按4,0dh,0ah,$mess2 db 按无效键继续选择,0dh,0ah,$mess3 db 按任意键退回主菜单,0dh,0ah,$data endsstack segmentsta db 20 dup()top equ length stastack endscode segmentassume cs:code,ds:data,ss:stack,es:datastart: mov ax,da

3、ta;data段装填 mov ds,ax mov ax,stack;stack段装填 mov ss,ax mov sp,top;设置栈顶 mov sp,ax mov dx,io8255d mov al,80h;命令字10000000b,表示特征位为1,A组为0方式,A端口出, out dx,al;PC4-PC7出,B组为0方式,B端口出,PC0-PC3出bg: lea dx,mess1;显示提示信息mess1 mov ah,09h int 21h mov ah,08h;输入字符,结果保存至al int 21h push ax;保存输入的值 lea dx,mess3;显示提示信息mess3 mo

4、v ah,09h int 21h pop ax;拿出保存的值 mov ah,al;ah=al cmp al,1;输入为1,跳转到zxh jz zxh mov al,ah;al=ah cmp al,2;输入2,跳转到yxh jz yxh mov al,ah;al=ah cmp al,3;输入3,跳转到jgs jz jgs mov al,ah;al=ah cmp al,4;输入4,跳转到wx jnz wx jmt qitwx: lea dx,mess2;显示提示信息mess2 mov ah,09h int 21h jmp bg;无条件跳转到bgzxh: mov dx,io8255c mov al,

5、0feh;al=11111110bbb: out dx,al;将al写入PC口 mov cx,0ffffh;用于延迟一定的时间l1: loop l1 rol al,1;al循环左移一位 push ax;保存ax push dx;保存dx mov dl,0ffh;直接控制台IO,输入,输入的值在al中 mov ah,06h int 21h jnz bg;flag的ZF标志位不为0跳转至bg pop dx;恢复dx,ax的值 pop ax jmp bb;跳转至bbyxh mov dx,io8255c mov al,0feh;al=11111110bee: out dx,al;将al写入PC口 mo

6、v cx,0fffh;用于延迟一定的时间l2: loop l2 ror al,1;al循环右移一位 push ax;保存ax push dx;保存dx mov dl,0ffh;直接控制台IO,输入,输入的值在al中 mov ah,06h int 21h jnz bg;flag的ZF标志位不为0跳转至bg pop dx;恢复dx,ax的值 pop ax jmp ee;无条件转移至eejgs: mov dx,io8255c mov al,55h;al=01010101bhh: out dx,al;将al写入PC口 mov cx,0fffh;设置时延l3: loop l3 not al;对al按位取

7、反 push ax;保存ax push dx;保存dx mov dl,0ffh;直接控制台IO,输入,输入的值在al中 mov ah,06h int 21h jnz bg1;flag的ZF标志位不为0跳转至bg1 pop dx;恢复dx,ax的值 pop ax jmp hh ;无条件转移至hh bg1: jmp bg;无条件转移至bgqit: mov ax,4c00h;交还控制权给DOS int 21hcode endsend start6-7 8255简单控制交通灯实验实验电路图程序流程图实验代码:stack segmentdb 256 dup()stackendsdatasegmentio

8、portequ0ff00h-0280hio8255aequioport+288h;PA口io8255bequioport+289h;PB口io8255cequioport+28ah;PC口io8255dequioport+28bh;控制口portc1db24h, 44h, 04h, 44h, 04h, 44h, 04h;6个灯可能的db 81h, 82h, 80h, 82h, 80h, 82h, 80h;状态数据db0ffh;结束标志data endscodesegmentassume cs:code, ds:data, ss:stackstart:movax, data;data段装填mov

9、ds, axmovdx, io8255dmoval, 90h;命令字10010000Boutdx, al;表示A组方式0,A端口入,B组方式0,B, C端口出movcx, 3;整个过程循环3次p:leadi, portc1re_on:moval, di;把portc1中数据逐个赋给alincdi;di=di+1cmpal, 0ffh;如果读取到结束标志,则跳转到sjzsmovdx, io8255con:outdx, al;向C端口写入数据callrelay;调用时延子程序jmpre_on;无条件跳转至re_ons:deccx;cx=cx-1cmp cx, 0jnzp;cx不等于0,则跳转至pe

10、xit:movah, 4ch;交还控制权int 21hrelay proc nearpush cx;保存cx的值movcx, 3300hde1:mov bx, 0ffffhde0:decbxjnzde0loopde1popcx;恢复cx的值retrelay endpcode endsend start附加实验datasegmentioportequ0ff00h-0280hio8255aequioport+288h;PA口io8255bequioport+289h;PB口io8255cequioport+28ah;PC口io8255dequioport+28bh;控制口data endscode

11、segmentassume cs:code, ds:datastart:movax, data;data段装填movds, axmovax, stack;stack段装填movss, axmovdx, io8255dmoval, 10010000b;命令字A,B,C组方式0,A组入,B,C出outdx, alwait1:movdx, io8255ainal, dx;从A口读入数据movdx, io8255coutdx, al;将al中的数据写入C口movah, 06h;直接控制台IOmovdl, 0ffh;输入int 21hjmpwait1;跳转到wait1movah, 4ch;交还控制权in

12、t 21hcode endsend start6-15 A/D转换实验实验代码:datasegmentioportequ0ff00h-0280hio0809aequioport+298hts1dba/d start., 0dh, 0ah, $ts2dba/d end., 0dh, 0ah, $bufdw300 dup()dataendsstacksegmentstadw20 dup()topequlength stastackendscodesegmentassumecs:code, ds:data, ss:stackstart:movax, data;data段装填movds, axmova

13、x, stack;stack段装填movss, axmovsp, top;设置栈顶指针leadx, ts1movah, 9int21h;显示提示信息movcx, 300conv:movdx, io0809amoval, 0out dx, al;为io0809a设置初值为0calladint;调用adint子程序movax, si;si中此时为读入数据,ax=si,al就是读入的一个字节leadi, bufmovdi, al;将读入的数据送入buf缓冲区andal, 0f0h;将al与0f0h求与,并将结果重新赋给alpushcx;保存cx的值movcl, 4shral, cl;逻辑右移4位po

14、p cx;恢复cx的值addal, 30h;al=al+30hcmpal, 39hjbedispl;小于等于39h时跳转到displadd al, 07h;al=al+07hdispl:movdl, al;dl=almovah, 2;显示输出,要输出的值为dl中的值int21hmoval, di;取出buf中的值,赋给alincdiandal, 0fh;al的值与0fh按位求与addal, 30h;al=al+30hcmpal, 39hjbedisph;小于等于39h跳转到disphaddal, 07h;大于39h时,al=al+07hdisph:movdl, al;dl=almovah, 2

15、;显示dl中的值int 21hmovdl, 20hmovah, 2int 21hint21h;显示两个空格loopconv;循环至convleadx, ts2movah, 9;显示结束信息int21hadintproc nearpushaxpushbxpushcxmovcx, 0ffffh;设置时延delay:movbx, 2fhdelay1: decbxcmpbx, 0jnzdelay1loopdelaymovdx, io0809ainal, dx;从io0809a读入一个字节赋给almovsi, ax;si=ax,用si把读入的数据返回出去popcxpopbxpopaxretadintendpcodeendsendstart实验数据:电压/V00.51.01.52.02.53.03.54.04.55.0输出(十六进制)01AH35H4FH69H83H9DHB8HD2HEDHFFH输出(十进制)0265379105131157184210237255散点图:误差分析:利用作图分析A/D转换的线性度,其中为转换后的数字量,为输入的模拟量,是个无穷小量可以忽略。,是待求的量,可以用最小二乘法求得近似值。公示如下:计算过程结果如下:Sxx=27.5Sxy=1426a =1.01b =51.85直线方程为:Y=51.85x+1.01

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作总结

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁