Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
List p=16f877a #include <p16f877a.inc> #include <up_macros.inc> __CONFIG H'3F32' ERRORLEVEL -302, -305 cblock 0x20 car_rx endc prescal equ .4 ;4 ou .16 Fosc equ .16000 ;KHz Fpwm equ .10 ;KHz duty equ .60 ;% k_pr2 equ Fosc/.4/Fpwm/prescal - 1 IF k_pr2 > D'255' ERROR "PR2 max. = 255" ENDIF duty10 equ duty*(k_pr2+1)/D'25' k_ccpr1l equ duty10/4 ;0x3C ou 0x0F duty2L equ duty10 & 3 ;Calcula Freq con parametros definidos freq equ Fosc*D'250'/prescal/(k_pr2+1) org 0x00 goto inicio org 0x04 inicio: banco1 movlw 0x07 movwf ADCON1 bcf TRISC,RC2 ;Configura periodo do PWM movlw k_pr2 movwf PR2 banco0 ;Configura prescaler IF prescal == 1 bcf T2CON,1 bcf T2CON,0 ENDIF IF prescal == 4 bcf T2CON,1 bsf T2CON,0 ENDIF IF prescal == 16 bsf T2CON,1 bcf T2CON,0 ENDIF ;Configura Duty cycle movlw k_ccpr1l movwf CCPR1L IF duty2L == 0 bcf CCP1CON,5 bcf CCP1CON,4 ENDIF IF duty2L == 1 bcf CCP1CON,5 bsf CCP1CON,4 ENDIF IF duty2L == 2 bsf CCP1CON,5 bcf CCP1CON,4 ENDIF IF duty2L == 3 bsf CCP1CON,5 bsf CCP1CON,4 ENDIF ;Liga o TMR2 bsf T2CON,TMR2ON ;Define CCP1 como PWM bsf CCP1CON,CCP1M3 bsf CCP1CON,CCP1M2 ;Envia Freq call Inicia_LCD call LCD_txt_freq movlw LCD_Linha_2 call EnviaCmdLCD clrf Binario5 clrf Binario4 clrf Binario3 movlw high freq movwf Binario2 movlw low freq movwf Binario1 call bin40_bcd call prt_3bcd.3bcd_khz loop goto $ #include "up_bin40-bcd.asm" #include "up_md_lcd_driver.asm" #include "up_mensagens.asm" END
Compartilhar