buenas tardes, lo que pasa es que me han colocado a hacer un pwm y me dieron esta programacion
lo ejecute y corre bien osea buil sucedded pero quisiera entender esta programacion que significa para poder simularlo en proteus
Código:
; PWM
; En el puerto B se introduce un valor que determinará el ancho del pulso, que aparece en RC2/CCP1. El proceso es
; continuo dado que se trabaja en un ciclo infinito.
list p=16f877 ; list directive to define processor
#include <p16f877.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
; DEFINICIÓN DE VARIABLES ______________________________________________________________________________________
ANCHO EQU 0x020 ; Posición en RAM para la parte alta del contador de 2640 cambios equivalentes a 3s,
BANDERA EQU 0x022 ; Almacena bits de indicaciòn de procesos del programa
; CÓDIGO DEL PROGRAMA ___________________________________________________________________________________________
ORG 0x0000
GOTO INICIO
ORG 0x0020
INICIO BCF STATUS,RP0
BCF STATUS,RP1 ; Banco 0
CLRF PORTB ; Borrada memoria del puerto B
CLRF PORTC ; Borrada memoria del puerto C
BSF STATUS,RP0 ; Banco 1
MOVLW B'11111111'
MOVWF TRISB ; Puerto B entradas
MOVLW B'00000000'
MOVWF TRISC ; Puerto C salidas
MOVLW 0x0FF
MOVWF PR2 ; Se ajusta el preescaler al máximo
BCF STATUS,RP0 ; Banco 0
MOVLW 0x00F
MOVWF CCP1CON ; Modo PWM y los 2 bits menos significativos del ciclo de trabajo en cero
MOVLW 0x007
MOVWF T2CON ; Timer2 activado y preescaler divide por 16.
CICLO MOVF PORTB,0
MOVWF CCPR1L ; Carga los 8 bits más significativos del ciclo de trabajo
GOTO CICLO
SLEEP
END
Última edición por un moderador: