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

📄 gg504_ad1.asm

📁 福州大学接口课程全部实验代码。包括inter的芯片8253-5、芯片8255A、芯片DAC0832、芯片ADC0809等。详细批注
💻 ASM
字号:
DATA    SEGMENT

CNT0	EQU	280H
CNT1	EQU	281H
CNT2	EQU	282H
PCTL1	EQU	283H

PA		EQU	290H
PB		EQU	291H
PC		EQU	292H
PCTL2		EQU	293H

IN0		EQU 	2A0H
IN1		EQU	2A1H
IN2		EQU	2A2H
IN3		EQU	2A3H
IN4		EQU	2A4H
IN5		EQU	2A5H
IN6		EQU	2A6H
IN7		EQU	2A7H

COUNT		EQU	80H
DAT		DB	COUNT DUP(0)
MSG		DB  'IN0:$'
NEXTL		DB	0AH,0DH,0AH,0DH,'$'
SPACE		DB	'  $'
TAB		DB	40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,08H,03H,0A7H,21H,06H,0EH ;;;0~F编码

DATA    ENDS

STACK   SEGMENT  PARA   STACK
        DW  20H  DUP    (0)
STACK   ENDS

COSEG   SEGMENT
        ASSUME  CS:COSEG,DS:DATA,SS:STACK
START:  MOV     AX,    	DATA
        MOV     DS,    	AX
        
        MOV		AL,		00100111B	;8253初始化,通道0工作于方式3,产生方波
        MOV		DX,		PCTL1
        OUT		DX,		AL
        MOV		AL,		10H			;写通道0初值
        MOV		DX,		CNT0
        OUT		DX,		AL
        MOV		AL,		01100101B	;通道1工作于方式2,产生负脉冲
        MOV		DX,		PCTL1
        OUT		DX,		AL
        MOV		AL,		10H			;写通道2初值
        MOV		DX,		CNT1
        OUT		DX,		AL
        
        MOV		AL,		10001000B  ;8255初始化:A口B口输出,C口输入
        MOV		DX,		PCTL2
        OUT		DX,		AL

	MOV		AL,		0
	MOV		DX,		PA
	OUT		DX,		AL
        
        LEA		SI,		DAT
        MOV		CH,		COUNT
        
L:      MOV		CL,		8
        MOV		DX,		IN0
        
L0:		MOV		AL,		00H		;起动
		OUT		DX,		AL
		
		PUSH	DX
		MOV		DX,		PC
L1:		IN		AL,		DX		;测试EOC -> PC7
		TEST	AL,		80H
		JZ		L1
		POP		DX
		
		IN		AL,		DX		;转换并存储
		MOV		[SI],	AL
		
		CALL	PRINTDX			;显示路号
		CALL	CRTVIEW			;在CRT上显示
		
L2:		CALL	LEDVIEW			;在LED上显示
		PUSH	DX
		PUSH	AX
		MOV	DX,	PC
		IN	AL,	DX
		TEST	AL,	01000000B	;是否产生负脉冲	8253 OUT1 -> PC6
		POP		AX
		POP		DX
		JNZ		L2
		
		PUSH	DX
L3:		MOV	DX,	PC
		IN	AL,	DX
		TEST	AL,	01000000B	;负脉冲是否结束	8253 OUT1 -> PC6
		JZ		L3
		POP		DX
		
		INC		SI
		INC		DX

		DEC		CH
		JZ		STOP			;是否结束
		PUSH	DX
		LEA		DX,		SPACE	;打印空格
        MOV		AH,		09H
        INT		21H
		POP		DX
        DEC		CL
        JNZ		L0				;是否换行
        LEA		DX,		NEXTL	;换行显示
        MOV		AH,		09H
        INT		21H
        JMP		L
        
STOP:	MOV		AH,		4CH
		INT		21H
		
PRINTDX	PROC					;显示路号
		PUSH	CX
		PUSH	DX
		PUSH	AX
		
		AND		DL,		0FH
		ADD		DL,		30H
		MOV		MSG[2],	DL
		LEA		DX,		MSG		;显示路号
        	MOV		AH,		09H
        	INT		21H
        
        	POP		AX
        	POP		DX
        	POP		CX
        	RET
PRINTDX	ENDP
		
CRTVIEW	PROC					;在CRT上显示
		PUSH	CX
		PUSH	DX
		PUSH	AX

		MOV		CX,		02H
PRINT:		PUSH		CX
		MOV		CL,		4
		ROL		AL,		CL
        	MOV		DL,		AL
        	AND		DL,		0FH
        	ADD		DL,		30H
        	CMP		DL,		'9'
        	JNA		CRT
        	ADD		DL,		07H
CRT:		PUSH	AX
		MOV		AH,		02H
        	INT		21H
        	POP		AX
        	POP		CX
        	LOOP	PRINT
        
        	POP		AX
        	POP		DX
        	POP		CX
		RET
CRTVIEW	ENDP


LEDVIEW	PROC					;在LED上显示
		PUSH	CX
		PUSH	DX
		
		LEA		BX,		TAB
		
		PUSH		DX
		MOV		DX,		PA
		MOV		AL,		0FFH		;熄灭消影
		OUT		DX,		AL
		MOV		AL,		11110111B	;显示路号 LED3
		MOV		DX,		PA
		OUT		DX,		AL
		POP		DX
		MOV		AL,		DL
		AND		AL,		0FH
		XLAT
		MOV		DX,		PB
		OUT		DX,		AL
		
		MOV		AL,		0FFH		;熄灭消影
		OUT		DX,		AL
		
		MOV		AL,		11111101B	;显示高位 LED1
		MOV		DX,		PA
		OUT		DX,		AL
		MOV		CL,		4
		ROL		BYTE PTR  [SI],		CL
		MOV		AL,		[SI]
		AND		AL,		0FH
		XLAT
		MOV		DX,		PB
		OUT		DX,		AL
		
		MOV		AL,		0FFH		;熄灭消影
		OUT		DX,		AL
		
		MOV		AL,		11111110B	;显示低位 LED0
		MOV		DX,		PA
		OUT		DX,		AL
		MOV		CL,		4
		ROL		BYTE PTR  [SI],		CL
		MOV		AL,		[SI]
		AND		AL,		0FH
		XLAT
		MOV		DX,		PB
		OUT		DX,		AL
		
        POP		DX
        POP		CX
		RET
LEDVIEW	ENDP

D100US	PROC						;延时子程序
		PUSH	CX
		MOV		CX,		0642H
NEXT:	DEC		CX
		JNZ		NEXT
		POP		CX
		RET
D100US	ENDP

COSEG	ENDS
		END		START

⌨️ 快捷键说明

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