微机 信号发生器汇编Word格式文档下载.docx
《微机 信号发生器汇编Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机 信号发生器汇编Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
STACK1ENDS
DATASEGMENT
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
SINTABDB19H,1EH,22H,27H,2BH,2EH,31H,32H;
正弦函数表
DB33H,32H,31H,2EH,2BH,27H,22H,1EH
DB19H,14H,0FH,0BH,07H,04H,02H,01H
DB00H,01H,02H,04H,07H,0BH,0FH,14H
STR1DB'
press1tooutputwave'
0AH,0DH
DB'
press2toquit'
0AH,0DH,0AH,0DH,0AH,0DH,'
$'
SQRTABDB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB13H,13H,13H,13H,13H,13H,13H,13H
STR2DB'
press1tosinwave'
press2torecangle'
press3tosquare'
press4totriangle'
press5toreturn0'
0AH,0DH,0AH,0DH,0AH,0DH,'
STR3DB'
press1toreducefecency'
press2toincreasefecency'
press3toreduceamplitude'
press4toincreaseamplitude'
SQUDB'
outputsqurewavenow.......'
0AH,0DH,0AH,0DH,'
TRIDB'
outputtrianglewavenow.......'
RECDB'
outputrecanglewavenow.......'
SINDB'
outputsinwavenow.......'
AMPLDB3
FENCDB3
TIAOFUDB?
TIAOPINDB?
SQUAREDB?
KEYASSDB?
DATAENDS;
键值表,0~F对应的7段数码管的段位值
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,3000H;
建立缓冲区,存放要显示的键值
MOVAL,00H;
先初始化键值为0
MOV[SI],AL
MOV[SI+1],AL
MOV[SI+2],AL
MOV[SI+3],AL
MOVDI,3003H
MOVDX,MY8255_MODE;
初始化8255工作方式
MOVAL,81H;
方式0,A口、B口输出,C口低4位输入
OUTDX,AL
PREBEGIN:
MOVAH,09H;
显示第一个菜单
MOVDX,OFFSETSTR1
INT21H
把数码管清0
先初始化键值为0
BEGIN:
CALLDIS;
显示刷新
CALLGETKEY1;
在第一菜单下,等待按键的按下
MOVSI,OFFSETKEYASS
MOVAL,[SI]
CMPAL,1;
按下第二个键就退出
JZQUIT
CMPAL,0;
按下第一个键进入第二个菜单
JZLBEGIN
JMPBEGIN;
不是按下第一或二键就继续等待输入
LBEGIN:
显示第二个标题
MOVDX,OFFSETSTR2
LBEGIN4:
第二个菜单等待输入
CMPAL,4;
第5个键退出
JZLBEGIN1
第一个键到sin(正弦)函数
JZLBEGIN6
第二个键到rec(锯齿)函数
JZLBEGIN7
CMPAL,2;
第三个键到squ(方波)函数
JZLBEGIN2
CMPAL,3;
第四个键到tri(三角波)函数
JZLBEGIN5
JMPLBEGIN3;
其他键则跳到继续等待输入
LBEGIN2:
CALLSQUREW
JMPPREBEGIN
LBEGIN5:
CALLTRIANW
LBEGIN6:
CALLSINW
LBEGIN7:
CALLRECW
JMPPREBEGIN;
执行完输出波形之后回到第一个菜单
LBEGIN3:
JMPLBEGIN4
LBEGIN1:
MOVAH,1;
判断PC键盘是否有按键按下
INT16H
JZPREBEGIN
QUIT:
MOVAX,4C00H;
返回到DOS
;
上面是主程序
TRIANWPROCNEAR;
三角波的子程序
MOVAH,09H
MOVDX,OFFSETTRI
MOVDX,OFFSETSTR3
INT21H;
..............
MOVAL,FENC;
初始化显示管的值为3
MOVSI,3000H
MOVAL,AMPL
MOVSI,3001H
TRIAN1:
CALLAMPLFENC
MOVAL,4
CMP[SI],AL
JZTRIAN4
CALLDIS
TRILOOP11:
输出三角波
幅值
MOVBL,[SI]
MOVSI,OFFSETTIAOFU
MOV[SI],BL
MOVSI,OFFSETTIAOPIN
TRILOOP:
D/A转换起始值
TRIUP:
PUSHAX
MOVBL,TIAOFU
MULBL
MOVDX,DA0832;
启动D/A转换
POPAX
MOVCL,TIAOPIN
MOVCH,00H
DALLYTRI1:
CALLDALLY
CALLCCSCAN
JNZTRIAN1
LOOPDALLYTRI1
INCAL
CMPAL,33H
JNETRIUP
TRIDOWN:
MOVDX,DA0832
DALLYTRI2:
LOOPDALLYTRI2
DECAL
CMPAL,00H
JNETRIDOWN
JZTRILOOP;
无按键则跳回继续循环,有则退出
TRIAN4:
RET
TRIANWENDP
RECWPROCNEAR;
锯齿波的子程序
MOVDX,OFFSETREC
MOVDI,OFFSETFENC;
初始化显示管的值为5
MOVAL,[DI]
MOVDI,OFFSETAMPL
REC1:
JZREC4
RECLOOP11:
RECUP:
MOVCL,[SI]
DALLYREC1:
JNZ