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

📄 daconvert.asm

📁 使用8255及ADC0809实现DA转换
💻 ASM
字号:
DATA SEGMENT
     MENU DB 0AH,0DH,
          DB '**********Select Menu**********',0AH,0DH,
          DB '* 1.Triangle  Wave            *',0AH,0DH,
          DB '* 2.Square    Wave            *',0AH,0DH,
          DB '* 3.Sawtooth  Wave (Forward)  *',0AH,0DH,
          DB '* 4.Sawtooth  Wave (Reverse)  *',0AH,0DH,
          DB '* 5.Rectangle Wave            *',0AH,0DH,
          DB '* 6.Echelon   Wave            *',0AH,0DH,
          DB '* 7.Special   Wave (One)      *',0AH,0DH,
          DB '* 8.Special   Wave (Two)      *',0AH,0DH,
          DB '* 0.Exit                      *',0AH,0DH,
          DB '*******************************',0AH,0DH,
          DB 'Please enter your select:$'
     MSG1 DB 0AH,0DH,'Press any key to exit...$'
     MSG2 DB 0AH,0DH,'Press any key to menu...$'
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA 

START:MOV AX,DATA
      MOV DS,AX
      
 SHOW:LEA DX,MENU
      MOV AH,9
      INT 21H
      
      MOV AH,1
      INT 21H
      
      CMP AL,'1'
      JZ  TRIANGLE
      
      CMP AL,'2'
      JZ  SQUARE
      
      CMP AL,'3'
      JZ  SAWTOOTH_F
      
      CMP AL,'4'
      JZ  SAWTOOTH_R
      
      CMP AL,'5'
      JZ  RECTANGLE
      
      CMP AL,'6'
      JZ  ECHELON
      
      CMP AL,'7' 
      JZ  SPECIAL1
      
      CMP AL,'8'
      JZ  SPECIAL2
      
      CMP AL,'0'
      JZ  EXIT
      
      CMP AL,'0'
      JL  SHOW
      
      CMP AL,'8'
      JG  SHOW 
      
 EXIT:MOV AX,4CH
      INT 21H
      
  TRIANGLE:CALL TRIWAVE
           JMP  SHOW
         
    SQUARE:CALL SQUWAVE
           JMP  SHOW
         
SAWTOOTH_F:CALL SAWWAVE1
           JMP  SHOW
           
SAWTOOTH_R:CALL SAWWAVE2
           JMP  SHOW
           
 RECTANGLE:CALL RECWAVE
           JMP  SHOW
           
   ECHELON:CALL ECHWAVE
           JMP  SHOW
           
  SPECIAL1:CALL SPEWAVE1
           JMP  SHOW
           
  SPECIAL2:CALL SPEWAVE2
           JMP  SHOW
       
TRIWAVE PROC NEAR
        PUSH AX
        PUSH DX
        CALL NOTEMSG
        MOV  DX,9840H
        MOV  AL,0
        
  GOON1:OUT  DX,AL
        ADD  AL,2
        CMP  AL,0FEH
        JZ   GOON2
        JMP  GOON1
        
  GOON2:OUT  DX,AL
        SUB  AL,2
        CMP  AL,0
        JNZ  GOON2
        
        PUSH AX
        MOV  AH,1
        INT  16H
        POP  AX
        
        JZ   GOON1
        POP  DX
        POP  AX
        RET 
TRIWAVE ENDP

SQUWAVE PROC NEAR
        PUSH CX
        PUSH DX
        CALL NOTEMSG
        MOV  DX,9840H
  BEGIN:MOV  CX,4FH
        PUSH CX
        MOV  AL,0FFH
        
   LOP1:OUT  DX,AL
        LOOP LOP1
        
        MOV  AL,0
        POP  CX
        
   LOP2:OUT  DX,AL
        LOOP LOP2
        
        PUSH AX
        MOV  AH,1
        INT  16H
        JZ   BEGIN
        
        POP  DX
        POP  CX
        RET
SQUWAVE ENDP

SAWWAVE1 PROC NEAR
         PUSH DX
         CALL NOTEMSG
         MOV  DX,9840H
         
         MOV  AL,0
    STEP:OUT  DX,AL
         INC  AL
         CMP  AL,0FFH
         JNZ  STEP
         
         MOV  AL,0
         OUT  DX,AL
         
         PUSH AX
         MOV  AH,1
         INT  16H
         POP  AX
         JZ   STEP
         POP  DX
         RET
SAWWAVE1 ENDP

SAWWAVE2 PROC NEAR
         PUSH DX
         CALL NOTEMSG
         MOV  DX,9840H
         
   AGAIN:MOV  AL,0FFH
    DECR:OUT  DX,AL
         DEC  AL
         CMP  AL,0
         JNZ  DECR
         
         MOV  AH,1
         INT  16H
         JZ   AGAIN
         
         POP  DX
         RET
SAWWAVE2 ENDP

RECWAVE PROC NEAR
        CALL NOTEMSG
        MOV  DX,9840H
   JUMP:MOV  CX,0FCH
        
   DEL1:MOV  AL,0FFH
        OUT  DX,AL
        LOOP DEL1
        
        MOV  CX,54H
   DEL2:MOV  AL,0
        OUT  DX,AL
        LOOP DEL2 
        
        MOV  AH,1
        INT  16H
        JZ   JUMP
        
        RET
RECWAVE ENDP

ECHWAVE PROC NEAR
        CALL NOTEMSG
        MOV  DX,9840H
        MOV  AL,0
   
   ECHB:OUT  DX,AL
        INC  AL
        CMP  AL,0FFH
        JNZ  ECHB
        
        MOV  CX,4FH
   KEEP:OUT  DX,AL
        LOOP KEEP
        
 REDUCE:DEC  AL
        OUT  DX,AL
        CMP  AL,0
        JNZ  REDUCE
        
        PUSH AX
        MOV  AH,1
        INT  16H
        POP  AX
        JZ   ECHB
        RET
ECHWAVE ENDP

SPEWAVE1 PROC NEAR
        CALL NOTEMSG
        MOV  DX,9840H
        
  SPEB1:MOV  CX,100
        MOV  AL,0
    TD1:OUT  DX,AL
        LOOP TD1
        
        MOV  AL,128
    TD2:OUT  DX,AL
        INC  CX
        CMP  CX,100
        JB   TD2
        
        MOV  AL,255
    TD3:OUT  DX,AL
        LOOP TD3   
        
        MOV  AH,1
        INT  16H
        JZ   SPEB1
         
        RET
SPEWAVE1 ENDP

SPEWAVE2 PROC NEAR
        CALL NOTEMSG
        MOV  DX,9840H
        
  SPEB2:MOV AL,0
    TS1:OUT DX,AL
        INC AL
        CMP AL,128
        JNZ TS1
        
        MOV AL,0
    TS2:OUT DX,AL
        INC AL
        CMP AL,255
        JNZ TS2
        
        RET
SPEWAVE2 ENDP

NOTEMSG PROC NEAR
        LEA DX,MSG2
        MOV AH,9
        INT 21H
        RET
NOTEMSG ENDP         

CODE ENDS
     END START

⌨️ 快捷键说明

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