Você está na página 1de 15

ISUTIC - Instituto Superior para as Tecnologias de

Informação e Comunicação

Engenharia de Telecomunicações
(2º Ano – 4º Semestre)

Disciplina de Microprocessadores

ELABORADO POR:

Prof: Adilson G.
Domingos

Luanda 2018
AulA 1: PIC18F4550 PISCANDO LED USANDO O MPLAB C18 E O PROTEUS 8.1
#include<P18F4550.h> // inclui os arquivos do PIC18F4550

#include<delays.h> // inclui a biblioteca delays(atrasos)

//// Configurções específicas do PIC18F4550 no MPLAB

#pragma config PLLDIV = 5 // PLL para 20MHz

#pragma config CPUDIV = OSC1_PLL2 // PLL desligado

#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns

#pragma config WDT = OFF // Watchdog desativado

#pragma config PBADEN = OFF // PORTB começa como digital

#pragma config LVP = OFF // Sem gravação em baixa tensão

#pragma config XINST = OFF // Desativa o modo de programação estendida

void main(void){ // funcao principal da linguagem C

TRISD = 0x00; // configura portal D como saída

PORTD=0X00; // inicializa todos os pinos do port D em zero

for(;;){ // laço infinito com o for

PORTD = 0XFF; // coloca todo PORTD em alto

Delay10KTCYx(10); // deley de um segundo

PORTD = 0X00; // coloca todo PORTD em baixo

Delay10KTCYx(10); // delay de um segundo

}
AulA 2: PISCANDO LED USANDO O MPLAB C18 E O PROTEUS 8.1
#include<P18F4550.h> // inclui os arquivos do PIC18F4550
#include<stdlib.h>
#include<stdio.h>
#include<delays.h> // inclui a biblioteca delays(atrasos)
//// Configurções específicas do PIC18F4550 no MPLAB
#pragma config PLLDIV = 5 // PLL para 20MHz
#pragma config CPUDIV = OSC1_PLL2 // PLL desligado
#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns
#pragma config WDT = OFF // Watchdog desativado
#pragma config PBADEN = OFF // PORTB começa como digital
#pragma config LVP = OFF // Sem gravação em baixa tensão
#pragma config XINST = OFF // Desativa o modo de programação
estendida
#define B1 PORTBbits.RB0
#define L1 LATEbits.LATE1
void main(void){ // funcao principal da linguagem C
// ADCON1=6;
TRISB = 0X01;
TRISE = 0X00;
L1=0;
for(;;){ // laço infinito com o for
// inicializa o pino do port RD0 em zero
if(B1){
L1=0;
}
else{
L1=1;}
}
}
AulA 3: Acendendo e apagando LED com o mesmo Botão USANDO O MPLAB C18 E
O PROTEUS 8.1
#include<P18F4550.h> // inclui os arquivos do PIC18F4550
#include<stdlib.h>
#include<stdio.h>
#include<delays.h> // inclui a biblioteca delays(atrasos)
//// Configurções específicas do PIC18F4550 no MPLAB
#pragma config PLLDIV = 5 // PLL para 20MHz
#pragma config CPUDIV = OSC1_PLL2 // PLL desligado
#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns
#pragma config WDT = OFF // Watchdog desativado
#pragma config PBADEN = OFF // PORTB começa como digital
#pragma config LVP = OFF // Sem gravação em baixa tensão
#pragma config XINST = OFF // Desativa o modo de programação
estendida

#define B1 PORTBbits.RB0
#define L1 LATEbits.LATE1
short x=0;
void main(void){ // funcao principal da linguagem C
// ADCON1=6;
TRISB = 0X01;
TRISE = 0X00;

L1=0;
INTCON2bits.RBPU = 0; // ativa pul-ups

for(;;){ // laço infinito com o for


// inicializa o pino do port RD0 em zero

if(B1==0){ if (x==0){Delay10KTCYx(1000);
L1=1;x=1;}
}
else {
if(B1==0){ if (x==1){Delay10KTCYx(1000);
L1=0;x=0;}
} }
}
}
AulA 4: contador com Display de 7 Segmento USANDO O MPLAB C18 E O
PROTEUS 8.1
#include<P18F4550.h>

//// Configurções
#pragma config PLLDIV = 5 // PLL para 20MHz
#pragma config CPUDIV = OSC1_PLL2 // PLL desligado
#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns
#pragma config WDT = OFF // Watchdog desativado
#pragma config PBADEN = OFF // PORTB começa como digital
#pragma config LVP = OFF // Sem gravação em baixa tensão
#pragma config XINST = OFF // Desativa o modo de programação estendida

// Definições de hardware
#define INC PORTBbits.RB0 // DISP1
#define DEC PORTBbits.RB1 // DISP1
#define DISP4 PORTAbits.RA5 // DISP4
#define DISP3 PORTAbits.RA2 // DISP3
#define DISP2 PORTEbits.RE0 // DISP2
#define DISP1 PORTEbits.RE2 // DISP1
#define DISPLAY PORTD // Segmentos do display ligados em PORTD

void main(void){
// Declaração de variáveis
int i = 0;
// tabela de dígitos do display (matriz com 10 posições)
char table[] = { 0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111100, // 6
0b00000111, // 7
0b01111111, // 8
0b01100111, // 9
0b01110111, // A (10)
0b01111100, // B (11)
0b01011000, // C (12)
0b01011110, // D (13)
0b01111001, // E (14)
0b01110001 // F (15)
};
// *** Inicialização
ADCON1 = 0x0F;
DDRD = 0x00; // configura port D como saída
DDRAbits.RA5 = 0; // DISP4 é saída
DDRAbits.RA2 = 0; // DISP3 é saída
DDREbits.RE0 = 0; // DISP2 é saída
DDREbits.RE2 = 0; // DISP1 é saída

//****Seleciona o display em que vai ser apresentado o valor *****


//Podes ativar um outro display aplicando 1 e desabilitando os outros

DISP1 = 0; // DISP1 ligado se for catodo comum


DISP2 = 1; // DISP2 desligado
DISP3 = 1; // DISP3 desligado
DISP4 = 1; // DISP4 desligado

INTCON2bits.RBPU = 0; // ativa pul-ups

while(1){
int i;
for ( i=0 ; i<=9 ; i++ ){
PORTD = table[i]; //Envia os dados para os pinos do DISPLAY
Delay10KTCYx(10000); // delay de um segundo
//****Seleciona o dado que será i=7; apresentado****
}

} }
AulA 5:

#include<P18F4550.h>

//// Configurções
#pragma config PLLDIV = 5 // PLL para 20MHz
#pragma config CPUDIV = OSC1_PLL2 // PLL desligado
#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns
#pragma config WDT = OFF // Watchdog desativado
#pragma config PBADEN = OFF // PORTB começa como digital
#pragma config LVP = OFF // Sem gravação em baixa tensão
#pragma config XINST = OFF // Desativa o modo de programação estendida

// Definições de hardware
#define INC PORTBbits.RB0 // DISP1
#define DEC PORTBbits.RB1 // DISP1
#define DISP4 PORTAbits.RA5 // DISP4
#define DISP3 PORTAbits.RA2 // DISP3
#define DISP2 PORTEbits.RE0 // DISP2
#define DISP1 PORTEbits.RE2 // DISP1
#define DISPLAY PORTD // Segmentos do display ligados em PORTD

void main(void){
// Declaração de variáveis
int i = 0;
// tabela de dígitos do display (matriz com 10 posições)
char table[] = { 0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111100, // 6
0b00000111, // 7
0b01111111, // 8
0b01100111, // 9
0b01110111, // A (10)
0b01111100, // B (11)
0b01011000, // C (12)
0b01011110, // D (13)
0b01111001, // E (14)
0b01110001 // F (15)
};

// *** Inicialização
ADCON1 = 0x0F;
DDRD = 0x00; // configura port D como saída
DDRAbits.RA5 = 0; // DISP4 é saída
DDRAbits.RA2 = 0; // DISP3 é saída
DDREbits.RE0 = 0; // DISP2 é saída
DDREbits.RE2 = 0; // DISP1 é saída

//****Seleciona o display em que vai ser apresentado o valor *****


//Podes ativar um outro display aplicando 1 e desabilitando os outros
DISP1 = 0; // DISP1 ligado se for catodo comum
Delay10KTCYx(10000); // delay de um segundo
DISP1 = 1; // DISP1 ligado se for catodo comum
Delay10KTCYx(10000); // delay de um segundo
DISP2 = 0; // DISP2 desligado
Delay10KTCYx(10000); // delay de um segundo
DISP2 = 1; // DISP2 desligado
Delay10KTCYx(10000); // delay de um segundo
DISP3 = 1; // DISP3 desligado
DISP4 = 1; // DISP4 desligado

INTCON2bits.RBPU = 0; // ativa pul-ups

while(1){
int i;
int j;
for ( i=0 ; i<=9 ; i++ ){
PORTD = table[i]; //Envia os dados para os pinos do DISPLAY
for ( j=0 ; j<=9 ; j++ ){
PORTD = table[j]; //Envia os dados para os pinos do DISPLAY

Delay10KTCYx(10000); // delay de um segundo


//****Seleciona o dado que será i=7; apresentado****
}

} }
}
#include<P18F4550.h>

//// Configurções
#pragma config PLLDIV = 5 // PLL para 20MHz
#pragma config CPUDIV = OSC1_PLL2 // PLL desligado
#pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns
#pragma config WDT = OFF // Watchdog desativado
#pragma config PBADEN = OFF // PORTB começa como digital
#pragma config LVP = OFF // Sem gravação em baixa tensão
#pragma config XINST = OFF // Desativa o modo de programação estendida

// Definições de hardware
#define INC PORTBbits.RB0 // DISP1
#define DEC PORTBbits.RB1 // DISP1
#define DISP4 PORTAbits.RA5 // DISP4
#define DISP3 PORTAbits.RA2 // DISP3
#define DISP2 PORTEbits.RE0 // DISP2
#define DISP1 PORTEbits.RE2 // DISP1
#define DISPLAY PORTD // Segmentos do display ligados em PORTD

void main(void){
// Declaração de variáveis
int i = 0;
// tabela de dígitos do display (matriz com 10 posições)
char table[] = { 0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111100, // 6
0b00000111, // 7
0b01111111, // 8
0b01100111, // 9
0b01110111, // A (10)
0b01111100, // B (11)
0b01011000, // C (12)
0b01011110, // D (13)
0b01111001, // E (14)
0b01110001 // F (15)
};

// *** Inicialização
ADCON1 = 0x0F;
DDRD = 0x00; // configura port D como saída
DDRAbits.RA5 = 0; // DISP4 é saída
DDRAbits.RA2 = 0; // DISP3 é saída
DDREbits.RE0 = 0; // DISP2 é saída
DDREbits.RE2 = 0; // DISP1 é saída

//****Seleciona o display em que vai ser apresentado o valor *****


//Podes ativar um outro display aplicando 1 e desabilitando os outros
DISP1 = 1; // DISP3 desligado
DISP2 = 1; // DISP4 desligado
DISP3 = 1; // DISP3 desligado
DISP4 = 1; // DISP4 desligado
INTCON2bits.RBPU = 0; // ativa pul-ups

while(1){
int i;
int j=0;
for ( i=0 ; i<=9 ; i++ ){
PORTD = table[i]; //Envia os dados para os pinos do DISPLAY
//Envia os dados para os pinos do DISPLAY

for ( j=0 ; j<=9 ; j++ ){


PORTD = table[j]; //Envia os dados para os pinos do DISPLAY

DISP1 = 0; // DISP1 ligado se for catodo comum


Delay10KTCYx(10000); // delay de um segundo
DISP1 = 1; // DISP2 desligado
Delay10KTCYx(10000); // delay de um segundo
DISP2 = 0; // DISP1 ligado se for catodo comum
Delay10KTCYx(10000); // delay de um segundo
DISP2 = 1; // DISP2 desligado
Delay10KTCYx(10000); // delay de um segundo

}
}
}
}

Você também pode gostar