信工实验参考——《微机实验4》

一般来说,我贴上来的代码都是能直接跑的,如果不行可以邮箱交流1902946954@qq.com

仅供参考,微机的老师讲的很好,所以请还是要先自己完成咯。
免责声明,本人菜只因一只,内容仅供参考,错了不负责哈

微机实验四报告

一:实验目的

1、掌握8255的工作原理及编程方法。

二:实验使用的主要模块

①I/O地址译码电路②逻辑电平开关电路③LED显示电路④七段数码管显示电路⑤接口集成电路

二、实验题目

2.1、题目1:8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7,电路模块原理图见前面介绍。编程从8255C口输入数据,再从A口输出。

2.1.1、源代码及注释

 

DATAS SEGMENT;数据段设置
   porta      equ     288H    ;74LS138的/Y1地址:288h
   portb      equ     289H
   portc      equ     28AH
   portcon    equ     28BH
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
  ;代码段代码
   
 MOV DX,PORTCON
    MOV AL,10001001B;控制字设置,让ABC都工作于方式0,C口输入A口输出B口随意
    OUT DX,AL
AGAIN:
    MOV DX,28AH;C口地址
    IN AL,DX;输入
    MOV DX,288H;A口地址
    OUT DX,AL;输出
    
MOV AH,1;判断按键中断
    INT 16H
    JE AGAIN
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

2.2、题目2:将8255的A口PA0~PA7与七段数码管的“段码”输入端a、b、c、d、e、f、g、dp相连,位码驱动输入端S3~S0接8255的PC3~PC0,电路模块原理图见前面介绍。编程实现在两位数码管上显示“56”。

2.2.1、源代码及注释

DATAS SEGMENT       		;数据段
	porta      equ     288H    ;74LS138的/Y1地址:288h
	portb      equ     289H
	portc      equ     28AH
	portcon    equ     28BH
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS

    delay 	proc near			 ;延时子程序 
		push bx
		push cx
mov bx,2000				;延时时间为bx*cx,具体值需要实验并调试
lll: 	mov cx,50000 			;通过实验将值设为200*3000,实验现象清晰明显
ll: 	loop ll 
dec bx 
jne lll 
pop cx
pop bx
ret 
delay 	endp     
    
START:
    MOV AX,DATAS
    MOV DS,AX
    
    mov dx,portcon			;以下是代码段
    mov al,10000000B		;设置方式与输入/输出
    out dx,al

AGAIN:
	mov al,02H		;在数码管第2位显示
	mov dx,portc
	out dx,al			;设置数码管的地址
	mov al,5dh		
	mov dx,porta
	out dx,al
	call delay;			;数码管输出5
	
	mov al,01H		;在数码管第1位显示,且代码与上一段基本一致
	mov dx,portc
	out dx,al			;设置数码管的地址
	mov al,6dh
	mov dx,porta
	out dx,al
	call delay			;数码管输出6
	
mov ah,1
	int 16h			;按键检测
	je AGAIN			;若无按键则循环显示
	JNE EXIT			;若有按键输入则中断且退出
	EXIT:
	mov ah,4ch
	int 21h

    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

2.3、题目3: 通过并行接口8255实现十字路口交通灯的模拟控制,如图29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。 十字路口交通灯的变化规律要求:

(1) 南北路口的绿灯、东西路口的红灯同时亮一定时间。

(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3) 南北路口的红灯、东西路口的绿灯同时亮一定时间。

(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(5) 转(1)重复。

2.3.1、源代码及注释:

DATAS SEGMENT			;数据段设置
	porta      equ     288H    ;74LS138的/Y1地址:288h
	portb      equ     289H
	portc      equ     28AH
	portcon    equ     28BH
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
;因为黄灯和红绿灯亮灯时间不一样,因此要用不同延时时长的延时子程序,通过实验测试得具体值
 delay_long proc near ;长延时子程序 
		push bx
		push cx
		mov bx,2000 			;
		lll0: 	mov cx,50000 		;
		ll0: 	loop ll0 
		dec bx 
		jne lll 
		pop cx
		pop bx
		ret 
		delay_long endp 
		
		delay_short proc near ;短延时子程序 
		push bx
		push cx
		mov bx,2000 			;
		lll1: 	mov cx,5000 		;
		ll1: 	loop ll01
		dec bx 
		jne lll 
		pop cx
		pop bx
		ret 
		delay_short endp 

START:
    MOV AX,DATAS
    MOV DS,AX
  ;以下为代码段
    mov dx,portcon
    mov al,B;设置为输出模式
    out dx,al
AGAIN:mov dx,portc
	mov al,B;保持亮灯
	out dx,al
	call delay_long
mov cx,3			;南北绿灯、东西红灯

AGAIN1:mov dx,portc
	mov al,B
	out dx,al
	call delay_short		;东西红灯继续亮
	mov dx,portc
	mov al,B
	out dx,al
	call delay_short
	loop AGAIN1		;循环3次,三次闪烁黄灯
	
	mov dx,portc
	mov al,B;保持亮灯
	out dx,al
	call delay_long 
	mov cx,3			;南北红灯、东西绿灯

 AGAIN2:mov dx, portc
 	mov al,B
 	out dx,al
 	call delay_short		;南北红灯继续亮
 	mov dx,portc
 	mov al,B
 	out dx,al
 	call delay_short
 	loop AGAIN2;循环三次,3次闪烁
 	
 	mov ah,1
 	int 16h
 	je AGAIN1;无按键按下,继续循环执行
    JNE EXIT			;若有按键输入则中断且退出
  EXIT:MOV AH,4CH
    INT 21H
CODES ENDS
END START

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值