EXAMEN FINAL MICROCONTROLADORES (44225) Alumno: Fecha: 12/12/2022 PREG. 1 -Si PORTB=0b01000110 , ¿Qué valor toma LATB al hacer?: LATB=(PORTB&0xff) -Para mostrar las letras a,b,c,d y e en minúscula en un display de 7 segmentos de ánodo común conectado al PORTB, ¿ qué valores debe tener LATB? coloque todos esos valores en un arreglo tal como se hizo en clase para mostrar número del 1 al 9. void setup_in(void) { ADCON1=0xff; TRISB=0; LATB=0; TRISAbits.RA0=1;} int main(int argc, char** argv) { int i; setup_in(); int display[6]= {0x77, 0x1F, 0x4E, 0x3D, 0x4F}; //conteo de letras A,B,C,D y E while(1) { delay_ms(100); if(PORTAbits.RA0==0) { i++; } if(i>6) { i=0; } LATB=display[i]; delay_ms(500); } return(EXIT_SUCCESS); } -¿Qué líneas de código debo escribir para colocar 1 pulsador conectado al pin RB2 y que cada vez q se presione el pulsador se encienda y apague un led conectado al RB3. Es decir, al presionar una vez se apaga y al presionar otra vez se prende. #include "pic18f4550.h" #include <stdio.h> #include "Config.h" #include <stdint.h> #include "reloj.h" #include <xc.h> #include "lcd.h" void main(void) { TRISBbits.RB2=1; TRISBbits.RB3=0; while(1) { if(PORTBbits.RB2=0) { LATBbits.LB3=1; } if(PORTBbits.RB2=1) { LATBbits.LB3=0; } } return; } -¿Cómo se puede mitigar el efecto rebote de los pulsadores conectados al PIC? Podemos eliminar el rebote mediante una configuración en hardware con unos capacitores, pero en programación, es posible con : if (input (PIN_A0)==1) { while (input(PINA0)==1); __delay_ms(10); //acciones que queremos ejecutar } PREG. 2 - Si para el ADC del pic18f4550 se usa Vref+=4.5v y Vref- =0v; ¿cuánto vale el valor digital si el voltaje analógico que ingresa a AN0 es de 2.4 v? - Para lograr que el TIMER1 se desborde a los 0.XYms, que valor de prescaler, TMR0 y XTAL se debe escoger? (XY dos últimos dígitos del alumno) - Para lograr un duty cycle de XY% en un PWM de periodo 1ms, que valor de CCPR1L debes escoger? Especifique el cristal escogido y cálculos realizados. - Para transmitir 50 veces en un segundo el mensaje “#examen2022#” desde el pic a otro pic, ¿a qué velocidad en baudios se debe transmitir? Explique la razón. PREG. 3 - Realizar un programa para que, al presionar un pulsador conectado al PIC, un display en cátodo muestre solo los valores impares hasta el 9. Al presionar otro pulsador debe mostrar los números pares hasta el 8. Además al superar el valor de 6 se debe prender un led. #include "reloj.h" #include <xc.h> #include "CONFIG.h" #include <stdint.h> #include "pic18f4550.h" #include <stdio.h> void main(void) { int i; float a; int display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x7d,7,0x7f,0x67}; ADCON1bits.PCFG=0x0f; TRISB=0; TRISA=1; LATB=0; LATC=display[i]; LATC=0; while(1) { if(PORTAbits.RA1==0) { if(a=i%2) { LATC=display[i]; } if(PORTAbits.RA2==0) { if(a!=i%2) { LATC=display[i]; } } if(i>6) { LATBbits.LB1=1; } } return ; } } PREG. 4 - Realizar un programa en MPLAB que consiste en mostrar en el virtual terminal las veces que se ha presionado un pulsador conectado a un pin del pic18f4550. Realizar la comunicación a 115200 baudios. Solo escribir el programa mencionando los cálculos realizados y explicando la razón de la configuración de cada registro.