求汇编语言高手帮解释下这个三角波程序

为什么这个程序就能产生三角波,且是P2.0为信号输出(要是太复杂这个问题就算了)?要怎么修改输出的频率?这个程序这样算完善吗?要怎么改
ORG 0000H
AJMP START
ORG 0050H
START: MOV DPTR,#0FEFFH
TRI: MOV A,#00H
UP: MOVX @DPTR,A
INC A
CJNE A,#0FFH,UP
DOWN: MOVX @DPTR,A
DEC A
CJNE A,#00H,DOWN
LJMP UP
END

START: MOV DPTR,#0FEFFH
TRI: MOV A,#00H
UP: MOVX @DPTR,A
INC A
CJNE A,#0FFH,UP
这段程序设置片外DAC地址在FEFFH也就是P2.0=0的地方,P2.0又是接你的片外DAC的片选讯号,所以在P2.0=0时候片外DAC有效,之後开始做三角波的输出,上面这段程序是从0递增到FF也就是三角波的正斜率部分从0到最高点,下面这段程序是做负斜率部分,也就是从FF递减到0,也就是从最高点到0点
DOWN: MOVX @DPTR,A
DEC A
CJNE A,#00H,DOWN
LJMP UP

要改变频率,可以在每个INC A或是DEC A之後跟著一段延时的delay子程序
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-04
估计是可以输出三角波吧. 控制输出频率的方法可以加入延时程序. 根据晶振频率计算出延时,然后插入到递增递减代码后边就完了.
相似回答