Hola amigos escribi un programa para un 16F877A para generar uma onda senoidal de 60 Hz con el modulo CCP, el Pic corre a 20Mhz pero no completa todo el PWM el modulo esta como PWM con un pre scaler en 4 si lo configuro para que el pre scaner con valor 1 funciona bien les envio el codigo..........coloque como comentario ciertas partes del programa que de momento no importaban a mi parecer, lo quiero con el pre scaler con valor 4 pues asi tengo tiempo para cargar los valores de la tabla gracias de antemano
list p=16f877a
include "p16f877a.inc"
CBLOCK 0X20
Cuenta1, Cuenta2, ANGULO
ENDC
ORG 0
GOTO INICIO
Tabla_P:
ADDWF PCL,F
DT .0, .3, .6, .9, .13, .16, .19, .22, .25, .28,.31,.34,.37,.40,.43,.46,.48,.51, .54, .56, .59, .62, .64, .67, .69
DT .71, .73, .76, .78, .80, .82, .84, .85, .87, .89,.90,.92,.93,.94,.96,.97,.98,.99,.100,.100,.101,.102,.102,.102,.103
DT .103,.103,.103,.103,.103,.102,.102,.102,.101,.100,.99,.99,.98,.97,.95,.94,.93,.92, .90, .89, .87, .85, .83, .81, .79
DT .77, .75, .73, .71, .69, .66, .64, .61, .59, .56,.53,.51,.48,.45,.42,.39,.36,.34, .31, .28, .24, .21, .18, .15, .12
DT .9, .6, .3
INICIO
BSF STATUS,RP0
CLRF TRISC ; SALIDA
MOVLW D'103' ;
MOVWF PR2
bcf STATUS,RP0
bcf T2CON,1 ; Prescaler en 4
bsf T2CON,0
BCF CCP1CON,5 ;
bcf CCP1CON,4 ;
bsf CCP1CON,3 ; 1100 PWM
bsf CCP1CON,2
bcf CCP1CON,1
bsf CCP1CON,0
clrf PORTC
clrf ANGULO
bsf T2CON,2 ; TMR2 ON
START
BTFSS PIR1,TMR2IF
GOTO START
;MOVF CCP1CON,W ; 0010 1100
;ANDLW B'00001100' ; 0000 1100
;MOVWF Cuenta2
;MOVLW D'10'
MOVF Tabla_P,W
MOVWF CCPR1L
;MOVWF cuenta1 ; 11000000
;RRF Cuenta1,F
;RRF Cuenta1,F; 00110000
;MOVF Cuenta1,W
;ADDWF cuenta2,F;
;MOVF Cuenta2,W
;MOVWF CCP1CON
movlw D'104'
xorwf ANGULO,W
btfsc STATUS,Z
clrf ANGULO
movf ANGULO,W
call Tabla_P
movwf CCPR1L
incf ANGULO,F
bcf PIR1,TMR2IF
GOTO START
END