矩形波电压发生器
选用单缓冲方法,口地址设为FEFFH.
参阅程序如下:
ORG 1100H
START: MOV DPTR , #00FEH ;送DAC0832口地址
LOOP: MOV A , #dataH ;送高电平数据
MOVX @ DPTR , A
LCALL DELAYH ;调用延时子程序
MOV A , #dataL ;送低电平数据
MOVX @ DPTR , A
LCALL DELAYL ;调用延时子程序
SJMP LCALL
履行上述程序就可得到如图9.5所示的矩形波。
图9.5 D/A转化发生的矩形波
几点阐明:
(1)以上程序发生的是矩形波,其低点平的宽度由延时子程序DELAYL所延时的时刻来决议,高电平的宽度则由DELAYH所延时的时刻决议。
(2) 改动延时子程序DELAYL和的DELAYH延时时刻,就可改动矩形波上下沿的宽度。若DELAYL=DELAYH(两者延时相同),则输出的是方波。
(3) 改动上限值或下限值便可改动矩形波的幅值;单极性输出时为0~-5V或0~+5V;双极性输出时为-5V~+5V。
【例9.3】三角波电压发生器
使用DAC0832发生三角波的参阅程序如下:
MOV A , #00H ;取下限值
MOVX DPTR , #FEFFH ;指向0832口地址 SS1: MOVX @DPTR , A ;输出
NOP ;延时
NOP
NOP
SS2: INC A ;转化值增量
JNZ SS1 ;未到峰值,则持续
SS3: DEC A ;已到峰值,则取后沿
MOVX @DPTR , A ;输出
NOP ;延时
NOP
NOP
JNZ SS3 ;未到谷值,则持续
SJMP SS2 ;已到谷值,则重复