DACO832 WR WRI 译卩8D7WR REF REF P0.7 P0.0 锁存器G XFER 码 tb 器|FEH 8031 CS 12 ALE +5VoⅣ正E OUT2 D17 EA D10 11-5
由图,WR2*和XFER接地,故DAc0832的“8位DAG 寄存器”(图11-2)处于直通方式。“8位输入寄存器 ”受0s*和wR1*端控制,且由译码器输出端FEH送来 (也 可由P2口的某一根口线来控制)。因此,8031执行如 下两条指令就可在WR1*和0*上产生低电平信号,使 083收891来的数字最0地址FEH→Ro MOVX ORO A ;WR*和译码器FH输出端有效 现举例说明DAc0832单缓冲方式的应用。 例11-1DAc0832用作波形发生器。分别写出产生锯 齿波、三角波和矩形波的程序
由图,WR2*和XFER*接地,故DAC0832的“8位DAC 寄存器”(图11-2)处于直通方式。 “8位输入寄存器 ”受CS*和WR1*端控制,且由译码器输出端FEH送来 (也 可由P2口的某一根口线来控制)。因此,8031执行如 下两条指令就可在WR1*和CS*上产生低电平信号,使 0832MOV 接收8031 R0,送来的数字量。 #0FEH ;DAC地址FEH→R0 MOVX @R0,A ;WR*和译码器FEH输出端有效 现举例说明DAC0832单缓冲方式的应用。 例11-1 DAC0832用作波形发生器。分别写出产生锯 齿波、三角波和矩形波的程序
(1)锯齿波的产生 0RG2000H START:M0VRO,#0FEH;DA地址FEH→R M0VA,#00H;数字量→A L00P:MoVX@R0,A;数字量→D/A转换器 INC A 数字量逐次加1 SJMP LOOP 5V 11-6
(1) 锯齿波的产生 ORG 2000H START:MOV R0,#0FEH ;DAC地址FEH→ R0 MOV A,#00H ;数字量→A LOOP: MOVX @R0,A ;数字量→D/A转换器 INC A ;数字量逐次加1 SJMP LOOP
输入数字量从0开始,逐次加1,为FFH时,加1 清0,模拟输岀又为0,然后又循环,输岀锯齿波,如 图11-6。 每一上升斜边分256个小台阶,每个小台阶暂留 时间为执行后三条指令所需要的时间。 (2)三角波的产生 0RG2000H START: MOV RO. #OFEH MOV A. 00H UP:MVX@R0,A;三角波上升边 INC A JNZ P DOWN: DEC A ;A=0时再减1又为FFH MOVX @RO, UNZ DOWN;三角波下降边 SJMP UP
输入数字量从0开始,逐次加1,为FFH时,加1则 清0,模拟输出又为0,然后又循环,输出锯齿波,如 图11-6。 每一上升斜边分256个小台阶,每个小台阶暂留 时间为执行后三条指令所需要的时间。 (2) 三角波的产生 ORG 2000H START: MOV R0,#0FEH MOV A,#00H UP: MOVX @R0,A ;三角波上升边 INC A JNZ UP DOWN: DEC A ;A=0时再减1又为FFH MOVX @R0,A JNZ DOWN ;三角波下降边 SJMP UP
5V 11-7 (3)矩形波的产生 0RG2000H START: MOV RO. #FOFEH LOOP. MOv A. #datal M0VX@R,A;置矩形波上限电平 LCALL DELAY1;调用高电平延时程序 MOV A. #data. 2
(3) 矩形波的产生 ORG 2000H START: MOV R0,#0FEH LOOP: MOV A,#data1 MOVX @R0,A ;置矩形波上限电平 LCALL DELAY1 ;调用高电平延时程序 MOV A,#data2