预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

微机原理实验报告 实验五 班级:2012级信息工程(3)班 姓名:李泓鑫 学号:201230281461 序号:17号 评阅分数: 实验目的 掌握8255的工作原理及编程方法。 开发环境 运行于XP操作系统下HQFC集成开发环境。 实验题目 (2)数码管显示 1、静态显示:按图22连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。 2、动态显示:按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。编程在两个数码管上显示“56”。 3、编程提示: (1)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。 (2)七段数码管的字型代码表如下表: 4、参考流程图 代码: 静态显示 datasegment leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1db0dh,0ah,'Inputanum(0--9h):',0dh,0ah,'$' dataends codesegment assumecs:code,ds:data start:movax,data movds,ax movdx,28bh;使8255的A口为输出方式 moval,89h;10001001B,控制字PA以方式0输出 outdx,al zby:movdx,offsetmesg1;显示提示信息 movah,09h int21h movah,01;从键盘接收字符 int21h cmpal,'0';是否小于0 jlexit;如若小于0,则跳转到exit退出程序 cmpal,'9';是否大于9 jgexit;如若大于9,则跳转到exit退出程序 subal,30h;将所得字符的ASCII码减30H,ascii码转数值 movbx,offsetled;bx为数码表的起始地址 xlat;求出相应的段码 movdx,288h;从8255的A口输出 outdx,al jmpzby;转zby exit:movah,4ch;返回DOS int21h codeends endstart 2动态显示 datasegment leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码 buffer1db6,5;存放要显示的个位和十位 bzdw?;位码 dataends codesegment assumecs:code,ds:data start: movax,data movds,ax movdx,28bh;将8255设为A口输出 moval,89h;10001001B,控制字PA以方式0输出 outdx,al movdi,offsetbuffer1;设di为显示缓冲区 loop2: movbh,02 zby:movbyteptrbz,bh pushdi decdi adddi,bz movbl,[di];bl为要显示的数 popdi moval,0 movdx,28ah outdx,al movbh,0 movsi,offsetled;置led数码表偏移地址为SI addsi,bx;求出对应的led数码 moval,byteptr[si] movdx,288h;自8255A的口输出 outdx,al moval,byteptrbz;使相应的数码管亮 movdx,28ah outdx,al movcx,3000 delay: loopdelay;延时 movbh,byteptrbz shrbh,1 jnzzby movdx,0ffh movah,06 int21h jeloop2;有键按下则退出 movdx,28ah moval,0;关掉数码管显示 outdx,al movah,4ch;返回 int21h codeends endstart