一个关于8255A应用实例求解

一个关于8255A应用实例求解,第1张

先将8个外设的状态通过a口读入al,然后送入ah

再将另8个外设的状态通过b口读入al

这样,ax中即为外设的16个状态信号。

判断ax中‘1’的方法:

将ax中的内容每次左移一位,将最高位移入标志寄存器中的cf,判断cf的值是否为1,连续左移、判断16次即可。

程序如下:

mov bl,0 ;存放ax中1的个数,初值为0

mov cx,16 ;循环次数初值

next:shl ax,1

jnc go

inc bl

go:loop next

mov al,bl

也可写为:

mov bl,0 ;存放ax中1的个数,初值为0

mov cx,16 ;循环次数初值

next:shl ax,1

adc bl,0;直接将移位后cf的值加到bl

loop next

mov al,bl

最后将al中的低四位通过c口送给所连的四个发光二极管

先写控制字,你没给控制端口地址,假设是是23H吧,这样的话A口地址为20H;B口为21H;C口为22H。PC5怎么?你你没打完吧?

8255A的端口A工作在方式0输入,B口工作在方式0输出。控制字为:10010000B。(PC口都设成输出了)

初始化程序:

MOV DX,023H

MOV AL,10010000B

OUT DX,AL

(送初值)

以上你给的信息就只能到写控制字了。

亲~记得给好评哦~

A做输入,B做输出,工作方式可选择90H,由译码器和A1A0决定其端口地址:G1是高电平有效,由与门输出,则A8A7=11,G2A、G2B是低电平有效则A6A5=00,又由于译码器输出为Y2则A4A3A2=010,所以其A、B、C、控制端口地址分别是188H、189H、18AH、18BH。

源程序:

mov al,90h

out 18bh,al

mov dx,188h

in al,dx

mov dx,189h

out dx,al

MY8255_A EQU 9C60H

MY8255_B EQU 9C61H

MY8255_C EQU 9C62H

MY8255_MODE EQU 9C63H

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,MY8255_MODE

MOV AL,82H

OUT DX,AL

A1: MOV DX,MY8255_B

IN AL,DX

MOV DX,MY8255_A

OUT DX,AL

CALL BREAK

JMP A1

BREAK PROC NEAR

MOV AH,06H

MOV DL,0FFH

INT 21H

JE RETURN

MOV AX,4C00H

INT 21H

RETURN:RET

BREAK ENDP

CODE ENDS

END START

MOV DX,203H

MOV AL,10010000B ;写控制字

OUT DX,AL;

IN AL,200H ;读A口的开关状态

TEST AL,1010B

JZ RED

TEXT AL,0101B

JZ GREEN

JMP YELLOW

RED: OUT 201H,11111110B ;红灯亮

GREEN: OUT 201H,11111101B ;绿灯亮

YELLOW:OUT 202H,11111110 ;黄灯亮

以上就是关于一个关于8255A应用实例求解全部的内容,包括:一个关于8255A应用实例求解、编写一程序,要求8255a的pc5端输出一方波信号、如图 1)分析各端口地址2)A口,B口工作在什么方式3)写出8255A的初始化程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9271057.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存