Escolar Documentos
Profissional Documentos
Cultura Documentos
Comecando Progamacao Pic
Comecando Progamacao Pic
Universidade de So Paulo
PCS2031 Laboratrio de
Microprocessadores
Experincia
Microcontroladores PIC
1. Objetivos
Esta experincia tem a finalidade de aproximar o aluno, ao universo
dos microcontroladores, utilizando como exemplo a famlia PIC da
Microchip. Iremos implementar nesta experincia, um programa para gerar
uma onda quadrada em um pino de sada do PIC.
2. Introduo famlia de microcontroladores PIC
Tipicamente um microcontrolador se caracteriza por incorporar no
mesmo encapsulamento um microprocessador, memria de programa e
dados e vrios perifricos como temporizadores, watchdog timers,
comunicao serial, conversores Analgico/Digital, geradores de PWM, etc,
fazendo com que o hardware final fique extremamente complexo.
A Microchip uma empresa precursora no uso de tecnologia RISC
(Reduced Instruction Set Computer) em microcontroladores. Diferente da
arquitetura Von Neumann, a estrutura RISC baseada em barramentos
independentes para dados e para programa, e tem como caracterstica
fundamental os tamanhos diferenciados (por ex: no PIC16C55X o
barramento de dados de 8 bits, enquanto o de programa de 14 bits) o
que significa que uma instruo est empacotada em uma nica palavra
de programa (no caso do PIC16C55X de 14 bits), que alm de conter o
opcode (instruo) contm os operandos (dados para execuo da
instruo).
Preo
LINHA BASE
Palavras de Instruo
12 bits
PIC 16C5X
TMR0
INTERMEDIRIO
Palavras de Instruo
14 bits
PIC 16CXXX
TMR0/1/2, EEPROM,
Interface Serial, A/D
LCD
TOPO DE LINHA
Palavras de Instruo
16 bits
PIC 17CXXX
TMR0/1/2, Captura,
Interface Serial, A/D
PWM
PIC 12CXX
TMR0, Oscilador Int.
Desempenho Relativo
Figura 1 Evoluo dos Microcontroladores PIC
_2
_3
CPU
8
Memria
Programa
& Dados
Memria
Dados
CPU
8
barramentos
12
14
16
de
Memria
Programa
_4
_5
5. Mapa de registradores
Todas as instrues aritimticas e booleanas so feitas atravs do
registrador de trabalho W. O destino da operao pode ser o prprio
registrador W ou um dos registradores disponveis no microcontrolador,
dependendo unicamente da instruo executada.
ULA
INDFTMR0PCLSTATU
SFSRPORTAOutros
SFRsRegistradores
de uso geral
(RAM)
6. Interrupes
7. Famlia 16F84A
Alm das caractersticas gerais da arquitetura dos microcontroladores
PIC vistas at agora, existem outros aspectos peculiares aos membros de
cada famlia. Como a diversidade de componentes muito grande, vamos
analisar as caractersticas dos componentes da famlia 16F84A.
_6
7.1.
_7
7.2.
Device
PIC16F83
PIC16F84
PIC16CR83
PIC16CR84
Program
Memory
(words)
Data
RAM
(bytes)
Data
EEPROM
(bytes)
Max.
Freq.
(MHz)
512 Flash
1K Flash
512 ROM
1K ROM
36
68
36
68
64
64
64
64
10
10
10
10
Todas instrues com um ciclo exceto para desvios que levam dois
ciclos
Capacidade de interrupo
7.4.
_8
Caractersticas Gerais
XT cristal padro
7.5.
_9
7.7.
_10
_11
_12
_13
Interface de I/O
Todos os pinos de I/Os podem ser usados tanto como entrada quanto
sada. A sua direo definida pelos registradores de direo TRISA e
TRISB. Cada bit desses registradores corresponde a um pino de I/O que,
quando setado, corresponde entrada e, quando resetado, corresponde
sada. Por exemplo, se quisermos setar o PORTB com o nibble menos
significativo como entrada e o mais significativo como sada, ento o valor a
ser escrito em TRISB ser 00001111 em binrio, ou 0F em hexadecimal.
Nota-se que o dado de sada se mantm armazenado em um flip-flop
independente do pino de I/O estar configurado como entrada ou sada. Esse
dado se mantm nessa condio at que um novo dado seja escrito. Para o
processo de leitura, o dado tem que estar estabilizado e o pino configurado
para entrada pois ela no armazenada em flip-flops.
Devido a essas caractersticas, o programador deve ter alguns
cuidados quando usar instrues do tipo read and write modified como
BSF ou BCF, que lem o PORT de I/O, executam a aoperao no bit e
escrevem o resultado no PORT de I/O. Por exemplo, uma instruo BSF no
pino 5 do PORTB ir provocar a leitura dos 8 pinos de I/O do PORTB. Ento,
a CPU ir executar a operao de setar o bit 5 e o resultado ser escrito no
PORTB. Se outro pino de I/O for usado como bidirecional, e nesse instante
estiver configurado para entrada o sinal presente ser lido e reescrito sobre
o dado que estivesse previamente escrito no latch de sada do pino de I/
Se o pino estiver configurado como entrada no haver nenhum problema,
mas se ele estiver configurado para sada, o dado no latch de sada pode ser
desconhecido. O que o programador deve ter em mente nunca provocar
um curto-circuito nos pinos de I/O . Por exemplo, se no pino de I/O
estiver conectado a GND e no latch de sada estiver setado para 1, com o
_14
pino e I/O configuradao para sada, uma alta corrente ir circular, o que
danificar o componente.
7.9.
Temporizador
Temporizador/contador de 8 bits
_15
7.10. Interrupes
As interrupes disponveis nas famlias PIC 16/17 variam de
componente para componente, dependendo das caractersticas de hardware
implementadas. As famlias PIC 16/17 possuem 3 fontes de interrupo
implementadas. So elas:
_16
_17
8. Parte Experimental
8.1.
Introduo
#include
"p16f84.inc"
LIST P=16F84
count equ 0x0C
;inicializacao
;programa principal
INI BSF 03h,5;
MOVLW 00;
MOVWF 06;
BCF 03h,5;
LOOP BSF 06,0
CALL DELAY
BCF 06,0
CALL DELAY
GOTO LOOP
_18
DELAY
MOVLW 9fh
MOVWF 1A
;MOVWF 1B
DELAYAUX
;DECFSZ 1B
;GOTO DELAYAUX
DECFSZ 1A
GOTO DELAYAUX
RETLW 00
END
Em seguida, transcreva o cdigo para hexadecimal, para isso, submeta
o arquivo .ASM que voc acabou de criar para o programa MPASM302.exe.
Agora vamos gravar o cdigo hexadecimal no PIC:
a. Conecte o gravador de microcontroladores na porta paralela do PC.
b. Posicione o PIC no gravador, verificar posio do chanfro.
c. Ligue a fonte do gravador.
d. Abra o programa P16pro.
e. Selecione o PIC16F84A: Device (F3).
f. Carregue o programa gravado na memria do microcontrolador: Read
(F6).
g. Apague o contedo da memria: Erase (F9).
h. Verifique se a memria est vazia: Blank Check (F7).
i.
_19
C1
MCLRT
OSC1/IN
PICF84A
XTAL
C1
OSC1/OUT
R1
RB0
VSS
LED
_20
15 - 33 pF
4 - 10 MHz
1K
9. Bibliografia
_21