⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor.asm

📁 可编程并行接口8255A完成的交通灯实验   用8255A的B端口和C端口控制12个LED的亮和灭(输出为0则亮
💻 ASM
字号:
                CODE     SEGMENT
                ASSUME   CS:CODE
                DAPORT	 EQU   0060H                ;da-out port
                IOCPT	 EQU   0072H                ;C port
                IOCONPT  EQU   0073H                ;control port
                CONTPORT EQU   00DFH
                DATAPORT EQU   00DEH
                DATA1    EQU   0500H
                DATA2    EQU   0510H
                DATA3    EQU   0518H
                DATA4    EQU   0519H
        
START:          CALL    FORMAT
                MOV     AL,89H
	        MOV     DX,IOCONPT
                OUT     DX,AL                      ;write control word
                MOV     DX,IOCPT
	        IN      AL,DX	                   ;read the condition of C port
DAOUT:          MOV     BYTE PTR DS:[DATA4],AL
                CALL    BCDCON
                CALL    CONVERS
                CALL    LEDDISP
                MOV     AL,BYTE PTR DS:[DATA4]
                MOV     DX,DAPORT
                OUT     DX,AL
READCPT:        MOV     DX,IOCPT
                IN      AL,DX
                CMP     AL,BYTE PTR DS:[DATA4]
                JE      READCPT
                JMP     DAOUT
                
FORMAT:         MOV     BX,0
                MOV     WORD PTR DS:[BX+DATA1],063FH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],4F5BH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],6D66H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],077DH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],6F7FH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],7C77H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],5E39H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],7179H
                
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],003FH    ;"SPEED  0"
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],5E00H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],7979H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],6D73H
                ADD     BX,2
                RET
                
LEDDISP:        MOV     AL,90H
                MOV     DX,CONTPORT
                OUT     DX,AL
                MOV     BYTE PTR DS:[DATA3],00H
LED1:           CMP     BYTE PTR DS:[DATA3],07H
                JA      LED2
                MOV     BL,DS:[DATA3]
                MOV     BH,0H
                MOV     AL,CS:[BX+DATA2]
                MOV     DX,DATAPORT
                OUT     DX,AL
                ADD     BYTE PTR DS:[DATA3],01H
                JNZ     LED1
LED2:		RET

CONVERS1:       MOV     BH,0H
                AND     AX,0FH
                MOV     BL,AL
                MOV     AL,CS:[BX+DATA1]
      		RET

CONVERS:        PUSH    AX
                CALL    CONVERS1
                MOV     SI,DATA2
                MOV     DS:[SI],AL
                INC     SI
                POP     AX
                MOV     CL,4H
                SHR     AX,CL
                PUSH    AX
                CALL    CONVERS1
                MOV     DS:[SI],AL
                INC     SI
                POP     AX
                MOV     CL,4H
                SHR     AX,CL
                CALL    CONVERS1
                MOV     DS:[SI],AL
      		RET

BCDCON:         AND     AX,0FFH
                MOV     CX,AX
                MOV     AL,0
BCDCON1:        ADD     AL,1
                DAA
                JNC     NEXT
                ADD     AH,1
NEXT:           LOOP    BCDCON1
                RET

                CODE    ENDS
                END     START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -