单片机控制8255按键控制8个发光二极管程序编程

单片机控制8255按键控制8个发光二极管程序编程,第1张

设定:8255PA、PC口为输入、PB作输出(均为方式0)

MOV DPTR, #0FF2BH ;假设命令口地址FF2BH

MOV A, #10011001B ;命令字

MOVX @DPTR, A

……

忘了问了,你的8255的地址,是不是FF2BH?

楼上的,他们是汇编或者微原的课程用的是8088或8086,直接用试验箱,对他们的要求应该不用自己搭建硬件环境的。而且8255只是个接口芯片。你的情况要根据你的实验环境,先在你的PC软件环境编辑编译链接后,连接硬件试验箱将8255的A口与LED相连,C口通过正确接口方式与8088相连,试验箱在程序装载模式时通过PC将二进制文件下载,运行,OVER

仅供参考:

CODE如下:

DATA SEGMENT

TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,7FH,6FH ;预置显示值

BUFFER DB ;预留一个字节装键值

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA ;初始化 *** 作

MOV DS,AX

SET: MOV DX,206H;初始化8255

MOV AL,89H

OUT DX,AL

WAIT-IN: MOV AL,00H;检测按键所有行输出0

MOV DX,204;8255的 C口地址

OUT DX,AL

IN AL,DX;读列线

AND AL,70H

CMP AL,70H;比较是否有按键按下

JZ WAIT-IN;无就等待

DONE: CALL DAELAY;延时消除抖动

MOV BL,0;键号初始值为0

MOV CL,0FEH;扫描初始值

MOV DL,3;计数值行数

SCANR: MOV AL,CL;扫描一行

MOV DX,204H;C口地址

OUT DX,AL

ROL AL,1;修改行数

MOV CL,AL

IN AL,DX;读列数

AND AL,70H

CMP AL,70H ;判断列线状态

JNZ SCANL;有低转

ADD BL,3;没有使键号=键号值+列数

DEC DL

JNZ SCANR;行未完转

JMP HANDLE;扫描结束

SCANL: OR AL,0FH; 高位置1,避免出错

RCR AL,1

JNC HANDLE;列为低,确定按键值

INC BL

JMP SCANL;查找下一列

HANDLE MOV AL,BL;传按键

MOV BX,OFFSET TABLE;段码表首址

XLAT

MOV DX,200H ;A口地址

OUT DX,AL;送段码

CALL DELAY

MOV AH,04H

INT 21H

CODE ENDS

END STATRT

要使P10在1分钟的时候亮灯,过1分钟灭灯,

MIN的内容是0~59,要使它在为1的时候亮灯。

可以如下改动,见小写文字:

……

LOOP3:INC SEC ;计时+1程序,秒,分,时开始计时

MOV A, SEC

CJNE A,#60,LOOP1

INC MIN

MOV SEC,#00H

;---------------------------------

setb p10 ;关灯

mov a, min ;取分值

cjne a, #1, ppp ;不是1分则跳

clr p10 ;是则开灯

ppp:

;---------------------------------

MOV A,MIN

CJNE A,#60,LOOP1

INC HOUR

……

以上就是关于单片机控制8255按键控制8个发光二极管程序编程全部的内容,包括:单片机控制8255按键控制8个发光二极管程序编程、汇编计算机接口 8255可编程并行接口实验。图是程序代码,怎么利用输出硬件编写一个跑马灯程序、如题六图键盘电路编写8255初始化程序和键值读取程序,并将键值序号在LED七段数码管显示出...来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9583660.html

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

发表评论

登录后才能评论

评论列表(0条)

保存