gedza
Junior Member level 2
I'M HAVING A PROBLEM WITH LOOKUP VALUES IN THIS PROGRAM IF I INCREASE THE VALUE IN STEPCOUNT TO 200 AND INCREASE THE NUMBER OF LOOKUP VALUES TO 200 THE MPLAB SIMULATOR DOES NOT SHOW CHANGES OF DUTY CYCLE WHEN PR2 MATCHES TIMER 2.When the value initially loaded to the temporary register is between zero and 170 the program performs well on the simulator but i want it to perform sinusoidal pwm with two outputs at ccp1 and a complimentary output at RD5 when I load 200 .Is it that the simulator can be wrong and if loaded into the pic the program can work .help me debugg it please.
;**********************************************************************************************************************************************************************************************************************************************************************
; Name July.asm
; Date July 4,2011
; Version 1.00
; Programmer: Gerald .F. Murwira
; To an Awesome *** who gave his only begotten Son for us to be saved.
;***********************************************************************************************************************************************************************************************************************************************************************
;DESCRIPTION PURE SINE WAVE INVERTER
;*************************************************************************************************************************************************************************************************************************************************************************
list p=16f887
#include <p16f887.inc>
errorlevel -302
;*****************************************************************************************************************************************************************************************************************************************************************************
;TEMPORARY REGISTERS
;*****************************************************************************************************************************************************************************************************************************************************************************
STEPCOUNT EQU 0X20
TEMPW EQU 0X21
TEMPS EQU 0X22
;***********************************************************************************************************************************************************************************************************************************************************************
;START OF MAIN PROGRAM
;***********************************************************************************************************************************************************************************************************************************************************************
ORG 0X000
goto main
;************************************************************************************************************************************************************************************************************************************************************************
;INTERRUPT SERVICE ROUTINE
;************************************************************************************************************************************************************************************************************************************************************************
ORG 0X004
MOVWF TEMPW ;SAVE WORK REGISTER
MOVF STATUS,W
MOVWF TEMPS
BANKSEL CCPR1L
CALL TABLE
MOVWF CCPR1L
DECF STEPCOUNT
BTFSS STATUS,Z
goto exit
goto reload
reload
MOVLW .200
MOVWF STEPCOUNT
exit
MOVF TEMPS,W
MOVWF STATUS
SWAPF TEMPW,F
SWAPF TEMPW,W
BANKSEL PIR1
BCF PIR1,TMR2IF
BSF INTCON,GIE
RETFIE
main
MOVLW .200
MOVWF STEPCOUNT
BANKSEL TRISC
BSF TRISC,2
BSF TRISD,5
BANKSEL PR2
MOVLW 0XF9
MOVWF PR2
BANKSEL CCP1CON
CLRF CCP1CON
MOVLW 0X8C
MOVWF CCP1CON
BANKSEL CCPR1L
MOVLW .28
MOVWF CCPR1L
BANKSEL T2CON
BCF T2CON,T2CKPS0
BCF T2CON,T2CKPS1
BANKSEL T2CON
BSF T2CON,TMR2ON
LOOP1 BTFSS PIR1,TMR2IF
GOTO LOOP1
BCF PIR1,TMR2IF
BANKSEL TRISC
BCF TRISC,2
BCF TRISD,5
BANKSEL PIE1
BSF PIE1,TMR2IE
BSF INTCON,PEIE
BSF INTCON,GIE
LOOP2
goto LOOP2
TABLE
MOVF STEPCOUNT,W
ADDWF PCL,F
200 LOOKUP VALUES
END
;**********************************************************************************************************************************************************************************************************************************************************************
; Name July.asm
; Date July 4,2011
; Version 1.00
; Programmer: Gerald .F. Murwira
; To an Awesome *** who gave his only begotten Son for us to be saved.
;***********************************************************************************************************************************************************************************************************************************************************************
;DESCRIPTION PURE SINE WAVE INVERTER
;*************************************************************************************************************************************************************************************************************************************************************************
list p=16f887
#include <p16f887.inc>
errorlevel -302
;*****************************************************************************************************************************************************************************************************************************************************************************
;TEMPORARY REGISTERS
;*****************************************************************************************************************************************************************************************************************************************************************************
STEPCOUNT EQU 0X20
TEMPW EQU 0X21
TEMPS EQU 0X22
;***********************************************************************************************************************************************************************************************************************************************************************
;START OF MAIN PROGRAM
;***********************************************************************************************************************************************************************************************************************************************************************
ORG 0X000
goto main
;************************************************************************************************************************************************************************************************************************************************************************
;INTERRUPT SERVICE ROUTINE
;************************************************************************************************************************************************************************************************************************************************************************
ORG 0X004
MOVWF TEMPW ;SAVE WORK REGISTER
MOVF STATUS,W
MOVWF TEMPS
BANKSEL CCPR1L
CALL TABLE
MOVWF CCPR1L
DECF STEPCOUNT
BTFSS STATUS,Z
goto exit
goto reload
reload
MOVLW .200
MOVWF STEPCOUNT
exit
MOVF TEMPS,W
MOVWF STATUS
SWAPF TEMPW,F
SWAPF TEMPW,W
BANKSEL PIR1
BCF PIR1,TMR2IF
BSF INTCON,GIE
RETFIE
main
MOVLW .200
MOVWF STEPCOUNT
BANKSEL TRISC
BSF TRISC,2
BSF TRISD,5
BANKSEL PR2
MOVLW 0XF9
MOVWF PR2
BANKSEL CCP1CON
CLRF CCP1CON
MOVLW 0X8C
MOVWF CCP1CON
BANKSEL CCPR1L
MOVLW .28
MOVWF CCPR1L
BANKSEL T2CON
BCF T2CON,T2CKPS0
BCF T2CON,T2CKPS1
BANKSEL T2CON
BSF T2CON,TMR2ON
LOOP1 BTFSS PIR1,TMR2IF
GOTO LOOP1
BCF PIR1,TMR2IF
BANKSEL TRISC
BCF TRISC,2
BCF TRISD,5
BANKSEL PIE1
BSF PIE1,TMR2IE
BSF INTCON,PEIE
BSF INTCON,GIE
LOOP2
goto LOOP2
TABLE
MOVF STEPCOUNT,W
ADDWF PCL,F
200 LOOKUP VALUES
END
Last edited: