Familia MCS51 e PIC
Familia MCS51 e PIC
Familia MCS51 e PIC
3/20
Programao dedicada com a famlia
MCS51
Diagrama em
bloco do
uC 89C2051
4/20
Programao dedicada
com a famlia MCS51
Os pinos da porta P3 tambm so utilizados para realizar
certas funes especiais:
P3.0 - RxD/data - recepo serial assncrona ou E/S de dados sncronos;
P3.1 - TxD/clock - transmisso porta serial assncrona ou sada de clock
p/ dados sncronos;
P3.2 - INT0 - entrada da interrupo 0 ou bit de controle para o
temporizador/contador 0;
P3.3 - INT1 - entrada da interrupo 1 ou bit de controle para
temporizador/contador ;
P3.4 - T0 - entrada de clock externo para o temporizador/contador 0;
P3.5 - T1 - entrada de clock externo para o temporizador/contador 1;
P3.6 - WR - sinal de escrita na memria de dados externa;
P3.7 - RD - sinal de leitura na memria de dados externa.
5/20
Registradores Especiais
Os registradores de funes especiais incluem posies de acesso s
portas de E/S, registradores de interrupo, registradores da porta
serial, temporizadores e registradores aritmticos.
P1(90H) e P3(B0H) correspondem a posies de RAM contendo os dados
das portas de E/S; os bits individuais so endereados
TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH) contm os valores das
contagens dos temporizadores/contadores 1 e 0, respectivamente;
6/20
Interrupes
8/20
Os temporizadores / contadores
A familia MCS51 dotado de dois timers (temporizadores /
contadores) internos programveis. So controlados por
software e tambm por sinais externos aplicados ao
microcontrolador. Os timers so geralmente utilizados para
a gerao de eventos aps decorrido um determinado
intervalo de tempo (timeouts), na gerao de pedidos de
interrupo peridicos, ou ainda na contagem e na
medio da largura de pulsos externos.
Os registradores associados programao dos timers,
TCON e TMOD.
9/20
Exemplo de programao
Cdigo em READS51
int teclado (unsigned char LED)
{
if (LED==1) P1_0=1 else P1_0=0;
if (LED==2) P1_1=1 else P1_1=0;
if (LED==3) P1_2=1 else P1_2=0;
if (LED==4) P1_3=1 else P1_3=0;
if (P1_4==1) return A
if (P1_5==1) return B
if (P1_6==1) return C
if (P1_7==1) return D
}
10/20
Exemplo de Configurao do Timer
Cdigo em READS51
12/20
Famlia PIC (PIC16F877 e
PIC18F4550)
Permite a gravao no
prprio circuito.
Facilita a programao
Velocidade,
praticidade.
Compiladores
MPlab
CCS C
Microchip C18
HI-TECH PICC
IAR Embedded Workbench
CC5X CC8E
Sourceboost
MikroC / MikroBasic / MikroPascal
Famlias PIC mais utilizadas
A famlia PIC fabricados pela Microship Technology,
existem vrias verses de processadores de 8bits, 16
bits e 32 bits.
Caractersticas do Microcontrolador PIC 18F4550
Clock de 48MHz/ 12MIPs
USB 2.0 device nativa
35 I/Os
13 Entradas Analgicas AD de 10 bits
32K de Flash ROM, 256 bytes EEProm e 2048 bytes de RAM
1 canal PWM/CCP/ECCP e 2 comparadores
USART/ Serial, SPI e i2C incorporados
Suporte para Debuger ICD
Interrupes com 2 Nveis de prioridade
32K de memria Flash de programa
Suporte para modo baixo consumo: nano Watt Technology
2 sadas PWM
4 Timers internos sendo 3 de 16bits
Diagrama Bsico de Ligao
Estrutura do PIC
Firmware Conjunto de instrues operacionais
programadas diretamente no HARDWARE de um
equipamento eletrnico. armazenado permanentemente
em um circuito integrado (chip).
Registradores Responsvel por armazenar todos os
dados sobre os quais sero realizados algum tipo de
operao.
No PIC18F4550 esses registradores so chamados de GPR
(General Purpose Register Registradores de Propsito Geral);
Registradores de funo especial (SFR) So registradores
cujas funes so pr-determinadas pelo fabricante. Ex:
temporizadores (timers);
Conversores (A/D)
Osciladores
Registradores do PIC
No caso dos registradores de 8 bits, cada SFR
funcionar como 8 chaves (liga/desliga) que
comandam alguns pequenos circuitos dentro do
microcontrolador.
No PIC18F4550 este circuito est associado a um SFR
chamado TRIS.
Bit ajustado para lgica 1 Entrada (Input)
Bit ajustado para lgica 0 Sada (Output)
Registradores do PIC
Exemplos:
STATUS utilizado para armazenamento de flags
matemticos e de estado da CPU, alm dos bits da seleo
do banco de memria RAM.
INTCON utilizado para controle de interrupes.
OPTON_REG utilizado para configurar o
funcionamento de alguns perifricos internos ao PIC;
PORT utilizado para a leitura ou escrita nos pinos do
PIC;
TRIS utilizado para configurar os pinos das portas como
entrada ou sada(input/output);
Portas do PIC
Portas I/O (Entrada / Sada) Os microcontroladores
possuem um ou mais registradores de funes especiais
chamadas de PORT conectados aos seus pinos de I/O
(pinos de entrada/sada);
Interrupes Alguns perifricos precisam de tempo
para executar suas tarefas, com a interrupo a tarefa
executada, sem prejuzo para o fluxo do programa
principal.
Configurao do Timer
Normalmente, no existe funo de atraso do tipo delay
em circuitos embarcados. Isso ocorre devido a grande
variabilidade da frequncia de clock utilizada nos diversos
circuitos. Como a variao do clock diretamente
proporcional ao tempo de contagem ou temporizao dos
dispositivos embarcados nos microcontroladores, pode-se
configurar os timers baseado na frequncia de clock.
Configurao do Timer
Timers se referem s operaes relacionadas ao tempo. Eles
so usados principalmente para gerar atraso.
Temporizadores so tambm utilizados em vrias outras
operaes, como a gerao do sinal de PWM, de auto-
ativao de vrios outros perifricos etc.
Os temporizadores so os perifrico mais essenciais de um
microcontrolador e cada tipo de microcontrolador fornece
uma disposio para us-los.
Configurao do Timer
Temporizador est relacionada com a frequncia interna que
sempre Fosc / 4.
Fosc = 12 MHz = 12000000 Hz
Fosc 12000000
Ftimer = = = 3MHz
4 4
Se o valor de prescale de 1 : 256, temos que
3000000
Ftimer = = 11718,75 Hz
256
Ento, o intervalo de tempo :
1 1
Ttimer = = = 85,33s
Ftimer 11718,75
Isto significa que quando o temporizador executado, ele ter
aproximadamente 85s para incrementar o seu valor a cada
contagem.
Configurao do Timer
Para calcular o valor a ser preenchido para que o temporizador gere
1s de atraso:
Nmero de contagens para 1s de delay = 1s / 85,33 s = 11717.75 =
2DC6H
Assim, o valor a ser preenchido no registrador de 16 bits(65536
nveis, de 0 a 65535(FFFF)) do Temporizador = FFFF 2DC6 = D239
Exemplo para ligar e desligar um led
cdigo em uC
void main(void)
{
ADCON1 = 7; // Configura a porta A como I/O digitais.
CMCON = 0x07; // Desabilita os comparadores analgicos. (retirar
nos PIC18)
INTCON = 0; // Desabilita todas as interrupes.
TRISA = 0; // Toda a Porta A designada como sada.
porta.f0 = 1; // LIGA o pino 0 da porta A.
Delay_ms(1000); // Delay de 1 segundo.
porta.f0 = 0; // DESLIGA o pino 0 da porta A.
Delay_ms(1000); // Delay de 1 segundo.
}
Botao1.c
cdigo em uC
#define led1 PORTA.F0
#define botao1 PORTA.F1
#define LIGA 1
#define DESLIGA 0
#define pressionado 0
#define solto 1
#define tmpDebounce 10
void main(void) org 0x1999 {
ADCON1 = 7; // Configura a porta A como I/O digitais.
CMCON = 0x07; // Desabilita os comparadores analgicos. (retirar nos PIC18)
INTCON = 0; // Desabilita todas as interrupes.
TRISA = 0b00000010; // Pinos 0,2,3 e 4 (5,6 e 7 tambm) da Porta A
// designados como sada. Pino 1 da porta A designado como entrada.
led1 = LIGA; delay_ms(300); led1 = DESLIGA;
do {
if ( Button(&PORTA, 1, tmpDebounce, pressionado) ) // Se PORTA.F1 = 1...
led1 = ~led1;
} while(1);
}
Responde_serial.c
cdigo em uC
char recebido;