Here's the BASIC equivalent commands to the right of the assembly version.
Code:
FOR Duty = 50 TO $500 STEP 4
ASM
bsf PWMCON1,UDIS ; PWMCON1.1 = 1
MOVFF _Duty,PDC0L ; PDCOL = Duty.LowByte
MOVFF _Duty+1,PDC0H ; PDC0H = Duty.HighByte
MOVFF _Duty,PDC1L ; PDC1L = Duty.LowByte
MOVFF _Duty+1,PDC1H ; PDC1H = Duty.HighByte
MOVFF _Duty,PDC2L ; PDC2L = Duty.LowByte
MOVFF _Duty+1,PDC2H ; PDC2H = Duty.HighByte
;MOVFF _Duty,PDC3L ; PDC3L = Duty.LowByte
;MOVFF _Duty+1,PDC3H ; PDC3H = Duty.HighByte
bcf PWMCON1,UDIS ; PWMCON1.1 = 0
ENDASM
PAUSE 50
NEXT Duty
bsf PWMCON1,UDIS just sets bit 1 in PWMCON1. bcf PWMCON1,UDIS then
clears the UDIS bit.
MOVFF is move file to file.
MOVFF _Duty,PDC0L moves the low byte of Duty into file register PDC0L.
MOVFF _Duty+1, PDC0H moves the high byte of Duty into file register PDC0H.
Placing the underscore before the _Duty variable allows you to access the
variable declared in BASIC with assembler.
So the BASIC version would look like this;
Code:
FOR Duty = 50 TO $500 STEP 4
PWMCON1.1 = 1
PDC0L = Duty.LowByte
PDC0H = Duty.HighByte
PDC1L = Duty.LowByte
PDC1H = Duty.HighByte
PDC2L = Duty.LowByte
PDC2L = Duty.HighByte
PDC3L = Duty.LowByte
PDC3H = Duty.HighByte
PWMCON1.1 = 0
PAUSE 50
NEXT Duty
FOR Duty = $500 TO 50 STEP-4
PWMCON1.1 = 1
PDC0L = Duty.LowByte
PDC0H = Duty.HighByte
PDC1L = Duty.LowByte
PDC1H = Duty.HighByte
PDC2L = Duty.LowByte
PDC2L = Duty.HighByte
PDC3L = Duty.LowByte
PDC3H = Duty.HighByte
PWMCON1.1 = 0
PAUSE 50
NEXT Duty
Bookmarks