1、三角波输出程序
START:MOV DPTR,#7FFFH;向 DAC0832 输出的地址(取决于你电路中地址线的连
接方式)
DA:MOV R0,#80H;输出初始值入 R0(从 0 伏开始输出),兼做输出计数控制
UP:MOV A,R0;输出值入 A
MOVX @DPTR,A;正向增长,DA 转换输出
INC R0;输出值加 1
NOP;延时 1 微秒
NOP;延时 1 微秒
CJNE R0,#0FFH,UP;输出未到 5 伏则转 UP,继续正向增长
DOWN:DEC R0;输出值减 1
MOV A,R0;输出值入 A
MOVX @DPTR,A;反向减小,DA 转换输出
NOP;延时 1 微秒
NOP;延时 1 微秒
CJNE R0,#80H,DOWN;输出未到 0 伏则转 DOWN,继续反向减小
AJMP DA;一个周期结束进入下一个周期
注:此程序输出的三角波频率不是很精确的 500HZ,但相差也不大,
2、方波输出程序
START:MOV DPTR,#7FFFH;向 DAC0832 输出的地址(取决于你电路中地址线的连
接方式)
DA:MOV R0,#80H;输出初始值入 R0(从 0 伏开始输出),兼做输出计数控制
UP:MOV A,#80H;0 伏输出值入 A
MOVX @DPTR,A;0 伏 DA 转换输出
INC R0;输出计数加 1
NOP;延时 1 微秒
NOP;延时 1 微秒
CJNE R0,#0FFH,UP;未到半个周期则转 UP,继续 0 伏输出
DOWN:DEC R0;输出计数减 1
MOV A,#0FFH;5 伏输出值入 A
MOVX @DPTR,A;5 伏 DA 转换输出
NOP;延时 1 微秒
NOP;延时 1 微秒
CJNE R0,#80H,DOWN;输出未到 0 伏则转 DOWN,继续反向减小
AJMP DA;一个周期结束进入下一个周期
注:同样,此程序输出的方波频率不是很精确的 500HZ
三角波程序:
SSW: