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

📄 eclock.asm

📁 可编程并行接口8255A完成的交通灯实验   用8255A的B端口和C端口控制12个LED的亮和灭(输出为0则亮
💻 ASM
字号:

CODE 		SEGMENT
ASSUME 		CS:CODE
INTPORT1  	EQU 	0020H                 
INTPORT2 	EQU 	0021H                 
INTQ3	 	EQU 	INTERUPT3
INTQ7	 	EQU 	INTERUPT7
CONTPORT 	EQU 	00DFH
DATAPORT 	EQU 	00DEH
DATA1	 	EQU 	0500H                
DATA2	 	EQU 	0508H                
DATA3	 	EQU 	0518H                
DATA4	 	EQU 	0520H                 
DATA5	 	EQU 	0528H                 
DATA6	 	EQU 	0529H                 
DATA7	 	EQU 	052AH                 
DATA8	 	EQU 	052BH                 
DATA9	 	EQU 	052CH                 
DATA10	 	EQU 	052EH                 

                ORG     1800H
START:		JMP 	TINT1
TINT1:          CALL    FORMAT
                CLD
                MOV     DX,004BH              
                MOV     AL,0B6H                              
                OUT     DX,AL                                
                MOV     DX,004AH
                MOV     AL,50H
                OUT     DX,AL
                MOV     AL,0C3H
                OUT     DX,AL                                

                MOV     SI,DATA3            
                CALL    LEDDISP                         

                MOV     AX,0H
                MOV     DS,AX
                CALL    WRINTVER                
                MOV     AL,13H               
                MOV     DX,INTPORT1
                OUT     DX,AL
                MOV     AL,08H
                MOV     DX,INTPORT2
                OUT     DX,AL
                MOV     AL,0BH
                OUT     DX,AL
                MOV     AL,0F7H
                OUT     DX,AL
WAITING: 	STI
                JMP     WAITING                   

WRINTVER:       MOV     AX,0H                                        
                MOV     ES,AX
                MOV     DI,002CH
                LEA     AX,INTQ3
                STOSW
                MOV     AX,CS
                STOSW
                MOV     DI,003CH
                LEA     AX,INTQ7
                STOSW
                MOV     AX,CS
                STOSW
                RET

INTERUPT3:	CLI                         		 
                MOV     AL,DS:[DATA6]                        
                INC     AL
                MOV     DS:[DATA6],AL
                CMP     AL,14H                                               
                JC      PLAY                                                  
                MOV     BYTE PTR DS:[DATA6],00H      
                MOV     SI,DATA4                     
                CALL    LEDDISP
                CALL    NEWTIME
                CALL    CONVERSALL
PLAY:           MOV     AL,20H
                MOV     DX,INTPORT1
                OUT     DX,AL
                STI
                IRET

INTERUPT7: 	CLI                        		 
                MOV     SI,DATA1
                CALL    LEDDISP
                MOV     AL,20H
                MOV     DX,INTPORT1
                OUT     DX,AL
                IRET

LEDDISP:        MOV     AL,90H
                MOV     DX,CONTPORT
                OUT     DX,AL
                MOV     BYTE PTR DS:[DATA5],00H                               
LED1:           CMP     BYTE PTR DS:[DATA5],07H               
                JA      LED2                                   
                MOV     BL,DS:[DATA5]                         
                MOV     BH,0H
                MOV     AL,CS:[BX+SI]
                MOV     DX,DATAPORT
                OUT     DX,AL
                ADD     BYTE PTR DS:[DATA5],01H
                JNZ     LED1
LED2:		RET

FORMAT:         MOV     BX,0
                MOV     WORD PTR DS:[BX+DATA1],5050H          
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],0079H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],0000H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],0000H
                ADD     BX,2

                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],3F3FH                 
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],3F40H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],403FH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],3F3FH
                ADD     BX,2

                MOV     WORD PTR DS:[BX+DATA1],3F3FH      
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],3F40H
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],403FH
                ADD     BX,2
                MOV     WORD PTR DS:[BX+DATA1],3F3FH

                MOV     BYTE PTR DS:[DATA6],00D           
                MOV     BYTE PTR DS:[DATA7],00D           
                MOV     BYTE PTR DS:[DATA8],00D
                MOV     BYTE PTR DS:[DATA9],00D
                MOV     WORD PTR DS:[DATA10],DATA4
                RET

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

CONVERS2:       PUSH    AX                                  
                CALL    CONVERS1                     
                MOV     BX,WORD PTR DS:[DATA10]
                MOV     DS:[BX],AL
                ADD     WORD PTR DS:[DATA10],01H
                POP     AX
                PUSH    CX
                MOV     CL,4H
                SHR     AL,CL
                POP     CX
                CALL    CONVERS1
                MOV     BX,WORD PTR DS:[DATA10]
                MOV     DS:[BX],AL
      		RET

CONVERSALL:     MOV     AL,BYTE PTR DS:[DATA9]            
                CALL    CONVERS2                                             
                ADD     WORD PTR DS:[DATA10],02H                     
                MOV     AL,BYTE PTR DS:[DATA8]
                CALL    CONVERS2
                ADD     WORD PTR DS:[DATA10],02H
                MOV     AL,BYTE PTR DS:[DATA7]
                CALL    CONVERS2
                MOV     WORD PTR DS:[DATA10],DATA4            
      		RET

NEWTIME:        CMP     BYTE PTR DS:[DATA9],59H       
                JC      ADD1
                MOV     BYTE PTR DS:[DATA9],0D
                CMP     BYTE PTR DS:[DATA8],59H
                JC      ADD2
                MOV     BYTE PTR DS:[DATA8],0D
                CMP     BYTE PTR DS:[DATA7],23H
                JC      ADD3
                MOV     BYTE PTR DS:[DATA7],0D
                JMP     OK
ADD1:           MOV     AL,BYTE PTR DS:[DATA9]
                ADD     AL,1D
                DAA
                MOV     BYTE PTR DS:[DATA9],AL
                JMP     OK
ADD2:           MOV     AL,BYTE PTR DS:[DATA8]
                ADD     AL,1D
                DAA
                MOV     BYTE PTR DS:[DATA8],AL
                JMP     OK
ADD3:           MOV     AL,BYTE PTR DS:[DATA7]
                ADD     AL,1D
                DAA
                MOV     BYTE PTR DS:[DATA7],AL
OK:             RET

CODE 		ENDS
END  		START


⌨️ 快捷键说明

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