A fam - PowerPoint PPT Presentation

About This Presentation
Title:

A fam

Description:

A fam lia 80C51 Organiza o: Microcontroladores versus microprocessadores Os microcontroladores da fam lia 80C51 Interface com o exterior Modelo de programa o – PowerPoint PPT presentation

Number of Views:126
Avg rating:3.0/5.0
Slides: 99
Provided by: JM1175
Category:
Tags: fam

less

Transcript and Presenter's Notes

Title: A fam


1
A família 80C51
  • Organização
  • Microcontroladores versus microprocessadores
  • Os microcontroladores da família 80C51
  • Interface com o exterior
  • Modelo de programação
  • Processamento dos pedidos de interrupção
  • Modos de endereçamento e tipos de instruções
  • Exemplo Simulação de um registo de deslocamento

2
Microcontroladores (?Cs) e microprocessadores
(?Ps)
  • Um microcontrolador é fundamentalmente um
    componente que integra os três blocos principais
    na arquitectura de um computador CPU, memória e
    E/S
  • Entre ?Cs e ?Ps existem as seguintes diferenças
  • Os ?Cs dispõem de E/S interna de vários tipos
  • Os ?Cs podem dispor de ROM / EPROM
  • Os ?Cs são sobretudo vocacionados para tarefas de
    controlo, onde 8 bits são a solução mais comum

3
Os ?Cs da família 80C51
  • A família 80C51 apresenta uma arquitectura
    interna algo complexa, o que a poderia
    desaconselhar como veículo para a introdução a
    este domínio. Contudo
  • Trata-se de componentes com grande uso na
    prática, para os quais existe uma enorme
    variedade de aplicações de apoio ao projecto,
    comerciais ou do domínio público
  • A complexidade não é tanto devida à arquitectura
    do CPU interno, mas mais pela necessidade de se
    multiplexarem muitos sinais em poucos pinos

4
80C51 Arquitectura do núcleo de base
5
Variantes dentro da família 80C51
  • As variantes principais que estão disponíveis
    nesta família têm as seguintes características
    principais

6
Organização de memória
  • A família 80C51 distingue entre memória de
    programa (MP) e memória de dados (MD)
  • A MP contém o programa a executar (instruções e
    operandos), enquanto a MD serve apenas para dados
  • Uma vez que existe apenas um barramento de
    endereços e um barramento de dados, a distinção
    entre MP e MD é feita através do sinal de leitura
    (MP /PSEN, MD /RD)
  • Na MP efectuam-se apenas operações de leitura,
    sendo que na MD se efectuam operações de leitura
    e escrita

7
Organização de memória (cont.)
  • Ainda a distinção MP / MD
  • A existência de dois tipos de memória obriga o
    80C51 a ter internamente dois apontadores (PC,
    DP)
  • A selecção do sinal de leitura apropriado (/PSEN
    ou /RD) é feita automaticamente pela instrução a
    executar
  • MP e MD não são necessariamente ROM e RAM,
    podendo mesmo coexistir no mesmo componente de
    memória, e.g. uma NVRAM (de onde viria o sinal de
    leitura, neste caso?)

8
Organização de memória (cont.)
  • Os recursos internos de MP e MD podem ser
    complementados externamente

9
Organização de memória (cont.)
  • O 80C51 inicializa a execução do programa a
    partir do endereço 0 (zero), que poderá ser de MP
    interna ou externa, de acordo com o estado do
    pino /EA
  • Quando /EA0, o 80C51 começa a execução do
    programa pela MP externa
  • Nos casos em que existe MP interna, forçar /EA0
    significa que esta memória não deve ser
    considerada (no entanto, se existir MP interna,
    será normalmente por aí que se iniciará a
    execução do programa)

10
Organização de memória (cont.)
  • Alguns aspectos importantes quanto à MD
  • Os 128 endereços superiores permitem de facto
    aceder a 256 posições, de acordo com o modo de
    endereçamento (conforme seja directo ou
    indirecto, como veremos adiante)
  • Do total de 384 posições assim existentes, 128
    correspondem aos registos de funções especiais
    (SFR, special function registers) (por exemplo, o
    DP ocupa dois destes 128 SFR)

11
Interface com o exterior
  • Barramentos

12
Interface com o exterior (cont.)
  • Repare-se ainda que
  • O barramento de endereços é partilhado com
  • os portos de E/S paralela 0 e 2
  • O porto 0 é também partilhado com o barramento de
    dados
  • AD0..7 A multiplexagem dados / endereços (oito
    bits menos significativos) é feita no domínio
    temporal (primeiro o endereço e depois os dados)

13
Interface com o exterior (cont.)
  • Atendendo à multiplexagem temporal em AD0..7, o
    80C51 proporciona o sinal de controlo (ALE) para
    uma latch externa que memoriza a metade menos
    significativa do endereço

14
Interface com o exterior (cont.)
  • Barramento de controlo
  • RST (reset)
  • /EA-VPP
  • /PSEN
  • ALE - /PROG
  • /INT0 e /INT1 (entradas de interrupção)
  • T0 e T1
  • /WR
  • /RD
  • XTAL1 e XTAL2 (pinos do oscilador interno)

15
Configuração de pinos
16
Diagramas temporais
  • Leitura da MP externa

17
Diagramas temporais (cont.)
  • Leitura da MD externa

18
Diagramas temporais (cont.)
  • Escrita na MD externa

19
Modelo de programação
  • Diagrama de blocos da arquitectura de base

20
A RAM (MD) interna revisitada
21
Os registos de funções especiais (SFR)
22
Pedidos de interrupção
  • A arquitectura do núcleo de base do 80C51 suporta
    cinco fontes de interrupção
  • Duas interrupções externas (pinos /INT0 e /INT1)
  • Duas interrupções provenientes dos timers
  • Uma interrupção proveniente do porto série
  • Cada uma destas fontes pode ser habilitada ou
    inibida e a cada uma pode ser atribuída alta ou
    baixa prioridade (em ambos os casos,
    individualmente)

23
Pedidos de interrupção (cont.)
  • Sobre a prioridade das interrupções
  • O atendimento a uma interrupção de baixa
    prioridade pode ser interrompido por uma
    interrupção de alta prioridade, mas não
    vice-versa (e se forem interrupções da mesma
    prioridade?)
  • No que respeita a pedidos simultâneos, será
    atendido primeiro o que tiver mais alta
    prioridade se forem iguais, será realizada uma
    sequência de pooling para determinar qual será
    atendido primeiro

24
Pedidos de interrupção (cont.)
  • O atendimento a um pedido de interrupção começa
    com o armazenamento do valor actual do PC na
    stack, a que se segue uma chamada à respectiva
    rotina de atendimento

25
Modos de endereçamento
  • Será adoptada nesta apresentação a mesma
    classificação e organização que são seguidas na
    folha de características do componente (Philips)
  • Por cada modo de endereçamento, apresenta-se uma
    explicação sumária e alguns exemplos ilustrativos
    da sua utilização

26
Endereçamento directo
  • O operando é especificado através de um endereço
    de oito bits que se encontra na posição de MP
    seguinte à que contém o código da instrução (só
    pode ser usado com as posições internas de RAM e
    com os SFR)

27
Endereçamento indirecto
  • É usado um registo para especificar o endereço do
    operando (tanto pode ser usado com as posições de
    RAM internas como externas)

28
Endereçamento ao registo
  • O próprio código da instrução contém um campo com
    três bits que identifica qual dos registos R0 a
    R7 deve ser usado (dentro do banco seleccionado)

29
Endereçamento específico dos registos
  • No caso das instruções que são específicas de
    certos registos (por exemplo, do acumulador)

30
Endereçamento imediato
  • O valor do operando está contido na posição de MP
    seguinte à que contém o código da instrução

31
Endereçamento indexado
  • É usado para a leitura de valores armazenados na
    MP, servindo como apontador um registo de 16 bits
    (DP ou PC)

32
Ainda os modos de endereçamento
  • Apesar de a folha de características do 80C51 não
    o referir explicitamente, este componente suporta
    também um modo de endereçamento a que é
    habitualmente dada a designação de endereçamento
    relativo (e.g. jb P1.2,marca)
  • Neste modo, e em vez do endereço de destino, o
    operando consiste na diferença (offset) entre
    esse endereço e o endereço actual

33
Ainda os modos de endereçamento (cont.)
  • O offset é apresentado como um byte em
    complemento para dois, o que permite saltos de
    até 127 bytes para a frente ou 128 bytes para
    trás

34
Ainda os modos de endereçamento (cont.)
  • Esta solução permite poupar um byte na
    especificação do endereço, sendo o valor do
    offset calculado pela aplicação que gera o código
    objecto
  • Exemplo

35
Tipos de instruções
  • O importante não é conhecer todas as instruções
    (nem isso seria possível), mas sim conhecer bem
    as características dos seus cinco grupos
    principais
  • Instruções aritméticas (arithmetical)
  • Instruções lógicas (logical)
  • Transferência de dados (data transfer)
  • Instruções Booleanas (Boolean)
  • Instruções de salto (jump)

36
Instruções aritméticas
37
Instruções aritméticas (cont.)
  • Exemplos

38
Instruções lógicas
39
Instruções lógicas (cont.)
  • Exemplos

40
Instruções de transferência de dados
  • Estas instruções sub-dividem-se em três grupos
    principais
  • Transferência de dados na MD interna
  • Transferência de dados na MD externa
  • Leitura de tabelas armazenadas na MP
  • Cada um destes tipos será agora considerado
    individualmente

41
Transferência de dados MD interna
42
Transferência de dados MD interna (cont.)
  • Exemplos

43
Transferência de dados MD externa
44
Transferência de dados Leitura de tabelas na MP
45
Instruções Booleanas
46
Instruções Booleanas (cont.)
  • Exemplos

47
Instruções de salto
  • Estas instruções sub-dividem-se em dois grupos
    principais
  • Salto não condicional
  • Salto condicional
  • Cada um destes tipos será agora considerado
    individualmente

48
Instruções de salto não condicional
49
Instruções de salto não condicional (cont.)
  • Exemplos

50
Instruções de salto condicional
51
Instruções de salto condicional (cont.)
  • Exemplos

52
Exemplo de aplicação
  • Para consolidar os conhecimentos adquiridos,
    consideraremos agora o caso de pretendermos
    simular o funcionamento de um registo de
    deslocamento, como o que se apresenta a seguir

53
Exemplo de aplicação (cont.)
  • Os pressupostos são os seguintes
  • O sinal de relógio é activo à transição
    ascendente
  • No estado inicial, todas as saídas deverão estar
    a 0
  • A relação entre as entradas (IN e CLK) e as
    saídas (OUT0..7) deverá ser tão próxima quanto
    possível da que teria lugar através da
    implementação em hardware

54
Sequência de passos
  • A sequência de passos até à solução é a seguinte
  • Efectuar a atribuição entre os sinais exteriores
    e os pinos de E/S paralela do microcontrolador
  • Reflectir sobre a sequência de operações que
    implementem a funcionalidade pretendida
  • Codificar esta sequência em assembly
  • Obter o código objecto, simular o seu
    funcionamento (verificação de projecto) e
    implementar na prática

55
Atribuição de recursos
  • A simplicidade do exemplo considerado
    dispensa-nos o uso de recursos externos a um
    87C51, pelo que poderemos especificar a seguinte
    atribuição
  • Linhas de saída OUT0..7 do registo de
    deslocamento estarão ligadas ao porto 1
    (respectivamente P10..7)
  • Linhas de entrada ligadas ao porto 0 (CLK em P0.0
    e IN em P0.1)

56
Sequência de operações a realizar
  • A sequência de operações a realizar pode
    especificar-se como se segue
  • Aguardar pela subida no sinal de relógio (CLK)
  • Após a subida em CLK, deslocar o conteúdo de
    OUT0..7 uma posição, no sentido de OUT0 para
    OUT7 (para a esquerda, considerando que OUT7
    está à esquerda)
  • Se a entrada IN estiver em 1, colocar OUT0 em
    1 caso contrário, colocar OUT0 em 0

57
Codificação em assembly
  • (analisar com pormenor para que serve a linha
    10?)

58
Verificação de projecto
  • É necessário esperar pela descida do relógio
    (linha 10), para evitar que uma única subida em
    CLK provoque múltiplas operações de deslocamento
    (dependendo da relação entre CLK e o relógio do
    87C51)

59
Verificação de projecto (cont.)
  • Considerando CLK a 1 KHz e o relógio do 87C51 a
    12 MHz, quantas operações de deslocamento
    ocorreriam se não tivéssemos aquele cuidado?

60
Verificação de projecto (cont.)
  • É ainda também importante atentarmos na diferença
  • entre o tempo de propagação de um circuito com
    FF-D e a simulação via 87C51
  • Poderão daqui advir problemas (funciona-mento
    incorrecto)?

61
Expansão da funcionalidade
  • Suportar uma entrada Habilita (em P0.2)

.org...? include...?
62
Expansão da funcionalidade (cont.)
  • Suportar entradas de Habilita (P0.2) e Sentido
    (P0.3)

63
Avaliação do resultado
  • Comparando as duas alternativas (FF-D e 87C51)
    para a implementação do exemplo considerado, que
    conclusões podemos tirar relativamente a
  • Tempo de desenvolvimento?
  • Flexibilidade da implementação?
  • Rapidez de funcionamento?
  • Como é que a resposta às questões anteriores é
    afectada pela complexidade do caso em estudo?

64
As interrupções revisitadas
65
Gestão das interrupções
  • O código executado pelo microcontrolador pode
    activar / desactivar (set / cleared) todas as
    flags de interrupção
  • Cada fonte de interrupção pode ser habilitada /
    inibida individualmente (registo IE nos SFR)
  • A cada fonte de interrupção pode ser atribuída
    uma prioridade alta ou baixa (registo IP nos SFR)

66
Interrupções externas
  • /INT0 e /INT1 podem ser activos ao nível ou à
    transição, de acordo com o conteúdo do registo
    TCON (SFR com endereço 88H)
  • Se as interrupções forem activas à transição, as
    flags que as geram são limpas pelo hardware
    quando a respectiva rotina é executada (caso
    contrário, terá que ser o código do utilizador a
    fazê-lo)

67
Interrupções dos T/C
  • As interrupções pedidas pelos temporizadores /
    contadores são geradas por TF0 e TF1, activadas
    por rollover nos registos dos respectivos T/C
    (excepto T/C 0 em modo 3, como veremos adiante)
  • Quando é gerada uma interrupção proveniente dos
    T/C, a flag que a gerou é limpa pelo hardware
    quando a respectiva rotina é executada

68
Interrupções da comunicação série
  • Os pedidos de interrupção do periférico de
    comunicação série resultam do OR entre as flags
    RI (recepção) e TI (transmissão)
  • Nenhuma destas flags é limpa pelo hardware quando
    a respectiva rotina é executada (o código da
    rotina tem primeiro que identificar a causa da
    interrupção e depois limpar a flag)

69
O registo IE (end. SFR A8H) endereçável ao bit
  • Este registo permite-nos habilitar / inibir cada
    fonte de interrupção
  • EA inibe todas as interrupções se estiver em 0
    se estiver em 1, estarão habilitadas as que
    tiverem o seu IE.x em 1
  • ES periférico série ET1 e ET0 dos T/C EX1 e
    EX0 externas (pinos /INT1 e /INT0)

IE.7
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
ET1
EX1
ET0
EX0
EA
-
-
ES
70
O registo IP (end. SFR B8H) endereçável ao bit
  • Este registo permite-nos atribuir a cada fonte de
    interrupção uma prioridade alta ou baixa
  • Uma fonte de interrupção terá alta prioridade
    quando o seu bit IP.x estiver em 1 baixa quando
    estiver em 0
  • PS periférico série PT1 e PT0 dos T/C PX1 e
    PX0 externas (pinos /INT1 e /INT0)

IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0
PT1
PX1
PT0
PX0
-
-
-
PS
71
O registo TCON (end. SFR 88H) endereçável ao bit
  • Para além de controlar os T/C, este registo
    também se relaciona com as interrupções externas
  • IEx O hardware activa (set) esta flag à
    transição descendente em /INTx e limpa-a
    (cleared) quando a respectiva rotina de
    atendimento é executada
  • ITx Se estiver em 1 a interrupção em /INTx é
    activa à transição descendente caso contrário, é
    activa ao nível 0.

TC.7
TC.6
TC.3
TC.2
TC.1
TC.5
TC.4
TC.0
IT1
IE0
IT0
IE1
TR0
TF0
TR1
TF1
72
Atendimento das interrupções
  • Ao atender uma interrupção, o hardware do 80C51
    determina a execução de uma instrução LCALL para
    a respectiva rotina de atendimento
  • Endereços de atendimento IE0 - 0003H TF0 -
    000BH IE1 - 0013H TF1 - 001BH RI ou TI - 0023H
  • A flag associada à interrupção é limpa pelo
    hardware nuns casos, mas noutros terá que o ser
    pelo código
  • LCALL força o PC na stack, mas quaisquer outros
    registos (e.g. ACC, PSW, ...) terão que ser
    guardados pelo código

73
Retorno das interrupções
  • A execução da rotina de atendimento continua até
    que seja encontrada uma instrução RETI (return
    from interrupt)
  • RETI informa o processador que terminou o
    atendimento à interrupção e extrai da stack o
    endereço de retorno
  • RET (retorno de subrotina) faria algo semelhante,
    mas manter-se-ia a indicação de estar em curso o
    atendimento a uma interrupção (qual o problema?)

74
Exemplo (KEIL) Interrupções via /INT0
código para ilustrar o atendimento de
interrupções externas em /INT0, activas à
transição cseg at 0 salta jmp inicio uma
vez que 0003H tem que conter o código de
atendimento a /INT0, em 0000 cabe apenas uma
instrução de salto cseg at 0003h intext0 inc r1
reti o atendimento a /INT0 apenas incrementa
o R1, pelo que o seu conteúdo nos diz quantas
interrupções foram atendidas cseg at 0010h inicio
mov r1,0 inicializa R1 com
0 mov tcon,01 mov ie,81h programa o
funcionamento das interrupções via
/INT0 ciclo mov a,p0 add a,p1 mov p2,a jmp cic
lo está sempre a colocar em P2 o valor de
P1P0 end
75
Int. via /INT0 Visualização no dScope
76
Os temporizadores / contadores (T/C) do 80C51
  • Existem dois T/C com 16 bits, podendo cada um
    funcionar como temporizador (T) ou contador (C)
  • Como temporizador o registo é incrementado por
    cada ciclo máquina (12 ciclos de relógio)
  • Como contador o registo é incrementado à descida
    do sinal no pino (T0 ou T1) sendo T0 / T1
    amostrados uma vez em cada ciclo máquina, a
    detecção de descida leva 24 ciclos de relógio
    (primeira amostra 1, segunda 0)

77
Controlo de funcionamento dos T/C
  • O controlo de cada T/C é feito através dos
    registos TMOD e TCON (dois dos SFR)
  • O estado (activo / parado) é controlado através
    do registo TCON
  • A definição da função pretendida (temporizador ou
    contador) é feita pelo bit C-/T em TMOD
  • Para cada T/C (seja como temporizador ou como
    contador) existem quatro modos de funcionamento,
    definidos pelos pares de bits (M1,M0) em TMOD

78
T/C Modos 0 e 1(iguais nos dois T/C)
TCON
TMOD
  • Este modo é compatível com o temporizador do 8048
    (8 bits com pré-divisão por 32)
  • No modo temporizador, e com Gate em 1, podemos
    medir a largura do impulso em /INTx
  • O modo 1 é igual ao 0, mas agora em 16 bits

79
T/C Modo 2(igual nos dois T/C)
TCON
TMOD
  • A contagem é em 8 bits (TL1)
  • Quando se excede o limite da contagem
    (overflow) é pedida uma interrupção e TL1 é
    automaticamente recarregado com o conteúdo de TH1
    (que se mantém)

80
T/C Modo 3(diferente para cada T/C)
TMOD
TCON
81
T/C Modo 3 (cont.)
  • Comentários ao modo 3
  • Neste modo, o T/C 1 está parado (como quando
    TR10)
  • TL0 e TH0 funcionam de modo independente (em 8
    bits)
  • TH0 funciona como temporizador, controlado por
    TR1 e pedindo interrupções via TF1 (repare-se que
    TR1 e TF1 pertenciam ao T/C 1, nos outros modos
    de funcionamento)
  • Nota O T/C 1 pode ainda ser usado (retirando-o
    do modo 3), mas sem poder controlar TF1

82
O registo TCON (end. SFR 88H) endereçável ao bit
  • Os bits TFx e TRx estão associados aos T/C
  • TFx Pede as interrupções do T/C x (set por
    hardware quando ocorre overflow limpa por
    hardware quando se salta para a rotina de
    atendimento)
  • TRx controlo de estado (activo / parado) do T/C
    x (controlado por software para activar / parar o
    T/C x)

TC.3
TC.7
TC.6
TC.2
TC.1
TC.0
TC.5
TC.4
IT1
IE0
IT0
IE1
TR0
TF0
TR1
TF1
83
O registo TMOD (end. SFR 89H) endereçável ao bit
  • Existem quatro bits por cada T/C
  • Gate Em conjunto com TRx, controla o estado
    (activo / parado) do C/T (ver esquemas que
    descrevem os modos de funcionamento)
  • C-/T Define a função (0 temporizador 1
    contador)
  • M1,M0 Definem o modo de funcionamento (0 a 3)

TM.3
TM.7
TM.6
TM.2
TM.1
TM.0
TM.5
TM.4
Gate
C-/T
M1
M0
M0
M1
C-/T
Gate
84
Exemplo (KEIL) Funcionamento do T/C 1
exemplo para ilustrar o funcionamento dos T/C
com interrupções T/C 1 funciona como contador
de 8 bits com auto-reload deve complementar-se
P1.0 quando forem contados três impulsos
exteriores cseg at 0
inicio mov tmod,60H contador, modo 2
(quando TR11 e T1 desce) mov ie,88H permite
interrupções do T/C 1 mov tl1,0fdh para
contar apenas três vezes mov th1,0fdh
para recarregar o TL1 setb tr1 permite início
da contagem jmp apenas para ficar aqui
parado cseg at 001bh tc1int
complementa o bit P1.0 cpl p1.0 reti end
85
T/C 1 Visualização no dScope
86
A porta de comunicação série no 80C51
  • Pode transmitir e receber em simultâneo (é do
    tipo full duplex)
  • Os registos de recepção e transmissão são ambos
    acedidos através do SBUF (SFR c/ end. 99H)
  • A escrita no SBUF carrega o registo de
    transmissão
  • A leitura do SBUF acede ao registo de recepção
    (fisicamente diferente)
  • A porta série tem quatro modos de funcionamento

87
Porta série Modos de funcionamento 0 e 1
  • Modo 0 - Transmissão em 8 bits (LSB primeiro),
    com taxa de transmissão (baud rate) de 1/12 da
    frequência de relógio. Os dados entram e saem via
    RxD, estando o relógio de transmissão em TxD.
  • Modo 1 - Transmissão em 10 bits Start bit (0),
    bits de dados (LSB primeiro) e um Stop bit (1),
    com baud rate variável. Envio por TxD e recepção
    por RxD.

88
Porta série Modos de funcionamento 2 e 3
  • Modo 2 - Transmissão em 11 bits Start bit (0),
    bits de dados (LSB primeiro), um nono bit
    programável (e.g. o bit de paridade no registo
    PSW) e um Stop bit (1). O baud rate pode ser 1/32
    ou 1/64 da frequência do relógio. Envio por TxD e
    recepção por RxD.
  • Modo 3 - Como no modo 2, mas agora com baud rate
    variável.

89
Taxas de transmissão (baud rate)
  • No modo 0, o baud rate é fixo e igual a 1/12 da
    frequência de relógio
  • No modo 2, o baud rate depende do bit SMOD no
    registo PCON (SFR c/ end. 87H), sendo dado por
    (2SMOD / 64) x (frequência) (1/64 ou 1/32,
    portanto)
  • Nos modos 1 e 3, o baud rate é variável e
    determinado pelo T/C 1 (e também depende do bit
    SMOD)

90
Uso do T/C 1 para determinar o baud rate
  • Nos modos 1 e 3 o baud rate é determinado pela
    seguinte expressão
  • (2SMOD / 32) x (ritmo de overflow
    do T/C 1)
  • As interrupções através deste T/C devem estar
    inibidas
  • O T/C 1 pode funcionar como temporizador ou como
    contador, em qualquer modo de funcionamento,
    excepto o modo 3 (recorde-se que neste modo o T/C
    1 está parado)

91
Geração do baud rate via T/C 1 Forma habitual
  • No caso mais comum, o T/C é usado no seu modo 2
    (como temporizador com auto-reload)
  • O baud rate da porta série, nos seus modos 1 e 3,
    é então dado por
  • (2SMOD / 32) x (frequência / (12 x
    (256-(TH1))))
  • (TH1) Conteúdo do T/C 1, oito bits mais
    significativos
  • Para uma frequência de 11,0592 MHz, quais os
    valores de SMOD e (TH1), para resultar um baud
    rate de 19.200 bps?

(modo 2 do T/C 1)
(modos 1 e 3 da porta série)
92
O registo SCON (end. SFR 98H) endereçável ao bit
  • Bits SM0, SM1 e SM2
  • SM0 e SM1 Definem o modo de funcionamento (0 a
    3).
  • SM2 Habilita a capacidade de comunicação em
    sistemas do tipo multiprocessador, nos modos 2 e
    3. Neste caso, o nono bit em 1 dá origem a um
    pedido de interrupção, para indicar que chegou um
    endereço de nó.

SC.7
SC.3
SC.2
SC.6
SC.5
SC.4
SC.1
SC.0
RB8
TI
RI
TB8
REN
SM2
SM1
SM0
93
SCON (end. SFR 98H) endereçável ao bit (2)
  • Bits REN, TB8 e RB8
  • REN Controlado por software para permitir (1) ou
    inibir (0) a recepção.
  • TB8 Nono bit a transmitir nos modos 2 e 3
    (controlado por software).
  • RB8 Nos modos 2 e 3, é o nono bit recebido. No
    modo 1, se SM20, é o stop bit recebido. No modo
    0, não é usado.

SC.7
SC.3
SC.2
SC.6
SC.5
SC.4
SC.1
SC.0
RB8
TI
RI
TB8
REN
SM2
SM1
SM0
94
SCON (end. SFR 98H) endereçável ao bit (3)
  • Bits TI e RI
  • TI Flag de interrupção por envio. Activada por
    hardware no final do oitavo bit em modo 0, ou no
    início do Stop bit nos restantes modos. Deve ser
    limpa por software.
  • RI Flag de interrupção por recepção. Activada
    por hardware no final do oitavo bit em modo 0, ou
    a meio do Stop bit nos restantes modos. Deve ser
    limpa por software.

SC.7
SC.3
SC.2
SC.6
SC.5
SC.4
SC.1
SC.0
RB8
TI
RI
TB8
REN
SM2
SM1
SM0
95
Exemplo (KEIL) Escreve em P1 o byte recebido
segmento de código para ilustrar a recepção
série no 80C51 cada byte recebido é escrito na
porta 1 cseg at 0 salta jmp inicio cseg at 002
3h int_psr clr ri limpa a flag que indica
interrupção por recepção mov p1,sbuf copia
para a porta 1 o byte que acabou de
chegar reti cseg at 0030h inicio mov scon,70h
porta série em modo 1 (SM0,SM1)(0,1),
recepção habilitada (REN1) activa RI quando
lê o Stop bit (SM21) mov tmod,20h T/C 1 como
temporizador (C/T0) em modo 2 (M1,M0)(1,0) mov
tl1,0fdh mov th1,0fdh com SMOD em 0 por
omissão, resulta um baud rate de 9.600
bps mov ie,90h habilita apenas as
interrupções da porta série setb tr1 activa o
funcionamento do T/C 1 jmp end
96
Porta série Visualização no dScope
97
Outro exemplo Recepção de uma tabela de valores
  • Requisitos (assuma-se a frequência de 11,0592
    MHz)
  • Baud rate de 19.200 bps (gerados pelo T/C 1),
    palavras de 10 bits (start bit, dados, stop bit)
  • Armazena os bytes recebidos em MD interna, a
    começar em 30H
  • Termina quando receber a sequência ASCII FIM
    46H-49H-4DH
  • Quando terminar, reinicializa apontador para a
    tabela e salta para 2000H

98
Conclusão
  • Objectivo principal do capítulo Apresentar a
    arquitectura em que se baseia a família de
    microcontroladores 80C51
  • Pistas para a continuação do estudo
  • Evolução da arquitectura 80C51 (e.g. arquitectura
    XA)
  • Outros microcontroladores (e.g. Motorola 68HCXX e
    Microchip PIC)
Write a Comment
User Comments (0)
About PowerShow.com