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
}
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
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
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
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
} }
}
#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
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
}
}
}
}