1、微机 信号发生器汇编程序清单和程序注释;*根据CHECK配置信息修改下列符号值* IOY0 EQU 0E400H ;片选IOY0对应的端口始地址 IOY1 EQU 0E440H ;片选IOY0对应的端口始地址;* MY8255_A EQU IOY0+00H*4 ;8255的A口地址 MY8255_B EQU IOY0+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址 DA0832 EQU IOY1+00H*4 ;DA0832的端口地址 STACK1 SEGME
2、NT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H SINTAB DB 19H,1EH,22H,27H,2BH,2EH,31H,32H ;正弦函数表 DB 33H,32H,31H,2EH,2BH,27H,22H,1EH DB 19H,14H,0FH,0BH,07H,04H,02H,01H DB 00H,01H,02H,04H,07H,0BH,0FH,14H STR1 DB press 1 to outpu
3、t wave,0AH,0DH DB press 2 to quit ,0AH,0DH, 0AH,0DH,0AH,0DH,$ SQRTAB DB 00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H DB 13H,13H,13H,13H,13H,13H,13H,13H DB 13H,13H,13H,13H,13H,13H,13H,13H STR2 DB press 1 to sin wave ,0AH,0DH DB press 2 to recangle ,0AH,0DH DB press 3 to square ,
4、0AH,0DH DB press 4 to triangle ,0AH,0DH DB press 5 to return0 ,0AH,0DH ,0AH,0DH,0AH,0DH, $ STR3 DB press 1 to reduce fecency ,0AH,0DH DB press 2 to increase fecency ,0AH,0DH DB press 3 to reduce amplitude ,0AH,0DH DB press 4 to increase amplitude,0AH,0DH DB press 5 to return0 ,0AH,0DH ,0AH,0DH,0AH,0
5、DH, $ SQU DB output squre wave now .,0AH,0DH, 0AH,0DH, $ TRI DB output triangle wave now .,0AH,0DH, 0AH,0DH, $ REC DB output recangle wave now .,0AH,0DH, 0AH,0DH, $ SIN DB output sin wave now .,0AH,0DH, 0AH,0DH, $ AMPL DB 3 FENC DB 3 TIAOFU DB ? TIAOPIN DB ? SQUARE DB ? KEYASS DB ? DATA ENDS ;键值表,0F
6、对应的7段数码管的段位值 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H ;建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为0 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV DI,3003H MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,AL PREBEGIN: MOV AH,09H ; 显示第一个菜单 MOV DX,O
7、FFSET STR1 INT 21H MOV SI,3000H ; 把数码管清0 MOV AL,00H ; 先初始化键值为0 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV DI,3003H BEGIN: CALL DIS ;显示刷新 CALL GETKEY1 ;在第一菜单下,等待按键的按下 MOV SI,OFFSET KEYASS MOV AL,SI CMP AL,1 ;按下第二个键就退出 JZ QUIT CMP AL,0 ;按下第一个键进入第二个菜单 JZ LBEGIN JMP BEGIN ;不是按下第一或二键就继续等待输入 LBEGIN
8、: MOV AH,09H ;显示第二个标题 MOV DX,OFFSET STR2 INT 21H LBEGIN4: CALL GETKEY1 ;第二个菜单等待输入 MOV SI,OFFSET KEYASS MOV AL,SI CMP AL,4 ;第5个键退出 JZ LBEGIN1 CMP AL,0 ;第一个键到sin(正弦)函数 JZ LBEGIN6 CMP AL,1 ;第二个键到rec(锯齿)函数 JZ LBEGIN7 CMP AL,2 ;第三个键到squ(方波)函数 JZ LBEGIN2 CMP AL,3 ;第四个键到tri(三角波)函数 JZ LBEGIN5 JMP LBEGIN3 ;
9、其他键则跳到继续等待输入 LBEGIN2: CALL SQUREW JMP PREBEGIN LBEGIN5: CALL TRIANW JMP PREBEGIN LBEGIN6: CALL SINW JMP PREBEGIN LBEGIN7: CALL RECW JMP PREBEGIN ;执行完输出波形之后 回到第一个菜单 LBEGIN3: JMP LBEGIN4 LBEGIN1: MOV AH,1 ;判断PC键盘是否有按键按下 INT 16H JZ PREBEGIN QUIT: MOV AX,4C00H ;返回到DOS INT 21H ;上面是主程序 TRIANW PROC NEAR ;三
10、角波的子程序 MOV AH,09H MOV DX,OFFSET TRI INT 21H MOV AH,09H MOV DX,OFFSET STR3 INT 21H ;. MOV AL,FENC ;初始化显示管的值为3 MOV SI,3000H MOV SI,AL MOV AL,AMPL MOV SI,3001H MOV SI,AL TRIAN1: CALL AMPLFENC MOV SI,OFFSET KEYASS MOV AL,4 CMP SI,AL JZ TRIAN4 CALL DIS TRILOOP11: ;输出三角波 MOV SI,3000H ;幅值 MOV BL,SI MOV SI,
11、OFFSET TIAOFU MOV SI,BL MOV SI,3001H MOV BL,SI MOV SI,OFFSET TIAOPIN MOV SI,BL TRILOOP: MOV AL,00H ;D/A转换起始值 TRIUP: PUSH AX MOV BL,TIAOFU MUL BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL POP AX MOV CL,TIAOPIN MOV CH,00H DALLYTRI1: CALL DALLY CALL DIS CALL CCSCAN JNZ TRIAN1 LOOP DALLYTRI1 INC AL CMP AL,33H JN
12、E TRIUP TRIDOWN: PUSH AX MOV BL,TIAOFU MUL BL MOV DX,DA0832 OUT DX,AL POP AX MOV CL,TIAOPIN MOV CH,00H DALLYTRI2: CALL DALLY CALL DIS CALL CCSCAN JNZ TRIAN1 LOOP DALLYTRI2 DEC AL CMP AL,00H JNE TRIDOWN JZ TRILOOP ;无按键则跳回继续循环,有则退出 TRIAN4: RET TRIANW ENDP RECW PROC NEAR ;锯齿波的子程序 MOV AH,09H MOV DX,OFFS
13、ET REC INT 21H MOV AH,09H MOV DX,OFFSET STR3 INT 21H MOV DI,OFFSET FENC ;初始化显示管的值为5 MOV AL,DI MOV SI,3000H MOV SI,AL MOV DI,OFFSET AMPL MOV AL,DI MOV SI,3001H MOV SI,AL REC1: CALL AMPLFENC MOV SI,OFFSET KEYASS MOV AL,4 CMP SI,AL JZ REC4 CALL DIS MOV SI,3000H ;幅值 MOV BL,SI MOV SI,OFFSET TIAOFU MOV SI,BL MOV SI,3001H MOV BL,SI MOV SI,OFFSET TIAOPIN MOV SI,BL RECLOOP11: MOV AL,00H ;D/A转换起始值 RECUP: PUSH AX MOV BL,TIAOFU MUL BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL POP AX MOV SI,OFFSET TIAOPIN MOV CL,SI MOV CH,00H DALLYREC1: CALL DALLY CALL DIS CALL CCSCAN JNZ
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1