求一单片机高手帮忙检查 PWM加速 程序 急!!!!!!加分~~~~~

来源:百度知道 编辑:UC知道 时间:2024/06/28 10:23:28
程序如下
ORG 2000
MOV DPTR #0FF2BH
MOV A #80H
MOVX @DPTR A
MOV 30H #01H
MOV 40H #0FFH
MOV R4 #01H
W :MOV DPTR #0FF29H
MOV A # 0FFH
LCALL DEL1
INC 30H
MOV A #00H
MOVX @DPTR A
LCALL DEL2
DEC 40H
CJNE R4 #0FFH , W
DEL1 : MOV R0 30H
LP0 : MOV R1 #40H
LP1 : DJNZ R1 LP1
DJNZ R0 LP0
RET
END
DEL2 : MOV R3 40H
LP0 : MOV R2 #40H
LP1 : DJNZ R2 LP1
DJNZ R3 LP0
RET
END
怎么可以让电机加速明显~~~~·

DEL1是输出高电平的延时子程序,DEL2是输出低电平的延时子程序
按照程序的意思,应该是电机从静止慢慢加速,PWM占空比从1/256,一直增加到255/256。占空比的步进是1/128,如果要让电机的加速明显的话,应该加大步进值。
比如:
...
LCALL DEL1
INC 30H
INC 30H
MOV A,#00H
...
LCALL DEL2
DEC 40H
CJNE R4,#0FFH,W
DEC 40H
CJNE R4,$0FFH,W
...
我这里将步进值改为1/64,如果不够的话就多加几个“INC 30H”和“DEC 40H”,另外“CJNE R4,$0FFH,W”个数必须和“DEC 40H”个数一样,否则会出现死循环

你现在给出的程序,显然不是“原装”的程序。
其中有几个汉字的“:”,还有几个相同的标号,肯定是不能通过编译的。
根据这样的程序来查错,也未必能找到真正的错误。

粗看起来,这句:
MOV A #0FFH
下面,是不是应该有个:
MOVX @DPTR A ?

为啥你的PWM不用定时器做,只要改变矩形脉冲的占空比不就可以简单的实现了吗?

DEL1 : MOV R0 30H
DEL2 : MOV R3 40H
改30或者40的值应该可以,没细看