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

📄 ad.asm

📁 包含串行通行的收发程序、电子钟、AD、DA转换、LED按键显示等的源代码
💻 ASM
字号:
DATA SEGMENT
PORTAD EQU 280H      ;ADC0809端口
SAVE_0B DW 2 DUP(?)  ;原中断向量
SAVE_INTR DB ?       ;保存原有屏蔽标志位
DATA ENDS

STACKS SEGMENT STACK 'STACK'
     DB 256 DUP(?)
STACKS ENDS
     
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKS
MAIN PROC FAR
     MOV AX,DATA
     MOV DS,AX
     MOV ES,AX
    
     CLI			;关中断
     
     PUSH ES                    ;保护原中断
     MOV AX,350BH
     INT 21H
     MOV SAVE_0B,BX
     MOV SAVE_0B+2,ES
     POP ES     
     
     PUSH DS                    ;设置新中断
     MOV DX,OFFSET CLINT
     MOV BX,SEG CLINT
     MOV DS,BX
     MOV AX,250BH
     INT 21H
     POP DS

     IN AL,21H               ;写中断屏蔽寄存器
     MOV SAVE_INTR,AL
     AND AL,11110111B
     OUT 21H,AL
     STI		     ;开中断

L0: MOV DX,PORTAD	     ;启动AD转换
     MOV AL,0
     OUT DX,AL
     HLT

    CALL DELAY			;延时
    CALL DELAY
    CALL DELAY
    CALL DELAY
      MOV AH,1			;有按键则关中断
     INT 16H
     JNZ EXIT
     JMP L0			;循环执行

EXIT:CLI			;关中断
    
     PUSH DS			;恢复原中断
     push dx
     MOV DX,SAVE_0B
     MOV BX,SAVE_0B+2
     MOV DS,BX
     MOV AX,250BH
     INT 21H
     pop dx
     POP DS 
       
     MOV AL,SAVE_INTR		;恢复原中断屏蔽标志位
     OUT 21H,AL
     MOV AH,4CH
     INT 21H
MAIN ENDP

DELAY PROC NEAR			;延时子程序
      PUSH CX
     MOV CX,0FFFFH
L2:LOOP L2
   POP CX
   RET
DELAY ENDP
    
CLINT PROC FAR			;中断服务子程序
    
    MOV DX,PORTAD		;读AD端口
    IN AL,DX			
    MOV BL,AL
    MOV CL,4
    SHR AL,CL			;读高字节
    CMP AL,9 			;转换成16进制数     
    JLE S1         
    ADD AL,7
S1: ADD AL,30H			
   mov dl,al			;显示高字节
   mov ah,2
    int 21h

    MOV AL,BL
    AND AL,0FH			;读低字节
    CMP AL,9      		;转换成16进制数   
    JLE S0         
    ADD AL,7
S0: ADD AL,30H
   mov dl,al
   mov ah,2			;显示低字节
    int 21h
    mov dl,20h
    mov ah,2
    int 21h

    MOV AL,20H			;EOC
    OUT 20H,AL
    IRET
CLINT ENDP


CODE ENDS
     END MAIN

⌨️ 快捷键说明

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