Anda di halaman 1dari 32

Prof.

Marco Aurlio Benedetti Rodrigues


Prof. Estgio de Docncia PPGEE - Gustavo
Famlia MCS 51
 O Intel MCS-51 um famlia popular
de microcontroladores CISC de 8 bits lanada
pela Intel em meados de 1980.
 Alm da facilidade de programao essa famlia
considerada como a mais popular do mundo, com
cerca de dois mil fabricantes produzindo variantes e
clones do modelo original.
 A famlia MCS-51 atualmente possui dispositivos
internos no chip que so capazes de realizar desde
tarefas simples como controle I/O at comunicao de
rede.
2/20
Programao Embarcada com a famlia
MCS-51
 Estrutura de um  Os pinos P3.0 a P3.7
microcontrolador correspondem portas de
89C2051 (em torno de E/S de dados e endereos
e controle de perifricos
3,5 dlares): diversos.
 Os pinos P1.0 a P1.7 so
pinos de I/O. P10 e P1.1
so entradas analgicas,
interligadas a um
comprador interno ao chip.
 Alguns microprocessadores
somente possuem a porta
P1.

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;

 TCON (88H) e TMOD (89H) so os registradores de controle e modo de


operao dos temporizadores/contadores;

 PCON (87H) permite adaptar o chip a uma situao na qual no h


processamento, mas onde se quer manter os contedos das memrias
internas (falha de alimentao, por exemplo);

6/20
Interrupes

IE (A8H) e IP (B8H) so registradores


associados gesto de interrupo
(habilitao e prioridade);
7/20
Comunicao Serial
 SCON (98H) e SBUF (99H) permitem, respectivamente,
programar a porta de comunicao serial e armazenar o
dado recebido ou a ser transmitido;

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

void delay(unsigned char miliseg)


{
unsigned int cont;
unsigned char th,tl;

TMOD=0x21; /* timer 1 em 8 bits auto-reload - modo 2 */


/* timer 0 em 16 bits - modo 1 */

cont=65535-(miliseg)*333; /* 333 contagens/ms em 4MHz */


th=cont/256;
/* pois a taxa de incremento do timer */
tl=cont-(th*256); /* e' de freq_clock div. por 12 */
TL0=tl; /*output(TL0,tl);*/
TH0=th; /*output(TH0,th);*/
TR0=1;
do
{
}while(!TF0);
TF0=0;
} 11/20
Comunicao Serial
Cdigo em READS51

12/20
Famlia PIC (PIC16F877 e
PIC18F4550)

Prof.Marco Aurlio Benedetti


Rodrigues
C PIC (Microchip)
PICs 16F876A / 16F877A
PICs 16F876A / 16F877A
Tiny PIC bootloader

 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;

void main(void) org 0x1999


{
ADCON1 = 7; //
CMCON = 0x07; // Desabilita os comparadores analgicos. (retirar nos PIC18)
INTCON = 0; // Desabilita todas as interrupes.
TRISB=0;
Usart_Init(9600);
do {
if ( Usart_Data_Ready() ) //Se houver dados...
{
recebido = Usart_Read(); // L da serial.
Usart_Write(recebido+2); // Envia byte pela serial.
potb=recebido;
}
} while (1);
}

Anda mungkin juga menyukai