Here's the BASIC equivalent commands to the right of the assembly version.
bsf PWMCON1,UDIS just sets bit 1 in PWMCON1. bcf PWMCON1,UDIS thenCode: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
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