急最好这两天有答案D7~D0 由左向右,每次仅亮一个灯,循环显 示,D15~D8 与 D7~D0 正相反

要求 D7~D0 由左向右,D15~D8 由右向左,每次仅点亮一个灯,循环显示

图片说明

拜托大家了,不会的默默看着就好了勿水,会的帮忙指点一下,给个思路也是好的啊,先谢谢了

我也来试试:
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, 0646H
MOV AL, 80H
OUT DX, AL
MOV BX, 8001H
AA1: MOV DX, 0640H
MOV AL, BH
OUT DX, AL
ROR BH, 1
MOV DX, 0642H
MOV AL, BL
OUT DX, AL
ROL BL, 1
CALL DELAY
CALL DELAY
JMP AA1
DELAY: PUSH CX
MOV CX, 0F000H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
CODE ENDS
END START


  1. 先对功能需求做一个确认:主机通过8位并口输出信号来控制外设16个LED灯的开关,16个LED灯流水显示且每一次只显示一盏灯。
  2. 你得查阅8255控制芯片编程指令,通过A0A1编码来控制PA和PB端口开关,然后就是分别控制PA和PB来实现:PA0-PA7,PB0-PB7有效信号的输出即可。

我这边好像有代码,你可以先参照下楼上给的代码跑一下,不行的话到时候我给找找代码

本屌同意楼上 +1 先帮忙顶一下

 MY8255_A      EQU   IOY0+00H*2    ;8255的A口地址
MY8255_B      EQU   IOY0+01H*2    ;8255的B口地址
MY8255_C      EQU   IOY0+02H*2    ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*2     ;8255的控制寄存器地址
DATA  SEGMENT
LA   DB 1 DUP
LB   DB 1 DUP
AXX   DW 1 BUP
CXX   DW 1 BUP 
DATA   ENDS

CODE  SEGMENT  
ASSUME CS:CODE,DS:DATA 

START:MOV  AX,DATA  
MOV  DS,AX  
MOV  DX,MY8255_MODE       ;定义8255工作方式
MOV  AL,80H               ;工作方式0,A口和B口为输出 OUT  DX,AL  

BEGIN:
MOV  DX,MY8255_A           ;写A口发出的起始数据  
MOV  AL,01H 
OUT  DX,AL 
MOV  LA,AL  
MOV  DX,MY8255_B           ;写B口发出的起始数据 
MOV  AL,80H 
OUT  DX,AL 
MOV  LB,AL 
MOV  CX,7  
LOOP1:
CALL  DALLY  
MOV  AL,LA                   ;将A口起始数据左移再写入A口 
ROL  AL,1 
MOV  LA,AL  
MOV  DX,MY8255_A 
OUT  DX,AL  
MOV  AL,LB                   ;将B口起始数据右移再写入B口 
ROR  AL,1 
MOV  LB,AL  
MOV  DX,MY8255_B 
OUT  DX,AL 
LOOP  LOOP1 
MOV  CX,7  
LOOP2: CALL  DALLY 
MOV  AL,LA                  ;将A口起始数据右移再写入A口 
ROR  AL,1 
MOV  LA,AL  
MOV  DX,MY8255_A 
OUT  DX,AL  
MOV  AL,LB                  ;将B口起始数据左移再写入B口 
ROL   AL,1 
MOV  LB,AL  
MOV  DX,MY8255_B 
OUT  DX,AL 
LOOP  LOOP2  
JMP  BEGIN                  ;流水灯重新开始

DALLY  PROC                  ;软件延时子程序 
MOV   CXX,CX  
MOV   AXX,AX              ;这里本应该用堆栈,我用CXX,AXX变量代替了 
MOV   CX,0FH 
D1:MOV   AX,0FFFH 
D2:DEC   AX  
JNZ   D2 
LOOP   D1  
MOV   AX,AXX 
MOV   CX,CXX 
RET  
DALLY   ENDP 
CODE   ENDS 
END   START