Claro, porque al utilizar distinto microcontrolador puede ser que algún registro no estén en el mismo banco.
He estado indagando y he visto que en efecto los registros de cada banco no estaban direccionados segun el chip que uso yo (logico
). Tambien he visto que el bit RB3 en el 16f690 no existe, y que no hay salidas "especificas" de pwm. Quiere eso decir que puedo usar la que yo quiera?
De momento esto es lo que he modificado (que creo que esta bien)
Inicio
bsf STATUS,RP0 ; -
bsf STATUS,RP1 ; Banco 3
bsf TRISB,incre ; Como Entrada.-
bsf TRISB,decre ; Como Entrada.-
bcf TRISB,3 ; RB3 como Salida.
bcf STATUS,RP0 ; -
bcf STATUS,RP1 ; Banco 0.-
movlw b'00000110' ; Se selecciona TMR2, preescaler de 1/16.-
movwf T2CON
bsf STATUS,RP0 ; -
movlw 0x1E ; Senal de 2kHz
movwf PR2
bsf STATUS,RP0 ; Banco 0
clrf CCPR1L ; Ciclo de trabajo 0%
bcf CCP1CON,6
bcf CCP1CON,7
bcf CCP1CON,DC1B1
bcf CCP1CON,DC1B0
bsf CCP1CON,CCP1M3 ; Configura modulo CCP modo PWM.-
bsf CCP1CON,CCP1M2
De todos modos, aunque en un futuro si deseo pelearme con las interrupciones en este preciso instante no es necesario. Podria recortar alguna parte del codigo?(ver codigo completo a continuacion; codigo extraido de los tutoriales de SUKY, a quien aprovecho para agradecer su ayuda)
; PICkit 2 Lesson 1 - 'Hello World'
;
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0
;**** Definicion de variables ****
Contador1 equ 0x20 ;
Contador2 equ 0x21 ;
decre equ 0 ; Pulsador para decrementar Ciclo de Trabajo
incre equ 1 ; Pulsador para incrementar Ciclo de Trabajo
;/////////////////////////////////
;**** Inicio del Micro ****
Reset.
org 0x00 ; Aqui comienza el micro.-
goto Inicio ; Salto a inicio de mi programa.-
; **** Programa Principal ****
org 0x05
Inicio
bsf STATUS,RP0 ; -
bsf STATUS,RP1 ; Banco 3
bsf TRISB,incre ; Como Entrada.-
bsf TRISB,decre ; Como Entrada.-
bcf TRISB,3 ; RB3 como Salida.
bcf STATUS,RP0 ; -
bcf STATUS,RP1 ; Banco 0.-
movlw b'00000110' ; Se selecciona TMR2, preescaler de 1/16.-
movwf T2CON
bsf STATUS,RP0 ; -
movlw 0x1E ; Senal de 2kHz
movwf PR2
bsf STATUS,RP0 ; Banco 0
clrf CCPR1L ; Ciclo de trabajo 0%
bcf CCP1CON,6
bcf CCP1CON,7
bcf CCP1CON,DC1B1
bcf CCP1CON,DC1B0
bsf CCP1CON,CCP1M3 ; Configura modulo CCP modo PWM.-
bsf CCP1CON,CCP1M2
Bucle
btfsc PORTB,decre ; Testea si se quiere reducir CT.-
goto Decrementa
btfsc PORTB,incre ; Testea si se quiere aumentar CT.-
goto Incrementa
goto Bucle
Incrementa
incf CCPR1L,1
call Demora_50ms
goto Bucle
Decrementa
decf CCPR1L,1
call Demora_50ms
goto Bucle
;**** Demora ****
Demora_50ms
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1.-
Repeticion1
movlw 0x40 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-
goto Repeticion2 ; Si no es 0 repetimos ciclo.-
decfsz Contador1,1 ; Decrementa Contador1.-
goto Repeticion1 ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
;..............................................
end
Muchas gracias por la ayuda...con un poco de suerte algun dia no muy lejano hare de mi un programador de provecho
EDIT: segun el datasheet las salidas PWM se hallan en TRISC, me equivoco?