兰州大学接口及通讯实验报告

上传人:第*** 文档编号:61922915 上传时间:2018-12-15 格式:DOC 页数:13 大小:773.50KB
返回 下载 相关 举报
兰州大学接口及通讯实验报告_第1页
第1页 / 共13页
兰州大学接口及通讯实验报告_第2页
第2页 / 共13页
兰州大学接口及通讯实验报告_第3页
第3页 / 共13页
兰州大学接口及通讯实验报告_第4页
第4页 / 共13页
兰州大学接口及通讯实验报告_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《兰州大学接口及通讯实验报告》由会员分享,可在线阅读,更多相关《兰州大学接口及通讯实验报告(13页珍藏版)》请在金锄头文库上搜索。

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,d

3、ata;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 m

4、ov 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口 m

6、ov 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(?)stackendsdatasegment

8、ioportequ0ff00h-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段装填m

9、ovds, 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,则跳转至

10、pexit: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 endsco

11、desegmentassume 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;交还控制权int 21hcode endsend start6-15 A/D转换实验实验代码:datasegmentioportequ0ff00h-0280hio0809aequioport+298hts1dba/d start., 0dh, 0ah, $ts2dba/d end., 0dh, 0ah, $bufdw300 dup

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号