Você está na página 1de 22

| 

  

  

Engenharia da Computação
Aula 5

Prof. Abel Guilhermino




ï 2nterrupção
¦ A interrupção é provavelmente uma das mais importantes
ferramentas nos sistemas de controle microprocessadores,
pois é o processo pelo qual a execução de um programa é
interrompida (ou não) de acordo com as necessidades de
eventos externos ou internos.
ï Existem três fontes de interrupção:
¦ Por software (instrução)
¦ Timer
¦ Serial
ï Ñantagem
¦ Simplificação do hardware, pois não precisamos fazer com
que nosso sistema fique monitorando o funcionamento de
certos dispositivos periféricos.


ï 5 maneiras:
¦ Pela interrupção externa 2 T0
¦ Pela interrupção externa 2 T1
¦ Pelo Timer/Counter 2nterno T2ER0
¦ Pelo Timer/Counter 2nterno T2ER1
¦ Pelo canal de comunicação serial
ï Prioridade
¦ 2 T0 (maior)
¦ Timer0
¦ 2 T1
¦ Timer1
¦ Serial (menor)


ï Endereços de desvio para cada interrupção:
¦ 2 T0\ : 03H
reset 00
¦ Timer/Counter0 : 0BH 01
....
¦ 2 T1\ : 13H 03
04
¦ Timer/Counter1 : 1BH ....
0B
¦ Serial : 23H
13
14
Obs: 2 T0,Timer0,2 T1 e Timer1
possuem apenas 8 bytes antes de 1B
sobrepor com o próximo. O reset 23
tem 3 bytes para poder ser 24
deslocado para outra posição de
memória (o início do programa).


ï Registros de controle das interrupções
¦ O 8051 possui doi registros de 8 bits cada um na
sua memória RA que servem para habilitação
ou não das interrupções e indica para a CPU a
prioridade de cada uma delas.
¦ Sempre que uma interrupção é requisitada, um
certo bit de controle dessa interrupção será
setado e assim permanecerá até que essa
interrupção seja atendida.
¦ Exceção é a interrupção de canal serial, que deve
ter seu bit de controle setado por software.
D
 


ï O registro 2E (2nterrupt Enable ± Habilitador
de 2nterrupções)
ï Tem por função indicar qual das interrupções
está ou não habilitada.
EA X X ES ET1 EX1 ET0 EX0

ï EA: (Enable All), habilita todas as interrupções. Qdo 0, desabilita todas


as interrupções. Qdo 1, permite habilitar outras interrupções
ï ES: (Enable Serial), qdo 1 libera a interrupção pedida pelo canal serial,
se EA=1. Qdo 0, inibe a interrupção pedida pelo canal serial,
independente de EA.
ï ET1: (Enable Timer1),qdo 1, libera a interrupção pedida pelo timer1, se
EA=1. Qdo 0, inibe interrupção pedida pelo timer1 independente de EA
D
 


EA X X ES ET1 EX1 ET0 EX0

ï EX1 : (2nterrupção externa 1), qdo 1, libera interrupção pedida pelo


dispositivo ligado ao pino 2 T1\ se EA=1. Qdo 0, inibe a interrupção
pedida pelo dispositivo externo ligado a 2 T1\, independente de EA.
ï ET0: (Enable Timer 0), qdo 1, libera interrupção pedida pelo Timer 0,
desde que EA=1. Qdo 0, inibe a interrupção pedida pelo Timer 0,
independente de EA.
ï EX0: (2nterrupção externa 0), qdo 1, libera interrupção pedida pelo
dispositivo ligado ao pino 2 T0\ se EA=1. Qdo 0, inibe a interrupção
pedida pelo dispositivo externo ligado a 2 T0\, independente de EA.
D
 |
|  
X X X PS PT1 PX1 PT0 PX0

ï PS: Prioridade serial e qdo em 1, indica prioridade alta à interrupção


gerada pelo canal serial, se a mesma estiver habilitada. Qdo em 0
indica prioridade baixa.
ï PT1: Prioridade no Timer1, qdo 1, indica prioridade alta para a
interrupção pedida pelo Timer1. Qdo 0, indica prioridade baixa para
esta interrupção.
ï PX1: Prioridade de 2 T1, e quando 1, indica prioridade alta para
interrupção pedida pelo dispositivo externo ligado ao pino 2 T1. Se 0
indica prioridade baixa para esta interrupção.
ï PT0: idem a PT1 para o Timer0
ï PX0: idem a PX1 para o 2 T0.
£
 



ï Existem 3 maneiras pelas quais um
sistema pode reconhecer um sinal
lógico
¦ Pelo nível (alto ou baixo)
¦ Pela borda de subida ou de descida
¦ Pela soma de borda (subida ou descida) e
um nível correspondente
| 

ï Observações 2mportantes
¦ Pull-Down
Processo pelo qual garantimos que um certo
ponto num circuito lógico ficará num nível
lógico fixo, não flutuando aleatoriamente. este
caso garantimos nível 0.

pino

R
| 

ï Observações 2mportantes
¦ Pull-Up
Processo pelo qual garantimos que um certo
ponto num circuito lógico ficará num nível
lógico fixo, não flutuando aleatoriamente. este
caso garantimos nível 1.

pino

Ñcc
|  !" 
ï Como a maioria das linguagens de alto
nível, C é uma linguagem de
programação modular (mas não uma
linguagem orientada a objetos).
ï Cada tarefa pode ser encapsulada
como uma função
  # 
 !
  !
ï Diretivas do compilador
ï 2nclude file
ï Declaração de funções
ï Função Principal
ï Sub-funções
ï Rotinas de serviço de interrupção
Ñ #

ï Tipos
¦ V  (16-bits in our compiler)
¦ char (8-bits)
¦ Ohor (16-bits)
¦ !o  (32-bits)
¦ O V (1-bit) ` ` `
  ` `
¦ others that we will discuss later
£
ï Alguns outros tipos:
`      
`     
` `   
`  `       

u``  


 
u``   
  
u`` ` 
  
u``  `
  
ÿ£
ï ew data types:
ï Exemplo:
bit bit new_flag; //stored in 20-2F
sbit sbit LED = P1^6;
sfr sfr SP = 0x81; //stack pointer
sfr16 sfr16 DP = 0x82; // data pointer

 

ï Arithmetic: +, -, *, /
ï Relational: >, >=, <, <=
ï Equality: ==, !=
ï Logical: && (and), || (or)
ï 2ncrement and decrement: ++, --
ï Example:
if (x != y) && (c == b)
{
a=c + d*b;
a++;
}
|  !
ï Definição de biblioteca para o 8051
¦ # include <reg51.h>
Biblioteca onde encontram-se definida o
endereçamento dos: SFR, bit register, TCO ,
2E, 2P, P3 e SCO .
|  !
ï Atribuir um valor a uma porta:
¦ P3=0xFF;


$ 

º   ` 

Ô  Ô 
    
    
   
    
      


|  !
ï Contagem do timer:
¦ Um único ciclo de máquina consiste de 12 pulsos
do cristal.
¦ Com isso uma execução do timer seria
incrementado:
11.059.200 / 12 = 921.600 vezes/seg
¦ Se um timer tem contado de 0 até 50000 então
tem passado:
50.000/921.600 = 0,0543 segundos
|  !
ï Programa principal:
while (1){
switch (st){
case 0:
case 1:
...
}
}