当前位置:编程学习 > 汇编语言 >>

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

为什么这个程序就能产生三角波,且是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子程序
其他:估计是可以输出三角波吧. 控制输出频率的方法可以加入延时程序. 根据晶振频率计算出延时,然后插入到递增递减代码后边就完了. 

上一个:汇编语言程序设计题目,在线等答案!!!急!
下一个:为什么说,用c语言写的程序比汇编语言写的程序执行效率上要低,难道两者编译成的二进制代码有很大不同??

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,