Code:
'-----------------------------SPWM INT-----------------------------
CLEAR
INCLUDE "DT_INTS-18.bas" ; Base Interrupt System
INCLUDE "SPWM_INT.bas" ; Software PWM module
INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts
LED2 VAR PORTA.5
DEFINE SPWM_FREQ 100 ; SPWM Frequency
DEFINE SPWM_RES 101 ; SPWM Resolution
DutyVars VAR BYTE[16] ; DutyCycle Variables
DutyVar1 VAR DutyVars[0] ; group them in an array for easy access
DutyVar2 VAR DutyVars[1] ; with FOR loops etc.
DutyVar3 VAR DutyVars[2]
DutyVar4 VAR DutyVars[3]
DutyVar5 VAR DutyVars[4]
DutyVar6 VAR DutyVars[5]
DutyVar7 VAR DutyVars[6]
DutyVar8 VAR DutyVars[7]
DutyVar9 VAR DutyVars[8]
DutyVar10 VAR DutyVars[9]
DutyVar11 VAR DutyVars[10]
DutyVar12 VAR DutyVars[11]
DutyVar13 VAR DutyVars[12]
DutyVar14 VAR DutyVars[13]
DutyVar15 VAR DutyVars[14]
DutyVar16 VAR DutyVars[15]
ASM
SPWM_LIST macro ; Define Pin's to use for SPWM
SPWM_PIN PORTB, 0, _DutyVar1 ; and the associated DutyCycle variables
SPWM_PIN PORTB, 1, _DutyVar2 ; Notice the underscore before variables
SPWM_PIN PORTB, 2, _DutyVar3
SPWM_PIN PORTB, 3, _DutyVar4
SPWM_PIN PORTB, 4, _DutyVar5
SPWM_PIN PORTB, 5, _DutyVar6
SPWM_PIN PORTB, 6, _DutyVar7
SPWM_PIN PORTB, 7, _DutyVar8
SPWM_PIN PORTC, 0, _DutyVar9
SPWM_PIN PORTC, 1, _DutyVar10
SPWM_PIN PORTC, 2, _DutyVar11
SPWM_PIN PORTC, 3, _DutyVar12
SPWM_PIN PORTC, 4, _DutyVar13
SPWM_PIN PORTC, 5, _DutyVar14
SPWM_PIN PORTC, 6, _DutyVar15
SPWM_PIN PORTC, 7, _DutyVar16
endm
SPWM_INIT SPWM_LIST ; Initialize the Pins
ENDASM
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, SPWMhandler, ASM, yes
INT_Handler TMR0_INT, _ToggleLED2, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
T0CON = %10010010 ; T0 = 16-bit, Prescaler 8
@ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts
@ INT_ENABLE TMR0_INT ; enable Timer 0 interrupts
'-----------------------------Main Program-----------------------------
Main:
Bookmarks