Escolar Documentos
Profissional Documentos
Cultura Documentos
A grande vantagem da famlia PIC que todos os modelos possuem um set de instrues bem parecido, assim como
mantm muitas semelhanas entre suas caractersticas bsicas. Desta maneira, ao conhecermos e estudarmos o
PIC18F4520, famliarizarno-nos com todos os rncrocontroladores da Microchip, o que torna a migrao para outros
modelos muito mais simples. Os recursos estudados encontram-se disponveis em diversos outros modelos.
PINAGEM
CICLOS DE INSTRUO
*os endereos so alocados em nmeros pares, logo deve-se tomar cuidado com as instrues
goto $-x.
Mnemonico,operando
ADDWF f,d,a
ADDWFC f,d,a
ANDWF f,d,a
CLRF f,d,a
COMF f,d,a
CPFSEQ f,a
CPFSGT f,a
CPFSLT f,a
DECF f,d,a
DECFSZ f,d,a
DECFSNZ
f,d,a
INCF f,d,a
INCFSZ f,d,a
INCFSNZ
IORWF
f,d,a
f,d,a
MOVF
f,d,a
MOVFF fs,fd
MOVLW
k
MOVWF
f,a
MULWF
f,a
NEGF f,a
RLCF f,d,a
RLNCF
RRCF
f,d,a
f,d,a
RRNCF f,d,a
SET F f,a
SUBFW f,d,a
SUBFWB f,d,a
SUBWFB f,d,a
SWAPF f,d,a
TSTFSZ f,a
XORWF f,d,a
Descrio
Ciclos
Status afetado
C,DC,Z,OV,N
C,DC,Z,OV,N
Z,N
Z,N
1 ou 3
nenhum
1 ou 3
nenhum
1 ou 3
nenhum
C, DC, Z, OV, N
1 ou 3
nenhum
1 ou 3
nenhum
C, DC, Z, OV, N
1 ou 3
nenhum
1 ou 3
nenhum
Z,N
Z,N
nenhum
nenhum
nenhum
nenhum
C, DC, Z, OV, N
C, Z, N
Z,N
C, Z, N
Z,N
nenhum
C, DC, Z, OV, N
C, DC, Z, OV, N
C, DC, Z, OV, N
nenhum
1 ou 3
nenhum
Z,N
Ciclos
BCF
BSF
1
1
Status
afetado
nenhum
nenhum
1 ou 3*
nenhum
1 ou 3*
nenhum
nenhum
BTFSC
BTFSS
BTG
f,b,a
f,b,a
f,b,a
f,b,a
f,b,a
OSCILADOR RC: Este tipo de oscilador utiliza um resistor e um capacitor trabalhando como
carga e descarga como base de tempo, dessa forma acoplado ao pino OSC1 (RA7), onda o
fabricante recomenda que o s valores de R e C sejam 3K R EXT 100KHZ e o capacitor seja
CEXT>20pF. Para o oscilador RC existem duas configuraes, so elas:
1) RC OSCILLATOR MODE: nessa configurao o pino OSC2 (RA6) fornece a frequncia de
oscilao/4 conforma mostra a figura 3
Figura 1
2) RCIO OSCILLATOR MODE: nessa configurao, o pino OSC2 (RA6) pode ser utilizado
como entrada e sada digital conforme figura 4.
Figura 2
RESSOADOR CERMICO: mais preciso que o oscilador do tipo RC, nesse tipo de
ressoador obrigatoriamente utiliza-se dois pinos do microcontrolador (OSC1 e OSC2) para
a conexo com o resssoador conforme figura 5:
Figura 3
Os valores dos capacitores utilizados para osciladores com ressoador de cermico segue
na tabela a baixo na figura 6.
Figura 4
Figura 5
PORTA
porta,7
I/O
pino 13
porta,6
I/O
pino 14
porta,5
I/O
pino 7
porta,4
I/O
pino 6
porta,3
I/O
pino 5
porta,2
I/O
pino 4
porta,1
I/O
pino 3
porta,0
I/O
pino 2
portb,2
I/O
pino 35
portb,1
I/O
pino 34
portb,0
I/O
pino 33
portc,2
I/O
pino 17
portc,1
I/O
pino 16
portc,0
I/O
pino 15
portd,2
I/O
pino 21
portd,1
I/O
pino 20
portd,0
I/O
pino 19
PORTB
portb,7
I/O
pino 40
portb,6
I/O
pino 39
portb,5
I/O
pino 38
portb,4
I/O
pino 37
portb,3
I/O
pino 36
PORTC
portc,7
I/O
pino 26
portc,6
I/O
pino 25
portc,5
I/O
pino 24
portc,4
I/O
pino 23
portc,3
I/O
pino 18
PORTD
portd,7
I/O
pino 30
portd,6
I/O
pino 29
portd,5
I/O
pino 28
portd,4
I/O
Pino 27
portd,3
I/O
pino 22
PORTE
porte,3
I
pino 1
porte,2
I/O
pino 10
porte,1
I/O
pino 9
porte,0
I/O
pino 8
Para simplificao, o processo de leitura deve ser efetuado nos PORTs, e o processo de
escrita nos LATs.
INTCON
INTCON2
INTCON3
RCON
PIE1
PIE2
PIR1
PIR2
IPR1
IPR2
Uma modificao no sistema de interrupes da linha 18F em relao 16F, que quando
no estiver utilizando o sistema de prioridade nas interrupes, ou seja, somente o sistema da
alta prioridade, os registradores BSR, STATUS e WREG so salvos e resgatados
automaticamente sem a necessidade de rotinas para este fim, basta que ao final da interrupo a
instruo de retorno seja da seguinte forma.
*cuidado: quando estiver tratando com dois nveis de prioridade de interrupes, caso a
rotina de tratamento de interrupes de alta prioridade tenha mais que dez linhas, o que muitas
vezes acontece, no dever ser escrita o endereo da interrupo de baixa prioridade em
seguida, pois o compilador mostrar o erro de que o endereo 0x0018 est sobrescrito, assim
deve-se criar as rotinas de tratamento de interrupes em endereos diferentes.
retfie fast ;no utilizar este recurso quando estiver habilitado o sistema de prioridade
Exerccio:
1) Desenvolver um programa em linguagem assembly para o microcontrolador
PIC18F4520 que liga um led em RD0, sempre que houver uma borda de subida no
boto RB0, e quando for liberado o boto o led dever apagar. (utilizar o sistema de
prioridades desabilitado)
2) Desenvolver um programa em linguagem assembly para o microcontrolador
PIC18F4520 que liga os leds: LED(RD0), LED1(RD1) e LED2(RD2) sempre que houver
uma borda de subida nos botes BT(RB0), BT1(RB1) e BT2(RB2) respectivamente.
(habilitar o sistema de prioridades e configurar somente RB2 para baixa prioridade.
3) Implementar um programa de controle de um semforo de um cruzamento de duas ruas
(A e B) que funcione com ciclo total de 20 segundos, onde o ciclo de cada rua de 10
segundos, divididos em 10 segundos para o vermelho, 7 segundos para o verde e dois
segundos para o amarelo.
Quando o equipamento for ligado as lmpadas amarelas dos dois semforos devero
piscar por 5 vezes em intervalos de 1 segundo e depois ir para o ciclo com semforo A no
verde. Segue abaixo os pinos do microcontrolador PIC-18F4520 a que sero utilizados.
4) Desenvolver o programa para um torno cnc que faz dois trabalhos em uma pea. Uma
ferramenta FURA a pea e a outra LIMPA o furo, sendo que a mesma far o processo em 2
segundos para furar e 2 para limpar.
Quando for dado um pulso negativo na tecla start, o torno dever entrar em funcionamento
furando a pea.
Caso a porta do torno seja aberta o mesmo dever interromper o seu funcionamento e sinalizar
atravs de uma lmpada (RD0) que a porta est aberta.
O torno s dever voltar a funcionar aps ser fechada a porta e pressionado a tecla start
novamente, devendo voltar do mesmo lugar de onde parou antes da porta ser aberta.
Dicas: para o monitoramento da porta dever utilizar interrupo externa em RB0.
DADOS:
Bt start -------------------RA0 (ativo baixo)
Porta----------------------RB0 (ativo alto)
Ferramenta Fura-------RD2
Ferramenta Limpa-RD1
O TIMER0 pode ser incrementado a cada ciclo de mquina ou tambm pode ter o
incremento atrasado por meio de um prescaler, dessa forma de acordo com os bits <2:1:0> do
T0CON, pode se escolher aps quantos ciclos de maqui o TMR0 ser incrementado.
Ex: caso a opo escolhida seja T0CON<2:1:0> como 010 , o timer sofrer um incremento
a cada 4 ciclos de mquina, assim, ao invs de estourar com 255 ciclos ir estourar com (4x255)
que igual a 1020 ciclos de mquina.
Postscaler: ajusta quantas vezes o tmr2 dever estourar para gerar uma interrupo, e
pode ser configurado pelos bits TOUTPS3:TOUTPS0 do registrador T2CON.
Outra diferena entre o TMR2 com os outros temporizadores que o mesmo estoura
quando TMR2=PR2, ou seja no estoura quando chega no valor mximo (256), estoura quando
chegar ao valor carregado no registrador PR2.
O TMR2 zerado sempre que houver um reset.
9) Desenvolver um programa que faz a converso de um nmero carregado em w para o
equivalente em um display de sete segmentos, ou seja, no programa principal wreg
ser carregado e a interrupo em TMR2 far a converso e apresentar no display em
intervalos de 1ms de acordo com o hardware a seguir.
10) Desenvolver parte de um relgio de 4 digitos do tipo MM:SS que apresenta os valores
dos segundo e minutos em 4 displays de sete segmentos, sendo que a atualizao dos
displays ser executada por TMR2 e o tempo de incremento (a cada 1 segundo) ser
realizado por TMR0.
DADOS: barramento do display PORTD (de d1 d7)
Catdos dos displays
Q1=RC0, Q2=RC1, Q3=RC2, e Q4= RC3
11) Desenvolver um relgio de 6 digitos do tipo HH:MM:SS que apresenta os valores das
horas (0 - 12) dos segundos e minutos em um display de LCD do tipo 16x2.
A primeira linha dever apresentar a mensagem RELOGIO DIGITAL
A segunda linha dever apresentar os valores do relgio.
O tempo de incremento (a cada 1 segundo) ser realizado por TMR0.
A atualizao do Display ser feita tambm por TMR0
DADOS: barramento do display PORTD (de D0 D7)
O pino ENABLE dever ser ligado ao PORTE,0
O pino RS dever ser ligado ao PORTE,1