SISTEMAS MICROCONTROLADOS - LAB 3

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 7

SISTEMAS MICROCONTROLADOS - LAB 3

Nome: Tiago Martelli Souza, Rodrigo Mero de Omena, Nathan Zavam


RA: 2313120, 2209152, 2410354

Pergunta 1 - Descreva os periféricos externos que podem ser conectados no


Kit Didático nas portas D e C.

R: Lâmpada, LED, tacógrafo, relé.

Pergunta 2 - Explique se há necessidade de configurar algum Dip Switch


para que os LEDs vermelhos do Kit Didático possam ser utilizados. Explique
qual é o tipo de ligação que esses LEDs vermelhos estão conectados (anodo
comum ou catodo comum).

R: Não há necessidade de configurar um Dip Switch. A ligação é anodo comum


para que o LED acenda, que é quando o nível lógico é baixo (ou seja, 0).

Pergunta 3 - Explique o funcionamento dos circuitos Push Bottons (SW9 a


SW14) do Kit Didático.

R: Por trabalharem com pull-up, são chaves de baixo ativas, eles forçam nível
baixo quando pressionados e não pressionados deixam nível alto.
FLUXOGRAMA DO CONTADOR BCD
CÓDIGO A PARTIR DO FLUXOGRAMA DOCUMENTADO

/*
* File: lab3.c
* Author: Nathan Zavam 2410354
* Rodrigo Méro de Omena 2209152
* Tiago Martelli Souza 2313120
*
* Created on 22 de Outubro de 2024, 14:47
*/

#include <xc.h>
#define _XTAL_FREQ 20000000

void imprime(int contadorAux){ //Liga os LEDs representando contador na


base binária
//Desliga todos os LEDs
PORTDbits.RD0 = 1;
PORTDbits.RD1 = 1;
PORTDbits.RD2 = 1;
PORTDbits.RD3 = 1;

if(contadorAux >= 8){ //Verifica começando do bit com valor 8


contadorAux -= 8;
PORTDbits.RD3 = 0; //Liga o Led 3
}
if(contadorAux >= 4){ //Verifica começando do bit com valor 4
contadorAux -= 4;
PORTDbits.RD2 = 0; //Liga o Led 2
}
if(contadorAux >= 2){ //Verifica começando do bit com valor 2
contadorAux -= 2;
PORTDbits.RD1 = 0; //Liga o Led 1
}
if(contadorAux >= 1){ //Verifica começando do bit com valor 1
contadorAux -= 1;
PORTDbits.RD0 = 0; //Liga o Led 0
}
}

void main(void) {
//Instancia Saidas(LEDs)
TRISDbits.TRISD0 = 0;
TRISDbits.TRISD1 = 0;
TRISDbits.TRISD2 = 0;
TRISDbits.TRISD3 = 0;
//Desliga todos os LEDs
PORTDbits.RD0 = 1;
PORTDbits.RD1 = 1;
PORTDbits.RD2 = 1;
PORTDbits.RD3 = 1;

//Instancia Entradas(Botoes)
TRISCbits.TRISC0 = 1;
TRISCbits.TRISC1 = 1;

int contador = 0;

while(1){
//Botao de Incremento e Decremento
if(!PORTCbits.RC0){ //Botão INC
__delay_ms(400); //Delay anti-bouncing
if(contador < 9) { //Verifica limite superior
cont++;
imprime(contador);
}
}
if (!PORTCbits.RC1){ //Botão DEC
__delay_ms(400);
if(contador > 0) { //Verifica limite inferior
cont--;
imprime(contador);
}
}
}
}

EXPLICAÇÃO DO FUNCIONAMENTO

Na primeira implementação foi no Proteus, feito com circuitos do programa e o


funcionamento era com dois botões, sendo o da direita para aumentar e o da
direita para diminuir. E também 4 LEDs vermelhos para a visualização dos
números indicados em BCD.
Número 3 sendo representado.

Número 6 sendo representado.

Quando implementado no Kit Didático, não foi possível conseguir nenhum


resultado. O problema poderia ser o próprio Kit com algum problema
desconhecido.
Arquivo compilado no MPLAB

Kit Didático utilizado


Verificando a integridade do circuito por uma saída de 5V.

DIFICULDADES

Tivemos dificuldades de implementar as entradas do CI no código. Outra


dificuldade que não foi superada foi fazer o código funcionar no Kit Didático.

Você também pode gostar