设定: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七段数码管显示出...来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)