看你的程序,你的电路图应该是这样的吧(用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) 可以,例如三角波中可把LJMP UP改成SJMP -12 结果是一样的
区别在于跳转的范围不同。
SJMP 在这条指令前128字节到后127字节之间跳转;
把程序存储器分32个区,每个区2K,AJMP跳转时必须与后一条指令的第一个字节在同一个 2KB范围内;
LJMP就没限制了,可在ROM中跳转到任何地方;
建议你能不用SJMP 最好别用(如果你不能准确的记住每条指令的字节数的话),偏移量算错的话,可要出大错了
(2) 可以
(3) 不可以,那样的话波形会有断点(A=0FFH 没有输出),导致三角波上面那个角是平的。
全部