ToC
实验内容
编程画出波形,通过 D/A
转换器转换为模拟信号,通过软件示波器观察波形。
实验接线
代码
;; DAC0832 IOY0;; BASE OFFSET: 0600HA0832 EQU 0600H
SSEG SEGMENT STACK DW 0,0,0,0SSEG ENDS
CODE SEGMENTASSUME CS:CODE, SS:SSEG
START: MOV DX, A0832
;; --------- SAW START --------- MOV CX, 0AHSAW: MOV AL, 00HJC1: OUT DX, AL CALL DELAY_SHORT CMP AL, 0FFH JE JC2 INC AL JMP JC1JC2: LOOP SAW;; ---------- SAW END ----------
;; --------- RECT START --------- MOV CX, 02HRECT: MOV AL, 00H OUT DX, AL CALL DELAY_LONG MOV AL, 0FFH OUT DX, AL CALL DELAY_LONG LOOP RECT;; ---------- RECT END ----------
;; --------- TRI START --------- MOV CX, 02HTRI: MOV AL, 00HTR1: OUT DX, AL CALL DELAY_SHORT CMP AL, 0FFH JE TR2 INC AL JMP TR1TR2: OUT DX, AL CALL DELAY_SHORT CMP AL, 00H JE TR3 DEC AL JMP TR2TR3: LOOP TRI;; ---------- TRI END ----------
;; --------- STAIR START --------- MOV CX, 02HSTA: MOV AX, 00HSTA1: OUT DX, AL CMP AX, 0FFH JGE STA_FIN CALL DELAY_LONG ADD AL, 11H ;; 0FH STAIRS ;; 11H GAP JMP STA1STA_FIN: LOOP STA;; ---------- STAIR END ----------
MOV AX, 4C00H INT 21H
DELAY_SHORT: PUSH AX PUSH CX MOV CX, 01FFH LOOP $ POP CX POP AX RET
DELAY_LONG: PUSH AX PUSH CX MOV CX, 0FFFFH LOOP $ POP CX POP AX RET
CODE ENDSEND START
波形


选做实验:中断控制波形
描述
使用单脉冲开关 KK1
在四种波形间进行切换。
分析
将 KK1
与 MIR6
相连,在中断处理程序中判断需要绘制的波形,主循环中绘制实际的波形。
需要封装一下之前用到的波形绘制部分代码。
代码
;; DAC0832 IOY0;; BASE OFFSET: 0600HA0832 EQU 0600H
SSEG SEGMENT STACK DW 0,0,0,0SSEG ENDS
CODE SEGMENTASSUME CS:CODE, SS:SSEG
START: ;; MIR6 MOV AX, OFFSET MIR6 MOV SI, 38H MOV [SI], AX MOV AX, CS MOV SI, 3AH MOV [SI], AX
;; -------------------------------------------------- ;; INIT 8259 CLI MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 07H OUT 21H, AL MOV AL, 2FH OUT 21H, AL STI ;; --------------------------------------------------
MOV DX, A0832 MOV BX, 0
MAIN: MOV CX, 1 CMP BX, 0 JE M_SAW CMP BX, 1 JE M_RECT CMP BX, 2 JE M_TRI CALL STA JMP MAINM_SAW: CALL SAW JMP MAINM_RECT: CALL RECT JMP MAINM_TRI: CALL TRI JMP MAIN
MIR6: INC BX CMP BX, 4 JNE BACK MOV BX, 0BACK: IRET
MOV DX, A0832
SAW: MOV AL, 00HJC1: OUT DX, AL CALL DELAY_SHORT CMP AL, 0FFH JE JC2 INC AL JMP JC1JC2: LOOP SAW RET
RECT: MOV AL, 00H OUT DX, AL CALL DELAY_LONG MOV AL, 0FFH OUT DX, AL CALL DELAY_LONG LOOP RECT RET
TRI: MOV AL, 00HTR1: OUT DX, AL CALL DELAY_SHORT CMP AL, 0FFH JE TR2 INC AL JMP TR1TR2: OUT DX, AL CALL DELAY_SHORT CMP AL, 00H JE TR3 DEC AL JMP TR2TR3: LOOP TRI RET
STA: MOV AX, 00HSTA1: OUT DX, AL CMP AX, 0FFH JGE STA_FIN CALL DELAY_LONG ADD AL, 11H ;; 0FH STAIRS ;; 11H GAP JMP STA1STA_FIN: LOOP STA RET
DELAY_SHORT: PUSH AX PUSH CX MOV CX, 01FFH LOOP $ POP CX POP AX RET
DELAY_LONG: PUSH AX PUSH CX MOV CX, 0FFFFH LOOP $ POP CX POP AX RET
CODE ENDSEND START