1、io8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,Input a num (0-9h):,0dh,0ah,$data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h out dx,alsss: mov dx,offset mesg1 ;显示提示信息 mov ah
2、,09h int 21h mov ah,01 ;从键盘接收字符 cmp al,0 ;是否小于0 jl exit ;若是则退出9是否大于9 jg exit ; sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码 mov dx,io8255a ;从8255的A口输出 jmp sss ;转SSSexit: mov ah,4ch ;返回DOScode ends七段数码管动态显示 动态显示:按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0。编程在两个数码管上
3、显示“56”io8255a equ ioport+28ahio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ?位码将8255设为A口输出 mov al,80h mov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02lll: mov byte ptr bz,bh push di dec di add di, bz mov bl,di ;bl为要显示的数 pop di mov al,0 mov d
4、x,io8255a mov bh,0 mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码 mov al,byte ptr si mov dx,io8255c ;自8255A的口输出 mov al,byte ptr bz ;使相应的数码管亮 mov cx,3000delay: loop delay ;延时 mov bh,byte ptr bz shr bh,1 jnz lll mov dx,0ffh mov ah,06 je loop2 ;有键按下则退出 mov al,0 ;关掉数码管显示返回 end start 实验三、 交通灯控制实
5、验一.实验目的 通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。二.实验内容如图-29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。三.编程提示: 十字路口交通灯的变化规律要求:(1) 南北路口的绿灯、东西路口的红灯同时亮30秒左右。(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3) 南北路口的红灯、东西路口的绿灯同时亮30秒左右。(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5) 转(1)重复。;*;* 十字路
6、口红绿灯模拟演示程序 *;* 端口各灯的设置: *;* 1红 1黄 1绿 0 0 2红 2黄 2绿 *;portc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能 db 81h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh ;结束标志 mov dx,io8255b mov al,90h out dx,al ;设置8255为C口输出re_on: mov bx,0on: mov al,portc1bx cmp al,0ffh jz re_on点亮相应的灯 inc bx mov cx,20 ;参数赋初值 test al,21h ;是否有绿灯亮 jz de1 ;没有,短延时 mov cx,2000 ;有,长延时de1: mov di,9000 ;di赋初值5000de0: dec di ;减1计数 jnz de0 ;di不为0 loop de1 push dx mov ah,06h mov dl,0ffh pop dx jz on ;没有,转到on
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1