epac 2007 - inf.unioeste.brguilherme/cursos/8051.pdf · 8751 (4 kb de memória eprom) 8052 (8 kb de...

26
30/8/2007 1 Microcontroladores 8051 Thiago B. Ló Guilherme Galante EPAC 2007 Organização do curso 1. Parte I Introdução Visão Geral da família 8051 O circuito básico C para 8051 Atividades Práticas 2. Parte II Interrupções Contadores e Temporizadores Atividades Práticas 2 EPAC - Encontro Paranaense de Computação

Upload: dodung

Post on 27-Nov-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

30/8/2007

1

Microcontroladores 8051

Thiago B. Ló

Guilherme Galante

EPAC 2007

Organização do curso1. Parte I Introdução Visão Geral da família 8051 O circuito básico C para 8051 Atividades Práticas

2. Parte II Interrupções Contadores e Temporizadores Atividades Práticas

2 EPAC - Encontro Paranaense de Computação

30/8/2007

2

Parte I

Introdução ao 8051

EPAC - Encontro Paranaense de Computação3

Introdução

EPAC - Encontro Paranaense de Computação4

Um microcontrolador é um componente que possui em único chip: CPU memórias ROM e RAM temporizadores/contadores conversores AD canais de comunicação

Em sistemas baseados em microprocessadores, se utilizam vários componentes para implementar essas funções

Os microcontroladores permitem a implementação de sistemas mais compactos e baratos do que aqueles baseados em microprocessadores

30/8/2007

3

Introdução

EPAC - Encontro Paranaense de Computação5

CPUs dos microcontroladores são menos poderosas do que os microprocessadores

Seu conjunto de instruções costuma se limitar às instruções mais simples

Sua freqüência de clock é mais baixa e o espaço de memória endereçável costuma ser bem menor

Vê-se daí que o campo de aplicação dos microcontroladores é diferente daquele dos microprocessadores

Introdução

EPAC - Encontro Paranaense de Computação6

Microprocessador

• CPU => stand-alone, RAM, ROM, I/O, timers são separados;

• O projetista pode decidir a quantidade de ROM, RAM e ports de I/O;

• Expansível

• Versatilidade

• Uso geral

Microcontrolador

• CPU, RAM, ROM, I/O e timer estão integrados em um chip

• Quantidade fixa de elementos on-chip (ROM, RAM, I/O ports)

• Para aplicações onde custo, potência e espaço são fatores críticos;

• Uso específico

30/8/2007

4

Introdução

EPAC - Encontro Paranaense de Computação7

Exemplos de aplicações: controle de semáforos balanças eletrônicas telefones públicos controle de carregadores de baterias controles de acesso taxímetros sistemas de aquisição de dados de manufatura e eletrodomésticos em geral

A Família 8051

EPAC - Encontro Paranaense de Computação8

O Intel 8051 faz parte de uma popular família de microcontroladores de 8 bits lançada pela Intel em 1977

O dispositivo em si é um microcontrolador de 8 bits relativamente simples, mas com ampla aplicação

Porém, o mais importante é que não existe somente o CI 8051, mais sim uma família de microcontroladores baseada no mesmo

Entende-se família como sendo um conjunto de dispositivos que compartilha os mesmos elementos básicos, tendo também um mesmo conjunto básico de instruções.

30/8/2007

5

A Família 8051

EPAC - Encontro Paranaense de Computação9

Diversos fabricantes produzem microcontroladores da família 8051: Intel AMD Atmel Dallas OKI Matra Philips Siemens SMCSSI

A Família 8051

EPAC - Encontro Paranaense de Computação10

Além do 8051 propriamente dito, existem variantes: 8031 (sem memória ROM interna e com apenas 128 bytes de

memória RAM) 8751 (4 kB de memória EPROM) 8052 (8 kB de memória ROM, um terceiro timer e 256 bytes de

memória RAM)

A menos dessas diferenças, os modelos citados são idênticos, assim utilizaremos o termo “8051” de forma genérica

30/8/2007

6

Principais Características

EPAC - Encontro Paranaense de Computação11

Freqüência de clock de 12 MHz, com algumas versões que alcançam os 40 MHz

até 64 kB de memória de dados externa

128 bytes de RAM interna

até 64 kB de memória de programa configurável de duas formas mutuamente excludentes: 4 kB internos (ROM no 8051 e EPROM no 8751) e mais 60 kB externos 64 kB externos

4 portas bidirecionais de I/O, cada uma com 8 bits individualmente endereçáveis duas dessas portas (P0 e P2) e parte de uma terceira (P3) ficam comprometidas

no caso de se utilizar qualquer tipo de memória externa

2 temporizadores /contadores de 16 bits

1 canal de comunicação serial

5 fontes de interrupção (dois timers, dois pinos externos e o canal de comunicação serial) com 2 níveis de prioridade selecionáveis por software

oscilador de clock interno

Visão Interna: A Arquitetura do 8051

EPAC - Encontro Paranaense de Computação12

4 I/O Port’sOSC

CPU

Interrupt Control

External Interrupt

4K ROM 128 Bytes RAM

Timer 1

Timer 0

Counter Inputs

Serial Port

TXD RXDP0 P1 P2 P3

Address / Data

BUS

BUSControl

30/8/2007

7

Visão Externa: A Pinagem do 8051

EPAC - Encontro Paranaense de Computação13

Reset

Terra

+5V

Cristal

Acesso Externo(~)

Portas de E/S

Address latch enable

Acesso Externo(~)

Memória

EPAC - Encontro Paranaense de Computação14

O 8051 possui 4kB de memória de programa internos (ROM), podendo-se ainda utilizar 64kB externos (8031 não possui ROM interna)

Possui RAM interna e possibilidade de RAM externa, com espaços de endereçamento distintos (instruções distintas)

Mapeia em memória registradores, portas de I/O, ponteiros do sistema, temporizadores

30/8/2007

8

Memória

EPAC - Encontro Paranaense de Computação15

Área de Registradores R0-R7 (00-1FH) Área Booleana (binária) (20H-2FH): 16 bytes endereçados bit a bit (totalizando 128 bits)

Área de Rascunho (30H-7FH): memória de uso geral onde se localiza a pilha do sistema

Área de Registradores Especiais (SFR) (80H-FFH): Portas P0 (80H), P1 (90H), P2 (A0H), P3 (B0H) TMOD (89H): registrador de modo dos timers TCON (88H): registrador de controle do timer 1 T2CON (C8H): registrador de controle do timer 2

Memória

EPAC - Encontro Paranaense de Computação16

Memória de Programa

4k 8k0000H

0FFFH

0000H

1FFFH

8751AT89C51

8752AT89C52

30/8/2007

9

Entrada e Saída

EPAC - Encontro Paranaense de Computação17

A família 8051 possui as seguintes capacidades de I/O “nativas”, variáveis conforme o modelo: 32 Portas de I/O endereçáveis individualmente, divididas em 4

portas de 8 bits mapeadas em RAM com bits individualmente endereçáveis P0(80h) P1(90h) P2(A0h) P3(B0h)

1 UART Full-Duplex

Entrada e Saída

EPAC - Encontro Paranaense de Computação18

O acesso às portas pode ser feito a byte, com instruções normais de movimentação de dados (endereçamento direto) ou utilizando instruções de bit

Endereçamento direto entre os endereços 80h e FFh acessa os registradores especiais e portas de I/O, enquanto que endereçamento indireto acessa a memória

As portas são quase todas “multifuncionais”, ou seja, podem ser utilizadas tanto para I/O comum endereçável a bit quanto para sua função “especial”, como no caso de acesso à memória externa, com as portas 0,2 e 3: Porta 0: dados e parte baixa dos endereços multiplexados Porta 2: parte alta dos endereços Porta 3: WR e RD (write strobe e read strobe para memória dados) Combinações extremas:

1 Portas de I/O (8 bits em P1) + 6 bits da P3 + 64K ROM + 64K RAM (EXTERNAS)

4 Portas de I/O + 128bits RAM + 4K ROM (INTERNAS)

30/8/2007

10

Entrada e Saída

EPAC - Encontro Paranaense de Computação19

Além das funções especiais já vistas, ainda temos as portas 1 e parte da P3, que têm as seguintes funções especiais: Porta 1:

bit 0: T2 Timer/Counter2 external input bit 1: T2EX Timer/Counter2 Capture/Reload trigger(Apenas no 8052)

Porta 3: bit 0: RXD (serial input port) bit 1: TXD (serial output port) bit 2: INTO (external interrupt) bit 3: INT1 (external interrupt) bit 4: T0 (Timer/Counter 0 external) bit 5: T1 (Timer/Counter 1 external) bit 6: WR (external Data Memory write strobe) bit 7: RD (external DataMemory read strobe

Circuito Básico

EPAC - Encontro Paranaense de Computação20

30/8/2007

11

Clock

EPAC - Encontro Paranaense de Computação21

Ex.: Encontrar o ciclo de máquina para:(a) XTAL = 11.0592 MHz (b) XTAL = 16 MHz.

Solução:

(a) 11.0592 MHz / 12 = 921.6 kHz;Ciclo de máquina = 1 / 921.6 kHz = 1.085 s

(b) 16 MHz / 12 = 1.333 MHz;Ciclo de máquina = 1 / 1.333 MHz = 0.75 s

Ciclo de Máquina = 1/ (fext / 12)

C para 8051

EPAC - Encontro Paranaense de Computação22

Existem basicamente três linguagens de programação que são utilizadas com o 8051 BASIC ASSEMBLY C.

Nos últimos anos, a programação de microcontroladores em linguagem C tem sido adotada pela maioria das empresas devido às facilidades para programação e ao nível de portabilidade apresentada

30/8/2007

12

C para 8051

EPAC - Encontro Paranaense de Computação23

Muitos livros ensinam a programação padrão ANSI C, porém devemos tomar o cuidado ao utilizar este tipo de bibliografia, pois ela aborda a programação para o PC

Funções do tipo “printf”, “scanf”, “sprintf” entre outras, geralmente não estão disponíveis para o projetista ou apresentam um comportamento diferente quando utilizamos o compilador para microcontrolador

Neste curso utilizaremos o Compilador HITECH-C e o gravador EZ2

C para 8051

EPAC - Encontro Paranaense de Computação24

Compilador: HITECH-C

30/8/2007

13

C para 8051

EPAC - Encontro Paranaense de Computação25

Gravador: EZ2 Modo de uso: EZ2 <nome.hex> -C1

C para 8051

EPAC - Encontro Paranaense de Computação26

Tipos e variáveis

Exemplo de declaração de variáveis:int Contador; // Variável do tipo inteiro com sinalunsigned char Leitura; // Variável do tipo char sem sinalchar buffNome[6]; // Array do tipo char com 6 posicõesint buffTotal[4]; // Array do tipo int com sinal com 4 posições

30/8/2007

14

C para 8051

EPAC - Encontro Paranaense de Computação27

Operadores aritméticos - Subtração ou sinalização de negativo + Soma * Multiplicação / Divisão % Resto da divisão ++ Incremento (Variável = Variável + 1) -- Decremento (Variável = Variável – 1)

C para 8051

EPAC - Encontro Paranaense de Computação28

Operadores lógicos e relacionais > Maior que < Menor que >= Maior ou igual que <= Menor ou igual que == igual != Diferente && Relacional “e” || Relacional “ou” ! Relacional “não”

30/8/2007

15

C para 8051

EPAC - Encontro Paranaense de Computação29

Operadores de manipulação de bit & Operação lógica AND | Operação lógica OR ^ Operação lógica XOR ~ Operação lógica NOT >> Operação de deslocamento(shift) em bit para a direita << Operação de deslocamento em bit para a esquerda

C para 8051

EPAC - Encontro Paranaense de Computação30

Diretivas fundamentais do pré – compilador

#DEFINE <NOME> <ATRIBUICAO> Permite atribuir antes da compilação um valor para NOME.

Exemplo: #define LIGADO 1 #define MAXIMO 50 //Substitui o nome MAXIMO por 50 no programa

#INCLUDE <ARQUIVO> Informa ao que deverá ser incluído o ARQUIVO antes de realizar a compilação do programa.

Exemplo: #include <8051.h> // Inclui o arquivo 8051.h da pasta padrão #include “8051.h” // Inclui o arquivo 8051.h da pasta do programa

30/8/2007

16

C para 8051

EPAC - Encontro Paranaense de Computação31

Diretivas fundamentais do pré – compilador

#DEFINE <NOME> <ATRIBUICAO> Permite atribuir antes da compilação um valor para NOME.

Exemplo: #define LIGADO 1 #define MAXIMO 50 //Substitui o nome MAXIMO por 50 no programa

#INCLUDE <ARQUIVO> Informa ao que deverá ser incluído o ARQUIVO antes de realizar a compilação do programa.

Exemplo: #include <8051.h> // Inclui o arquivo 8051.h da pasta padrão #include “8051.h” // Inclui o arquivo 8051.h da pasta do programa

C para 8051

EPAC - Encontro Paranaense de Computação32

Controle de fluxo: IF

#include <8051.h>#define ENTRADA1 P3_BITS.B2main(){

if(ENTRADA1=1){

P1_BITS.B0=1;}else{

P2=1;P0=1;

}}

30/8/2007

17

C para 8051

EPAC - Encontro Paranaense de Computação33

Controle de fluxo: SWITCH

#include <8051.h>unsigned char IN;void main (void){

IN = P1;switch(IN){

case 0x00:P0=1;break;

case 0xFF:P2=1;break;

default:P3=1;break;

}}

C para 8051

EPAC - Encontro Paranaense de Computação34

Controle de fluxo: WHILE

#include <8051.h>

#define ENTRADA1 P3_BITS.B2

main()

{

while(!ENTRADA1)

{

P1_BITS.B0=1;

}

}

30/8/2007

18

C para 8051

EPAC - Encontro Paranaense de Computação35

Controle de fluxo: DO...WHILE

#include <8051.h>

#define ENTRADA1 P3_BITS.B2

main()

{

P1_BITS.B0=0;

do

{

P1_BITS.B0=~P1_BITS.B0;

wait(); //função definida pelo usuário

}

while(!ENTRADA1)

}

C para 8051

EPAC - Encontro Paranaense de Computação36

Controle de fluxo: FOR

#include <8051.h>

#define ENTRADA1 P3_BITS.B2

main()

{

int i;

P1_BITS.B0=0;

for(i=0;i<255;i++)

{

P1_BITS.B0=~P1_BITS.B0;

wait(); //função definida pelo usuário

}

}

30/8/2007

19

C para 8051

EPAC - Encontro Paranaense de Computação37

Procedimentos

#include <8051.h>#define ENTRADA1 P3_BITS.B2

void procedimento1(){

int i;P1_BITS.B0=0;

for(i=0;i<255;i++){

P1_BITS.B0=~P1_BITS.B0;wait(); //função definida pelo usuário

}}main(){

procedimento1();}

C para 8051

EPAC - Encontro Paranaense de Computação38

Funções

#include <8051.h>#define ENTRADA1 P3_BITS.B2

int funcao1(){

while(!ENTRADA1){

P1_BITS.B0=1;}return 1;

}

main(){

int OUT;OUT=funcao1();

}

30/8/2007

20

Atividades

EPAC - Encontro Paranaense de Computação39

Parte II

Interrupções, Contadores e Temporizadores

EPAC - Encontro Paranaense de Computação40

30/8/2007

21

Interrupções

EPAC - Encontro Paranaense de Computação41

Processo pelo qual a execução de um programa é interrompido, de acordo com as necessidades de eventos externos ou internos

Fontes de interrupção (8051): Interrupção externa 0 - INT0\ Interrupção externa 1 - INT1\ Interrupção do timer\contador 0 - T0 Interrupção do timer\contador 1 - T1 Interrupção do canal serial - TI ou RI

Cada interrupção pode ser individualmente habilitada ou não, e pode-se desabilitar todas de uma vez (Mascaramento)

Interrupções Níveis de prioridade Nível 0 -> Menor Nível 1 -> Maior

Interrupção vetorada

30/8/2007

22

Interrupções Para determinar quais interrupções estarão habilitadas, devermos

escrever no registrador especial IE - (Interrupt Enable) do SFR.

Interrupção habilitada -> 1 Interrupção desabilitada -> 0

07

Interrupções Prioridade Registrador Interrupt Priority (IP)

Quanto em 1 define como alta a prioridade

07

30/8/2007

23

Interrupções- Interrupção Externa Interrupção Externa A configuração é feita no registrador TCON (Timer Control) através

do nibble (4 bits) menos significativo.

IT0 e IT1 - Quando em nível lógico 0 a interrupção Externa(0 ou 1) será aceita simplesmente pela presença do nível zero no pino. Quando em nível lógico 1 a interrupção será aceita quanto ocorrer uma transição de 1 para 0 e o sinal permanecer em zero por pelo menos 1ciclo de máquina.

IE0 e IE1- É setado pelo hardware interno quando for detectado um pedido de interrupção. É resetado quando a interrupção for atendida.

07

Exemplo

30/8/2007

24

Interrupções - Temporizador e Contador Temporizador e Contador (T/C- Timer/Counter) O 8051 possui 2 T/C (timer/conter) Podem operar de maneira totalmente independente dos demais

recursos do chip. Os dois T/C podem ser ativados ou desativados pelo hardware ou

pelo software, dependendo da configuração adotada pelo projetista. No nibble (4 bits) mais significativo de TCON podemos ativar ou desativar os T/C`s como veremos a seguir:

7 0

Interrupções - Temporizador e Contador TCON

TF0 e TF1- Setado pelo hardware sempre que ocorrer um overflow (estouro no contador) no T/C. É resetado ao final da rotina de interrupção de T/C.

TR0 e TR1 - Quando em nível lógico 1 irá ligar o T/C0, e quando em zero o mesmo será desligado.

7 0

30/8/2007

25

Interrupções - Temporizador e Contador Configuração do modo de funcionamento do temporizador/contador Registrador TMOD

Gate0; Gate1 – Definem como o Timer/Contador irá funcionar. 0: O timer/contador será ativado simplesmente colocando TRn em 1 1: O timer/contador será ativado se TRn e o pino INTn forem 1.

Útil quando queremos medir largura de pulso externo.

C/T0; C/T1 - Definem a fonte do sinal de clock. 0: Tem a função de timer e a base de tempo será o clock do cristal. 1: Operando como contador e o clock será os pulsos presentes no pino Tn

M1-x;M0-x - Determinam o modo como irá operar o Timer/Contador. Modo 0, 1,2 e 3

Interrupções - Temporizador e Contador

30/8/2007

26

Interrupções - Temporizador e Contador Os modos de operação são:

MODO 0 - Temporizador/Contador de 8 bit`s com divisor de freqüência de até 32 vezes. Neste modo o TL0 ou TL1 servem como prescaler do divisor e os registradores TH0 e TH1 como contador de 8 bit`s.

MODO 1 - Temporizador/Contador de 16 bit`s. Neste modo o TLn e THn formam um par de forma a obter um registrador de 16 bit`s. Neste modo podemos contar até 65535, com o valor inicial programável por software.

MODO 2 - Contador/Temporizador de 8 bit`s com recarga automática. Neste modo o registrador TLn realiza a contagem e o registrador THn possui o valor que será recarregado em TLn sempre que ocorrer um overflow (estouro do contador). Os registradores podem ser alterados por software a qualquer momento, tornando bastante flexível o uso.

MODO 3 - Intervalador ou contador de eventos em 8 bit`s e temporizador de 8 bit`s. OBS: Este modo não é muito usual e não será estudado.

TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH) contêm os valores das contagens dos temporizadores/contadores 1 e 0, respectivamente;

Exemplo