Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RB3: C
RB4: D RB5: E
RB6: F
RB7: G
Y se configuran como salida, conectndolos al display.
Se escoge el puerto RA0 y se configura como salida, conectndolo con un
pulsador y una resistencia.
Se inicializan todos los puertos del PIC en 0.
Se empieza el cdigo con while(1) para crear un bucle infinito.
Se pone una condicin que permita iniciar la cuenta del display presionando
el pulsador. (RA0=1)
Al presionar el pulsador, se da inicio a la cuenta segn el siguiente cuadro:
RB1
RB2
RB3
RB4
RB5
RB6
RB7
INICIO
TRISAbits.TRISA0=1;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0;
TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;
TRISBbits.TRISB6=0;
TRISBbits.TRISB7=0;
NO
PORTAbits.RA0=0;
PORTBbits.RB1=0;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
SI
NO
RA0=1
FIN
SI
RB1
RB2
RB3
RB4
RB5
RB6
RB7
CDIGO:
/*
* File:
Display_7.c
* Author: PERSONAL
*
* Created on 13 de julio de 2016, 08:39 AM
*/
// CONFIG
#pragma config FOSC = XT
oscillator)
#pragma config WDTE = OFF
#pragma config PWRTE = ON
Timer is enabled)
#pragma config CP = OFF
protection disabled)
#include <xc.h>
#define _XTAL_FREQ 4000000
void main(void)
{
TRISAbits.TRISA0=1;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0;
TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;
TRISBbits.TRISB6=0;
TRISBbits.TRISB7=0;
PORTAbits.RA0=0;
PORTBbits.RB1=0;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
while(1)
{
if (RA0==1)
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=0;
__delay_ms(1000);
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=0;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=0;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=0;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=0;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
}
}
RB3: C
RB4: D RB5: E
RB6: F
RB7: G
Y se configuran como salida, conectndolos al display.
Se escogen los puertos:
RA0
RA1
RA2
RA3
presionado
RA1 no est
presionado
RA1 no est
presionado
RA3 est presionado
Entonces:
RB1, RB4, RB5, RB6,
RB7 estn apagados.
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
__delay_ms(1000);
}
La siguiente tabla muestra cmo deben estar presionados los logicstate para
mostrar los nmeros en el display.
0
1
2
3
4
5
6
7
8
9
RA0
8
0
0
0
0
0
0
0
0
1
1
RA1
4
0
0
0
0
1
1
1
1
0
0
RA2
2
0
0
1
1
0
0
1
1
0
0
RA3
1
0
1
0
1
0
1
0
1
0
1
CODIGO:
/*
* File:
DISPLAY_logic.c
* Author: PERSONAL
*
* Created on 13 de julio de 2016, 11:43 AM
*/
// CONFIG
#pragma config FOSC = XT
oscillator)
#pragma config WDTE = OFF
#pragma config PWRTE = ON
Timer is enabled)
#pragma config CP = OFF
protection disabled)
#include <xc.h>
#define _XTAL_FREQ 4000000
void main(void)
{
TRISAbits.TRISA0=1;
TRISAbits.TRISA1=1;
TRISAbits.TRISA2=1;
TRISAbits.TRISA3=1;
TRISBbits.TRISB1=0;
TRISBbits.TRISB2=0;
TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;
TRISBbits.TRISB6=0;
TRISBbits.TRISB7=0;
PORTAbits.RA0=0;
PORTAbits.RA1=0;
PORTAbits.RA2=0;
PORTAbits.RA3=0;
PORTBbits.RB1=0;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
if(RA0==0&&RA1==0&&RA2==0&&RA3==0)//0
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=0;
__delay_ms(1000);
}
if(RA0==0&&RA1==0&&RA2==0&&RA3==1)//1
{
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
__delay_ms(1000);
}
if(RA0==0&&RA1==0&&RA2==1&&RA3==0)//2
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=0;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=0;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==0&&RA1==0&&RA2==1&&RA3==1)//3
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==0&&RA1==1&&RA2==0&&RA3==0)//4
{
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==0&&RA1==1&&RA2==0&&RA3==1)//5
{
PORTBbits.RB1=1;
PORTBbits.RB2=0;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==0&&RA1==1&&RA2==1&&RA3==0)//6
{
PORTBbits.RB1=1;
PORTBbits.RB2=0;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==0&&RA1==1&&RA2==1&&RA3==1)//7
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
PORTBbits.RB6=0;
PORTBbits.RB7=0;
__delay_ms(1000);
}
if(RA0==1&&RA1==0&&RA2==0&&RA3==0)//8
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=1;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
if(RA0==1&&RA1==0&&RA2==0&&RA3==1)//9
{
PORTBbits.RB1=1;
PORTBbits.RB2=1;
PORTBbits.RB3=1;
PORTBbits.RB4=1;
PORTBbits.RB5=0;
PORTBbits.RB6=1;
PORTBbits.RB7=1;
__delay_ms(1000);
}
}