Uploaded by YIUTIRANUS

EXAMEN FINAL ANTERO

advertisement
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.
Download