Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objectivos
Implementao de um sistema de visualizao hexadecimal com 3 displays, com a construo de uma rotina para
refrescamento dos 3 displays por multiplexagem no tempo.
Introduo terica
Este documento propriedade da ATEC - Academia de Formao.
Preparado de acordo com o referencial de formao do CNQ para o curso 523229- Tcnico/a Especialista de Automao Robtica e Controlo
Industrial (NQ:5). Documento actualizado em 11.06.2013
O MPLab IDE da Microchip a ferramenta de desenvolvimento que o fabricante disponibiliza aos programadores. Este
ambiente de desenvolvimento conta j com 6 geraes e muitos anos de experincias, aperfeioamentos, adio de novas
tecnologias, que o tem mantido a par dos melhores IDE que existem, para inmeras linguagens de programao.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 1
2.
3.
4.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 2
5.
O terceiro passo permite-nos atribuir um nome ao nosso projeto e guard-lo numa pasta
6.
7.
A caixa de dilogo final do Project Wizard apresenta o resumo dos passos efetuados, indicando o dispositivo
selecionado, as ferramentas e o nome de projeto;
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 3
8.
Depois da criao do "project", ter terminado, altura de comearmos a escrever um programa. Um novo ficheiro
deve ser aberto e vai ser para abrir um novo ficheiro, clica-se em FILE>NEW
9.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 4
//comentrios
chamado de comentrio. Os comentrios so descries inseridas no cdigo-fonte pelo programador com o
intuito de documentar o programa.
__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);
Configura o estado dos fusveis da palavra configurao, vejamos cada item deste config.
FOSC_INTRCIO - Habilita o oscilador interno, mantendo os pinos RA4 e RA5 como portas.
WDTE_OFF - Basicamente um contador de ciclo de instrues separado do programa principal, a sua funo
fazer o RESET do programa caso o WDT no seja limpo pelo software.
MCLRE_OFF - MASTER CLEAR ENABLE (Habilita o
acionado atravs do pino 4 quando em VSS, ou seja quando levamos a massa o pino 4. evidente que nesta
condio ele perde a funo de PORTA,5 (RA5), para trabalhar apenas como RESET, para tanto devemos ligar um
resistncia do pino para VDD, e um interruptor do pino para VSS.
CP_OFF - CODE PROTECT (cdigo de proteo) tem por finalidade no permitir quando habilitado ( ON), que
Este documento propriedade da ATEC - Academia de Formao.
Preparado de acordo com o referencial de formao do CNQ para o curso 523229- Tcnico/a Especialista de Automao Robtica e Controlo
Industrial (NQ:5). Documento actualizado em 11.06.2013
void main()
Especifica o nome de uma funo. No caso, a funo padronizada na linguagem C e utilizada para
definir a funo principal, ou corpo principal do programa.
A partir este ponto poderemos iniciar o nosso programa.
TRISC=0B00000000;
Inicializao do porto quando necessrio usar uma ou mais linhas de E/S de um determinado porto, importante
fazer-se a sua inicializao logo no incio da rotina main do programa. A inicializao no mais que a
configurao da direo dos dados presentes nas linhas de E/S
O registo TRIS um registo programvel de 1 byte (8 bits) disponvel no banco 1 (memria RAM), que controla se
uma linha em particular uma entrada ou uma sada. Existe um registo TRIS para cada porto.
Todos os bits contidos nos registos mencionados, correspondem univocamente a uma linha de entrada/ sada de
um bit. Por exemplo, o bit 0 do registo PORTC e do registo TRISC, correspondem linha RC0, o bit 1 linha RC1 e
assim por diante. Um 1 no bit 0 do registo TRIS configura a linha como entrada enquanto um 0 configura a linha
como sada.
PORTC=0B00000000;
Uma vez configuradas as direes pretendidas das linhas do porto, por programao do registo TRIS, pode-se
efetuar leituras ou escritas no porto usando o registo PORT.
ANSEL=0B00000000;
No PIC16F677, podemos selecionar como entrada analgica, por programao. O registo ANSEL e ANSELH
configuram as linhas do PIC como entradas analgicas/digitais ou referncia; a entrada selecionada deve ser
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 5
programada como entrada afetando o bit correspondente no registo TRIS. No exemplo todos os registos AN0 at
AN7 sero considerados entradas digitais.
RC0=1;
Ativa o bit 0 do porto C correspondendo ao pino 16 do PIC 16F677
10. Uma vez escrito o programa faz-se a designao (como em todos os programas Windows) clicando em
FILE>SAVE AS, ao qual vamos designar por "exerc_X.c
"
11. Aps o programa escrito vamos adicionar o ficheiro ao nosso projeto. Com o rato em Source Files clica no boto
do lado direito e seleciona Add Files.
12. Aps a escrita do programa e adicionado ao projeto, Vamos agora compilar o nosso programa. Recorrendo ao
comando PROJECT -> BUILD ALL (se no existirem erros), uma nova janela idntica representada na figura ao
lado.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 6
b) Realizar as ligaes necessrias entre conector do PICKIT 2 e dispositivo que se deseja programar.
c)
Abrir o projeto anteriormente efetuado a em MPLAB que contm o cdigo a ser programado.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 7
Esquema
Trabalhos a realizar
1. Escreva um programa que faz com que um LED, ligado porta RC0, seja aceso, caso um interruptor
C, ligada porta RB4, esteja em 1. Caso contrrio, o LED apaga-se.
2. Escreve um programa que faz com que o LED, ligado ao pino RC0 da porta B acenda e apague a
cada segundo.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 8
3. Escreve um programa que utiliza a cada impulso em RC0, alterne o estado do rel ligado a RC6
4. Escreve um programa que utiliza um display de 7 segmentos, ligado ao porto C . para mostrar o valor
de um interruptor ligado ao pino RB4. Se o interruptor estiver ligado, o display exibe o nmero 1. Caso
contrrio, exibido o nmero 0.
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 9
6. Escreve um programa que faa ligar sequencialmente cada um dos leds, ligado aos pino RC0 a RC7.
7. Igual ao programa anterior, mas quando chegar sada RC7 recua at a RC0.
8. Contador 0 a 999, com boto RESET.
R10
R11
10k
10k
19
18
17
4
3
2
13
12
11
10
RA0/AN0/C1IN+/ICSPDAT/ULPWU RC0/AN4/C2IN+
RA1/AN1/C12IN0-/VREF/ICSPCLK RC1/AN5/C12IN1RA2/AN2/T0CKI/INT/C1OUT
RC2/AN6/C12IN2RA3/MCLR/VPP
RC3/AN7/C12IN3RA4/AN3/T1G/OSC2/CLKOUT
RC4/C2OUT
RA5/T1CKI/OSC1/CLKIN
RC5
RC6/AN8/SS
RB4/AN10/SDI/SDA
RC7/AN9/SDO
RB5/AN11
RB6/SCK/SCL
RB7
16
15
14
7
6
5
8
9
R1
R2
R3
330R
R4
330R
R5
330R
R6
330R
R7
330R
330R
330R
R8
Q1
BC548
R9
Q2
R13
BC548
10k
Q3
BC548
10k
10k
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 10
EXERCCIOS RESOLVIDOS
Exerccio 1
#include<htc.h>
__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);
#define _XTAL_FREQ 4000000
void main()
{
TRISC=0;
PORTC=0;
ANSEL=0;
while(1)
{
RC0=1;
}
}
Exerccio 2
#include<htc.h>
__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);
#define _XTAL_FREQ 4000000
#define led RC0
#define bot RB4
void main()
{
TRISB4=1;
TRISC=0;
PORTC=0;
ANSEL=0;
ANSELH=0;
while(1)
{
if(bot) {led=1;}
else {led=0;}
}
}
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores 1
Pgina 11
Exerccio 3
#include<htc.h>
__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);
#define _XTAL_FREQ 4000000
void main()
{
TRISC=0;
PORTC=0;
ANSEL=0;
while(1)
{
RC0=1;
__delay_ms (1000);
RC0=0;
__delay_ms (1000);
}
}
________________________________________________________________________________________________________________
Trabalhos Laboratoriais Microcontroladores N3
Pgina 12