"Hola mundo" con MPLAB, C18 y PIC18F

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ก.ย. 2024
  • Video de apoyo al documento "Hola mundo" con MPLAB, C18 y PIC18F.
    Lo pudes encontrar en:
    perfectalgorith...

ความคิดเห็น • 3

  • @meinotherside1
    @meinotherside1 12 ปีที่แล้ว

    Gracias por la explicacion , esta muy bueno el video

  • @nahuelalejandropereyra8552
    @nahuelalejandropereyra8552 5 ปีที่แล้ว

    Se puede escribir en .asm

  • @Juanfonsecamaia
    @Juanfonsecamaia 9 ปีที่แล้ว

    poderia me ajudar ?
    FIZ UM FREQUENCIMETRO, COM PRESCALER 1:1 E MEU PROFESSOR PEDIU PRA EU MUDAR PRA 1:4. NÃO SEI COMO PROCEDER.
    // Exemplo de Frequencímetro digital utilizando CCP
    #include
    #include
    #include
    #include "xlcd_mod.c"
    // Configurações
    #pragma config FOSC = HS
    #pragma config CPUDIV = OSC1_PLL2 // sinal de clk do sistema é o oscliador primário
    #pragma config PBADEN = OFF // Pinos do PORTB começam como digitais
    #pragma config PWRT = ON // Power Up Timer habilitado
    #pragma config WDT = OFF // Watchdog desativado
    #pragma config LVP = OFF // Desabilita gravação em baixa tensão
    #pragma config DEBUG = ON // habilita debug
    #pragma config CCP2MX = ON // Pino RC1 utilizado em CCP2
    // Variáveis globais
    char k=0, ct_p = 0;
    long int per, freq;
    // Protótipos das Funções de Interrupção
    void ISR_Padrao(void);
    ///////////////////////////////////////////////////////////////////////
    // Interrupção padrão
    #pragma code high_vector=0x08 // int. de alta prioridade
    void int_alta(void)
    {
    _asm GOTO ISR_Padrao _endasm
    }
    #pragma code
    #pragma interrupt ISR_Padrao
    void ISR_Padrao(void)
    {
    ct_p=1;
    k++;
    per = (CCPR2H*256)+(CCPR2L);
    TMR1H = 0;
    TMR1L = 0;
    PIR2bits.CCP2IF = 0; // zera flag da int CCP2
    }
    ///////////////////////////////////////////////////////////////////////
    void main()
    {
    char freq_disp[] = {"00000"};
    DDRCbits.RC1 = 1; // RC1/CCP2 como entrada
    // Iniciação do LCD
    OpenXLCD( FOUR_BIT & LINES_5X7 );
    WriteCmdXLCD(0x01);
    Delay10KTCYx(10);
    // Configuração to Timer1 (Incremento a cada 8 Tcy)
    T1CON = 0b10111001;
    PIR1bits.TMR1IF = 0; // zera flag do Timer1
    TMR1H = 0;
    TMR1L = 0;
    // Seleção de Timer1
    T3CONbits.T3CCP1 = 0;
    T3CONbits.T3CCP2 = 0;
    CCP2CON = 0b00000101; // Capture para borda de subida, prescaler 1:1
    //Configuração das interrupções
    RCONbits.IPEN = 1; // habilita prioridade
    PIR2bits.CCP2IF = 0; // zera flag da interrupção CCP2
    PIE2bits.CCP2IE = 1; // habilita interrupção do CCP2
    IPR2bits.CCP2IP = 1;
    INTCONbits.GIEH = 1; // habilita int.
    INTCONbits.GIEL = 1; // habilita int. periféricos
    while(1)
    {
    if (ct_p)
    {
    freq = 625000/per;
    ct_p=0;
    }
    if (k==5) // Atualiza display a cada 5 interrupções
    {
    ltoa(freq,freq_disp);
    WriteCmdXLCD(0x80);
    putrsXLCD("Freq: ");
    putsXLCD(freq_disp);
    putrsXLCD(" Hz ");
    WriteCmdXLCD(0x0C);
    k=0;
    }
    }
    }