;*****************************************************************
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
;*****************************************************************
DATA SEGMENT
ABC DB 171,176,180,184,188,191,195,199,203,206
DB 210,213,216,219,222,225,228,231,233,236
DB 238,240,242,244,246,247,249,250,251,252
DB 253,254,254,255,255,255,255,255,254,254
DB 253,252,251,250,249,247,246,244,242,240
DB 238,236,233,231,228,225,222,219,216,213
DB 210,206,203,198,195,192,188,184,180,176
DB 172,167,163,159,155,150,146,141,137,133
DB 128,124,119,115,111,106,102,97,93,89,85
DB 81,77,73,69,65,61,57,54,50,47,43,40,37
DB 34,31,28,25,23,20,18,16,14,12,10,9,7
DB 6,5,4,3,2,2,1,1,1,1,1,2,2,3,4,5,6
DB 7,9,10,12,14,16,18,20,23,25,28,30,33,36
DB 40,43,46,50,53,57,60,64,68,72,76,80,84
DB 88,93,97,101,106,110,114,119,123,128,12
DATA ENDS ;SIN函數(shù)數(shù)值表
;*****************************************************************
;判別按鍵的四個小程序,可供選擇波形,按下第一個按鈕,顯示方波
LOOP1:
CMP AL,0EH
JNZ LOOP2
MOV DX,MY8255_A
OUT DX,AL ;亮第一盞燈
CALL FANGBO
;!!!!!!!!!!按下第二個按鈕,顯示的是三角波。
LOOP2:
CMP AL,0DH
JNZ LOOP3
MOV DX,MY8255_A
OUT DX,AL ;亮第2盞燈
CALL THREESIDE
;+++++++++++按下第三個按鈕,顯示的是正弦波
LOOP3:
CMP AL,0BH
JNZ LOOP4
MOV DX,MY8255_A
OUT DX,AL ;亮第3盞燈
CALL SIN
;###########按下第四個按鈕,顯示的是鋸齒波
LOOP4:
CMP AL,07H
JNZ NOTTT
MOV DX,MY8255_A
OUT DX,AL ;亮第4盞燈
CALL BIGTOOTH
NOTTT:
RET
CHULI ENDP
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
CLEAR PROC NEAR
MOV DX,MY8255_C ;CLEAR子程序 清除數(shù)據(jù)
MOV AL,00H
OUT DX,AL
RET
CLEAR ENDP
;*********************方波發(fā)生信號
FANGBO PROC NEAR
PUSH CX
DEBUG:
mov cx,0FFH
MOV AL,0FFH
SIM:
MOV DX,2000H
OUT DX,AL
LOOP SIM
MOV CX,0FFH
SIM1:
MOV AL,0
MOV DX,2000H
OUT DX,AL
LOOP SIM1
MOV DX,MY8255_C
IN AL,DX
CMP AL,0FH
JNZ CHULI
JMP DEBUG
POP CX
RET
FANGBO ENDP
;******************鋸齒波發(fā)生信號
BIGTOOTH PROC NEAR
PUSH CX
DEBUG1:
MOV AL,0FFH
SIM2:
MOV DX,2000H
OUT DX,AL
DEC AL
JNZ SIM2
MOV DX,MY8255_C
IN AL,DX
CMP AL,0FH
JNZ CHULI
JMP DEBUG1
POP CX
RET
BIGTOOTH ENDP
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&正弦波發(fā)生信號
SIN PROC NEAR
PUSH CX
DEBUG2:
MOV DI,OFFSET ABC
MOV CX,0B5H
SIM3:
MOV AL,[DI]
MOV DX,2000H
inc DI
OUT DX,AL
LOOP SIM3
MOV DX,MY8255_C
IN AL,DX
CMP AL,0FH
JNZ CHULI
JMP DEBUG2
POP CX
RET
SIN ENDP
;###########################三角波發(fā)生信號
THREESIDE PROC NEAR
PUSH CX
DEBUG3:
MOV AL,0
SIM4:
MOV DX,2000H
OUT DX,AL
inc AL
cmp al,0ffh
JNZ SIM4
JMP DEBUG4
DEBUG4:
MOV AL,0FFH
SIM5:
MOV DX,2000H
OUT DX,AL
DEC AL
JNZ SIM5
MOV DX,MY8255_C
IN AL,DX
CMP AL,0FH
JNZ CHULI
JMP DEBUG3
POP CX
RET
THREESIDE ENDP
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~