是牛哥的就来看看
最近一直在用汇编来写用S52控制多路舵机的程序,可是还是老有问题,各位牛哥帮忙来看看问题,谢谢了先……$MOD52
ORG 000H
MOV TMOD,#01H
MOV A,#00H
CHUSHI:
MOV DPTR,#TABLE0 ;改此处的值调用MOOP
MOV R5,#00H ;R5作为计数器来控制指针DPTR的流程
MOV R7,#04H ;R7用来记录TABLE的行数来让其结束
ACALL MOOP
;
MOOP: MOVC A,@A+DPTR ;A用来作为中间变量来不停将TABLE中的值赋予R变量中
MOV R0,A
INC R5
MOV A,R5
MOVC A,@A+DPTR
MOV R1,A
INC R5
MOV A,R5
MOVC A,@A+DPTR
MOV R2,A ;赋予接口P2值
INC R5
MOV A,R5
MOVC A,@A+DPTR
MOV R6,A ;赋予接口P1值
INC R5
MOV A,R5
MOVC A,@A+DPTR
MOV R3,A
INC R5
MOV A,R5
MOVC A,@A+DPTR
MOV R4,A
INC R5
MOV A,R5
LCALL TIME0 ;调用TIME0输出PWM方波
DJNZ R7,MOOP ;用R7来判断TABLE是否读完
RETI
;
TABLE0: DB 0FAH,099H,88H,00H,0BDH,065H ;主要内容部分
DB 0F8H,0CCH,44H,00H,0BFH,032H
DB 0FBH,0CCH,22H,00H,0BCH,032H
DB 0FBH,033H,11H,00H,0BCH,0CBH
;
TIME0:
CLR TR0
MOV TH0,R0
MOV TL0,R1 ;R0,R1用来控制高电平的时间
MOV P2,R2 ;R2为二进制控制舵机端口的数值
MOV P1,R6
CLR TF0
SETB TR0
LOOP: JNB TF0,LOOP
MOV P2,#00H
MOV P1,#00H
CLR TR0
MOV TH0,R3 ;R3,R4接口用来控制低电平时间
MOV TL0,R4
CLR TF0
SETB TR0
OOOP: JNB TF0,OOOP
RETI