
O programa: ; programa para gerar um sinal pwm com frequencia de saída PWM ;de 1,25KHZ UTILIZANDO OSCILADOR INTERNO. ;a) Quando RA0 estiver em 1, o duty cycle é de 25%. ;b) Quando RA1 estiver em 1, o dutycycle é de 50%. ;c) Quando RA2 estiver em 1, o duty cycle é de 75%. ;d) Quando RA3 estiver em 1, o dutycycle é de 100%.
O programa: ; programa para gerar um sinal pwm com frequencia de saída PWM ;de 1,25KHZ UTILIZANDO OSCILADOR INTERNO. ;a) Quando RA0 estiver em 1, o duty cycle é de 25%. ;b) Quando RA1 estiver em 1, o dutycycle é de 50%. ;c) Quando RA2 estiver em 1, o duty cycle é de 75%. ;d) Quando RA3 estiver em 1, o dutycycle é de 100%.
O programa:
; programa para gerar um sinal pwm com frequencia de saída PWM
;de 1,25KHZ UTILIZANDO OSCILADOR INTERNO.
;a) Quando RA0 estiver em 1, o duty cycle é de 25%.
;b) Quando RA1 estiver em 1, o dutycycle é de 50%.
;c) Quando RA2 estiver em 1, o duty cycle é de 75%.
;d) Quando RA3 estiver em 1, o dutycycle é de 100%.
; O VENTILADOR DO KIT P04 SERÁ ACIONADO PELO PINO RC1 (PINO 16)
;QUE É A SAÍDA DO MÓDULO CCP2 QUANDO EM PWM
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; CONFIG FOSC = XT_XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOR = ON, BORV = 0
CONFIG FOSC = INTOSCIO_EC, FCMEN = OFF, IESO = OFF, PWRT = ON, BOR = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
;CONFIG CCP2MX = PORTC, STVREN = OFF,
CONFIG LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
#INCLUDE <P18F4550.INC> ; MICROCONTROLADOR UTILIZADO
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE BT_1 PORTA,0
#DEFINE BT_2 PORTA,1
#DEFINE BT_3 PORTA,2
#DEFINE BT_4 PORTA,3
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
RETFIE
ORG 0X0018
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000000'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111001'
MOVWF TRISC ; PINO RC2 E RC1 COMO SAIDA
MOVLW B'11110000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW .99
MOVWF PR2 ;PARA FREQUÊNCIA DE 2,5KHZ CO OSCILADOR INTERNO
MOVLW B'00000000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E PERIFERICOS E TMR0
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
MOVLW B'00110010'
MOVWF OSCCON
; MOVLW B'11001111'
;MOVWF OSCTUNE
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
CLRF CCP2CON
MAIN
CALL DC_25
CALL DC_50
CALL DC_75
CALL DC_100
GOTO MAIN
DC_25
BTFSS BT_1
RETURN
BSF T2CON,2
MOVLW .25 ;PARA DC DE 25%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_1
BTFSC BT_1
GOTO TESTE_LIB_1
CLRF CCP2CON ;DESLIA MÓDULO CCP
BCF T2CON,2
RETURN
DC_50
BTFSS BT_2
RETURN
BSF T2CON,2
MOVLW .50 ;PARA DC DE 50%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_2
BTFSC BT_2
GOTO TESTE_LIB_2
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
DC_75
BTFSS BT_3
RETURN
BSF T2CON,2
MOVLW .75 ;PARA DC DE 75%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_3
BTFSC BT_3
GOTO TESTE_LIB_3
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
DC_100
BTFSS BT_4
RETURN
BSF T2CON,2
MOVLW .100 ;PARA DC DE 100%
MOVWF CCPR2L
MOVLW B'00001100' ;SAIDA SIMPLES (P1A)<7:6>,00 PARTE BAIXA DA RESOLUÇAO<5:4>
MOVWF CCP2CON ;P1A E P1B ATIVOS ALTOS <3:0>
TESTE_LIB_4
BTFSC BT_4
GOTO TESTE_LIB_4
CLRF CCP2CON ;DESLIGA MÓDULO CCP
BCF T2CON,2
RETURN
reew4
END ; FIM DO PROGRAMA
Passos para a realização do MAPA de Microprocessadores e Microcontroladores
O MAPA deverá contar com 4 etapas:
1ª ETAPA: parte teórica (1,0 ponto)
Na primeira etapa, o estudante deverá:
a) Apresentar o trecho do programa responsável por variar o Duty Cycle do PWM de cada uma das larguras de pulso:
- 25%
- 50%
- 75%
- 100%
- Demonstrar o funcionamento do PWM por meio de um exemplo de aplicação.
- Demonstrar a operação do Prescaler no microcontrolador e sua relação com a velocidade do clock dele.
2ª ETAPA: download do código do experimento
Conforme as linhas de código em assembly, deve o estudante realizar o download do código por meio do link:
https://drive.google.com/file/d/1GqauoDOf_XflutFXm_o3UphNhxe1wtrk/view?usp=sharing
Todas as informações deste experimento estão disponíveis no link:
https://221322w.ha.azioncdn.net/Arquivo/ID/8051/experimentos/rotinas-de-contagem-e-modulacao-em-largura-de-pulso.html, incluindo o roteiro e vídeo explicativos.
O estudante deve agendar com o polo presencial de sua cidade um momento para montar o experimento, gravar o programa no microcontrolador e verificar seu funcionamento para fins de concluir a atividade com as conclusões dadas na 4ª etapa.
3ª ETAPA: montagem do experimento (1,5 ponto)
O estudante deve acessar o roteiro dado na Etapa 2 para seguir rigorosamente os passos dados no diagrama e no vídeo de instruções para realizar os testes com o microcontrolador.
Documentar a montagem do experimento por meio de registro fotográfico deste.
4ª ETAPA: conclusões (1,0 ponto)
Nesta etapa, o estudante deve concluir o porquê dos resultados obtidos, apresentando suas conclusões sobre como ocorre a geração do Ciclo de Trabalho (Duty-cycle) a partir do programa, relacionando sua resposta com o incremento e o decremento que ocorrem quando pressionados os botões.
O estudante deve explicar com suas palavras como o PWM gerado poderia ser utilizado para controlar a velocidade de um eixo de motor elétrico de corrente contínua (CC).


