实验五七段数码管Word下载.docx
《实验五七段数码管Word下载.docx》由会员分享,可在线阅读,更多相关《实验五七段数码管Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
io8255aequioport+288h
io8255bequioport+28bh
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,io8255b;
使8255的A口为输出方式
movax,80h
outdx,al
sss:
movdx,offsetmesg1;
显示提示信息
movah,09h
int21h
movah,01;
从键盘接收字符
cmpal,'
0'
;
是否小于0
jlexit;
若是则退出
9'
是否大于9
jgexit;
subal,30h;
将所得字符的ASCII码减30H
movbx,offsetled;
bx为数码表的起始地址
xlat;
求出相应的段码
movdx,io8255a;
从8255的A口输出
jmpsss;
转SSS
exit:
movah,4ch;
返回DOS
codeends
七段数码管动态显示
动态显示:
按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。
编程在两个数码管上显示“56”
io8255aequioport+28ah
io8255cequioport+288h
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;
段码
buffer1db5,6;
存放要显示的个位和十位
bzdw?
位码
将8255设为A口输出
moval,80h
movdi,offsetbuffer1;
设di为显示缓冲区
loop2:
movbh,02
lll:
movbyteptrbz,bh
pushdi
decdi
adddi,bz
movbl,[di];
bl为要显示的数
popdi
moval,0
movdx,io8255a
movbh,0
movsi,offsetled;
置led数码表偏移地址为SI
addsi,bx;
求出对应的led数码
moval,byteptr[si]
movdx,io8255c;
自8255A的口输出
moval,byteptrbz;
使相应的数码管亮
movcx,3000
delay:
loopdelay;
延时
movbh,byteptrbz
shrbh,1
jnzlll
movdx,0ffh
movah,06
jeloop2;
有键按下则退出
moval,0;
关掉数码管显示
返回
endstart
实验三、交通灯控制实验
一.实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二.实验内容
如图-29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
三.编程提示:
十字路口交通灯的变化规律要求:
(1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转
(1)重复。
;
***********************************;
*十字路口红绿灯模拟演示程序*;
*端口各灯的设置:
*;
*1红1黄1绿002红2黄2绿*;
portc1db24h,44h,04h,44h,04h,44h,04h;
六个灯可能
db81h,82h,80h,82h,80h,82h,80h;
的状态数据
db0ffh;
结束标志
movdx,io8255b
moval,90h
outdx,al;
设置8255为C口输出
re_on:
movbx,0
on:
moval,portc1[bx]
cmpal,0ffh
jzre_on
点亮相应的灯
incbx
movcx,20;
参数赋初值
testal,21h;
是否有绿灯亮
jzde1;
没有,短延时
movcx,2000;
有,长延时
de1:
movdi,9000;
di赋初值5000
de0:
decdi;
减1计数
jnzde0;
di不为0
loopde1
pushdx
movah,06h
movdl,0ffh
popdx
jzon;
没有,转到on