
单片机汇编语言编程 方波源程序如下,锯齿波和三角波的源程序怎么编写?
ORG 0000H
AJMP START
ORG 0050H
START: MOV DPTR,#0FEFFH
LP: MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY
MOV A,#00H
MOVX @DPTR,A
LCALL DELAY
SJMP LP
DELAY: MOV R3,#11
D1: NOP
NOP
NOP
NOP
NOP
DJNZ R3,D1
RET
END 展开
看你的程序,你的电路图应该是这样的吧(用P2.0做片选)
锯齿波源程序如下:
ORG 0000H
AJMP START
ORG 0050H
START: MOV DPTR,#0FEFFH
LP: MOV A,#00H
LP1: MOVX @DPTR,A
INC A
AJMP LP1
END
三角波源程序如下:
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
谢谢,正是我想要的!(1)锯齿波和三角波程序的倒数第二句 AJMP LP1和 LJMP UP中的AJMP和LJMP可以换成SJMP吗?他们有什么区别吗?
(2)三角波程序的倒数第二句 LJMP UP可以改为LJMP TRI吗?
(3) DEC A 可以放在MOVX @DPTR,A 前面吗?
要考试了,会给你加分的~
(1) 可以,例如三角波中可把LJMP UP改成SJMP -12 结果是一样的
区别在于跳转的范围不同。SJMP 在这条指令前128字节到后127字节之间跳转;
把程序存储器分32个区,每个区2K,AJMP跳转时必须与后一条指令的第一个字节在同一个 2KB范围内;
LJMP就没限制了,可在ROM中跳转到任何地方;
建议你能不用SJMP 最好别用(如果你不能准确的记住每条指令的字节数的话),偏移量算错的话,可要出大错了
(2) 可以
(3) 不可以,那样的话波形会有断点(A=0FFH 没有输出),导致三角波上面那个角是平的