You are on page 1of 255

DISSENY DE SISTEMES ELECTRNICS BASATS EN MICROPROCESSADORS

Codi assignatura: 28203


Horari: Dilluns
Dimecres

11:00-13:00 (Teoria)
11:00-12:00 (Problemes)

OBJECTIUS
Lassignatura pretn formar estudiants que entenguin el mode de funcionament bsic dun sistema
encastat (embedded) basat en un microcontrolador i que hagin adquirit les habilitats fonamentals de la
programaci en llenguatge ensamblador.
Lassignatura posar un mfasi important en la resoluci de casos prctics alhora que reforar conceptes
bsics adquirits en altres assignatures de la titulaci. En particular, sestudiar larquitectura bsica dun
sistema microcontrolador, el seu repertori dinstruccions i els seus modes dadreament. Saplicaran els
principis de disseny top-down per al desenvolupament de programes per al microcontrolador i saprendr
a escriure programes estructurats en llenguatge ensamblador per al Motorola HCS12. Es descriuran les
principals interfcies dEntrada/Sortida i es practicaran els conceptes bsics de programaci de port
parallels, control de temporitzadors i gesti dinterrupcions. Per ltim, lassignatura acabar amb
lestudi dels elements bsics necessaris per al disseny dun sistema encastat i es revisaran els circuits
bsics necessaris per construir un sistema senzill basat en un microcontrolador, tot analitzant la placa
Motorola M68HC12A4EVB i altres plaques similars.
TEORIA
1. INTRODUCCI
-

Conceptes bsics: microprocessadors i microcontroladors. Arquitectures i encapsulats tpics.


Evoluci histrica dels microprocessadors: una classificaci generacional amb exemples
representatius.

2. ARQUITECTURA DE MICROPROCESSADORS/MICROCONTROLADORS
-

Microcontroladors (la famlia M68HC11/12): organitzaci interna, interfcie externa i


timings. Mapa de memria.

3. PROGRAMACI DEL M68HC12


-

Repertori dinstruccions: moviment dinformaci, aritmtiques, lgiques, salts condicionals


i incondicionals, subrutines i miscellnies.
Modus dadreament: immediat, directe i ests, indexat, inherent i relatiu.
Llenguatge ensamblador i lensamblador ASM12: format, directives, macros, opcions,
errors, .

4. ENTRADA/SORTIDA PARALLELA
-

Modes doperaci: Single-Chip, Expanded, Register.


Ports parallels del M68HC12: registres de dades i registres de direcci.
Programaci bsica de ports.
Electrnica del pins dE/S.

Conceptes avanats: sincronitzaci i hardware handshake.

5. TEMPORITZADORS
-

Temporitzador bsic. Comptador free-running.


Funcions dOutput Compare.
Funcions dInput Capture.
Acumulador de polsos.

6. INTERRUPCIONS
-

Principis bsics de gesti dinterrupcions: el procs dinterrupci, capacitaci/descapacitaci


dinterrupcions, peticions dinterrupci, la seqncia dinterrupcions i el retorn del servei
dinterrupcions.
Taules de vectors i taules indirectes de salt.
Rutines dinicialitzaci i de gesti.
Fonts dinterrupcions: emmascarables i no emmascarables; internes i externes.
Interrupcions anidades.

7. MDULS ADICIONALS I DISSENY DE PLAQUES


-

Components de suport a la CPU: Circuits de reset, circuits generadors de rellotge, circuits


generadors destats despera, circuits caracterstics d'interfcie a un bus.
Eines de suport al disseny de sistemes basats en microcontroladors: Plaques davaluaci,
emuladors, simuladors i monitors.
Depuradors: conceptes bsics, tcniques hardware i software, conceptes avanats
(Background Debug Mode).
Anlisi de la placa de desenvolupament M68HC12A4EVB.

Dates importants
1 convocatria
1 prova parcial: 22 d mar del 2009
2 prova parcial: 7 de juny del 2009
2 convocatria: per confirmar
PRCTIQUES
Realitzaci de diversos programes en ensamblador per a la placa HCS12E128.
Calendari
Nombre total de sessions: 10
Inici de sessions de prctiques: veure calendari
Final de sessions de prctiques: veure calendari
Horaris:
Dimarts
Dijous
Dijous

15:00-18:00
11:00-14:00
15:00-18:00

Les prctiques shan de realitzar en grups de tres persones. Noms en casos excepcionals els professors
admetran grups de menys membres. La gesti de grups es far amb el campus virtual. Lobertura de
laplicaci sanunciar a classe. Altres informacions especfiques sobre les prctiques saniran incloent
en altres documents especfics que es publicaran al llarg del curs,
BIBLIOGRAFIA
Teoria
Bsica
- Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth.
Oxford University Press, (2000).
Complementria
- 68HC12 Microcontroller: Theory and Applications, Daniel J. Pack, Steven F. Barret,
Prentice-Hall, (2002).
Prctiques
- Software and Hardware Engineering. M68HC12. Fredrick M. Cady & James M. Sibigtroth.
Oxford University Press, (2000).
La bibliografia es complementa amb documents tcnics i manuals de components usats en el laboratori.
Tamb hi ha fora recursos dinformaci disponibles a Internet. Es posar una selecci dels ms tils a la
pgina corresponent de lassignatura dins el Campus Virtual.
PROFESSORS
Teoria:
Problemes:
Prctiques:

Diego Lugones
Claudia Rosas
Eduardo Cabrera
Claudia Rosas
Eduardo Cabrera
Andrea Trujillo

AVALUACI
1 convocatria
La nota final de l'assignatura s'obt sumant les notes corresponents a les prctiques i a la teoria,
ponderades en un percentatge del 70% teoria, i 30% prctiques (tant la nota de teoria com la de
prctiques han de ser, com a mnim, de 5 per poder fer la suma; en cas contrari, l'assignatura es
qualificar amb un susps).
La nota de teoria sobt a partir de dues proves
individuals, que representen el 60% (30%
cadascuna), i de la realitzaci de problemes en
grup, que suposen el 10% restant. La nota de
problemes es tindr en compte en la nota final
de teoria sempre que la mitja de les dues proves
individuals sigui superior a 4 i que la nota de
problemes impliqui una millora respecte les
notes de les proves individuals; en cas contrari,
la nota de teoria vindr exclusivament de les
proves individuals.
Els problemes es realitzaran en grups de dues i
es destinaran les classes de dimecres per a la
seva correcci.
La nota de prctiques ser la mitja aritmtica de
totes les prctiques, per noms es pot
suspendre una nica prctica que no sigui
lltima per poder aprovar les prctiques. En cas
contrari no saprovar la part de prctiques.

Problemas

i =1

Exmenesi
c / examens 5
2

Lassistncia al laboratori de prctiques s obligatria i condici "sine qua non" per aprovar. Les
prctiques tamb es faran en grups de tres persones. No cal que coincideixin els integrants dels grups de
prctiques i de problemes. Tot i que la realitzaci de les prctiques es faci en grup, lavaluaci final ser
individual i es tindr en compte la valoraci que el professor de prctiques faci de cada integrant del
grup, tenint en compte la seva feina i la seva participaci durant les diferents sessions de treball en el
laboratori.
Les qualificacions obtingudes durant aquest perode inicial del curs seran descartades si lalumne
decideix abandonar lassignatura i que li sigui avaluada amb un No Presentat. s a dir, la qualificaci
de No Presentat sobtindr si no es realitza cap de les proves, dels problemes i de les prctiques
avaluables desprs daquesta setmana, amb independncia del que shagi fet abans. Si passat aquest punt
del curs es continuen realitzant proves, prctiques o problemes, savaluar globalment tota lassignatura
en la 1 convocatria tenint en compte totes les notes aconseguides al llarg del curs. Aquelles persones
que vulguin realitzar problemes o prctiques sense que els hi siguin comptabilitzades en la nota final,
caldr que ho consultin amb el professor de teoria.
2 convocatria
En cas de no haver superat la part de teoria, en la 2 convocatria es realitzar una prova individual
escrita. No hi ha examen de prctiques en la 2 convocatria (cal aprovar-les al llarg de les 10 sessions de

laboratori que es fan durant el curs).


A part de les qualificacions obtingudes amb la realitzaci dels diferents treballs proposats al llarg del
curs, els professors podran tenir en compte elements ms subjectius com la participaci, lautonomia i la
iniciativa personal. Daltra banda, es penalitzaran aquells comportaments deshonestos i poc respectuosos
amb els professors, els companys o el material de laboratori. En particular, es considera com a falta molt
greu la cpia fraudulenta de treballs.
ASPECTES TICS
Dels estudiants matriculats en aquesta assignatura sespera que segueixin un codi de conducta que
estigui guiat pels segents principis, sense perjudici de complir el principis generals establerts per la
Universitat Autnoma de Barcelona:
Participaci
Els estudiants han dassumir la plena responsabilitat en laprenentatge dels continguts
daquesta assignatura mitjanant la realitzaci de totes les tasques que els hi siguin
assignades de la millor manera possible. Aix inclou, entre daltres, lassistncia a classe, la
participaci en les activitats de classe, la obtenci, lectura i estudi dels materials
bibliogrfics usats a lassignatura, conixer les qualificacions prpies a mesura que siguin
publicades, i demanar assessorament addicional en cas de necessitat.
Respecte
Els estudiants han de respectar el seu entorn daprenentatge, les aules i laboratoris i tot el
seu equipament, els seus companys, les activitats docents i els seus professors.
Previsi
Els estudiants han de gestionar el seu temps i planificar amb anticipaci. Els conflictes en la
planificaci dactivitats shauran de discutir amb els professors abans de la seva ocurrncia.
Les emergncies noms seran considerades si fan totalment impossible que lestudiant pugui
completar alguna tasca del curs. Les emergncies que noms suposin una reducci del temps
disponible o que afegeixin alguna crrega de treball addicional no seran considerades com a
raons suficients per al no compliment dalgun requeriment de lassignatura.
Honestedat
Tots els materials que realitzin el estudiants han de ser fruit del seu treball personal. No es
tolerar els intents dobtenci de millors qualificacions basats en mtodes de cpia, de plagi,
alteraci o falsificaci de documents oficials, o que suposin una actuaci deshonesta. Els
estudiants sn encoratjats a discutir i intercanviar idees amb els seus companys sobre els
diferents treballs de lassignatura per no han de copiar el treball daltri. Permetre o facilitar
la cpia del treball propi tamb ser considerat com un acte punible.
La violaci daquestes regles implicar laplicaci de possibles sancions, lestudi de les quals els hi
ser comunicada als estudiants perqu puguin presentar les allegacions que creguin oportunes. En cas
de ser adoptades, les sancions dependran de la gravetat de la falta comesa i podran ser, sense que
estiguin limitades a, alguna de les segents accions:

assignaci duna qualificaci final de Susps en lassignatura;


baixar al qualificaci final de lassignatura;
baixar la qualificaci de lactivitat en la que es va detectar la falta.

Els professors de lassignatura subscriuen el codi tic de lIEEE


(http://www.ieee.org/about/whatis/code.html)

DISSENY DE SISTEMES ELECTRNICS BASATS EN


MICROPROCESSADORS
Calendario curso 09-10
Teora: Lunes (11:00-13:00); Aula Q1/1003
Problemas: Mircoles (11:00-12:00) Q1/1003

Semana

Teora

15-02-10

Presentacin
Tema 1
Arquitecturas
Tema 2
Programacin
Tema 3
Interfaces
(Memoria)
Tema 4
Interfaces
(Entrada/Salida)

22-02-10
01-03-10
08-03-10

15-03-10

Problemas
Sesin 1
Sesin 2

Sesin 1
Tutorial

Sesin 3

Sesin 2
Tutorial

Sesin 4

22-03-10

*1 PRUEBA*

29-03-10

Periodo no
lectivo

Periodo no
lectivo

05-04-10

Periodo no
lectivo

Periodo no
lectivo

12-04-10

Tema 5
Temporizadores

Sesin 5

19-04-10

Tema 5
Temporizadores

Sesin 6

26-04-10

Tema 6
Interrupciones

Sesin 7

03-05-10

Tema 6
Interrupciones

Sesin 8

10-05-10

17-05-10

Tema 7
(Mdulos
integrados)
Tema 7
(Mdulos
integrados)

Prcticas

Sesin 9

Sesin 10

24-05-10

Festivo

Repaso

31-05-10

Semana previa
al periodo de
exmenes

Semana previa al
periodo de
exmenes

07-06-10

* 2 PRUEBA*

Sesin 3
Programacin
bsica
Sesin 4
Programacin
puertos de salida
Periodo no
lectivo
Periodo no
lectivo
Sesin 5
Programacin
puertos de
entrada
Sesin 6
Temporizadores
Sesin 7
puertos +
Temporizadores
Sesin 8
Mdulos
adicionales
Sesin 9
Mdulos
adicionales
Sesin de
recuperacin

Semana previa
al periodo de
exmenes

Disseny de Sistemes
Electrnics Basat en
Microprocessadors

Microprocesadores en todos sitios!


Aplicaciones:
Diagnosis e investigacin mdica
Prtesis e implantes
Control de vehculos, de produccin
Entretenimiento
Prediccin del tiempo, terremotos
Anlisis aerodinmico
Anlisis molecular
Fsica nuclear
Oceanografa
Exploracin petrolfera
Militar / defensa
Socio-economa
Inteligencia Artificial

Qu es un Procesador?
Mquina digital electrnica programable
para el tratamiento automtico de la informacin,
capaz de recibirla, operar sobre ella mediante
procesos determinados y suministrar los resultados
de tales operaciones. William Stallings

Entrada

Procesador
Programa

Salida

Procesador = Intrprete de Instrucciones


(2)
(1)
Leer
Instruccin
de Memoria

Decodificar
Instruccin

(3)
Ejecutar
Instruccin

(4)
Leer
o Escribir en
Memoria
Verificar
Interrupcin

(5)

Procesador: Una mquina de estados finita.


interpreta bits (instrucciones) y as controla el uso de sus elementos
(memoria, unidades de cmputo, ...)

Mercado de los Procesadores


Cmputo de Sobremesa:
Precio / Prestaciones (cmputo y grficos)
Compatibilidad:
IA-32+Windows / GNU: Linux + gcc + RISC

Servidores

(WEB, Almacenamiento, Cmputo, Bases de datos):

Rendimiento (Throughput: transacciones por minuto)


Disponibilidad (downtime al ao),
Escalabilidad

Sistemas Empotrados:
Rendimiento deseado al mnimo precio y consumo elctrico
Respuestas en tiempo Real
Aplicaciones cuidadosamente sintonizadas

Mercado de los Procesadores (2)

Sistemas Empotrados
any device that includes a programmable computer but is not
itself intended to be a general-purpose computer Wayne Wolf
Embedded is all computing that is not general purpose (GP),
where general-purpose processors are the ones in todays
notebooks, PCs, and servers Josh Fisher

Sistemas Empotrados
Sistemas heterogneos:
mltiples procesadores de diversos tipos
sistemas de memoria diseado a medida de la aplicacin
Aplicaciones (DSP, multimedia, ...) fciles de paralelizar
No es necesario preservar compatibilidad S/W
Diseos sensibles a coste y consumo

Tiempo

Prestaciones

Tiempo de Respuesta
(orientado al usuario)
Productividad (Throughput) (orientado al sistema)

Capacidad
Datos y Programas

Coste
Fabricacin y Diseo

Limitaciones
Consumo de Energa y Calor generado
Tamao fsico, restricciones elctricas
Fiabilidad!!

No olvidar la fiabilidad!
Muy importante en ciertas aplicaciones:
Automocin, aviones, plantas nucleares
Se mide en fallos por aos
Hay que sacrificar otras cosas: velocidad, coste,

Microprocesador / circuito analgico


1) Menor COSTE: material + fabricacin + consumo + DISEO
disear programa en lugar de hardware
cargar programa en lugar de construir hardware

2) Estabilidad, Repetitividad, Robustez


Ms Insensibilidad a cambios de temperatura, envejecimiento
Siempre mismo Resultado: Sin errores de construccin (tolerancias)

3) Nuevas posibilidades: compresin, encriptacin,

ADC

Procesamiento
Digital

DAC

Procesadores
Procesador:
DSP
(digital signal
processor)

Microcontrolador
C:
Microprocesador:
GPP

Una Clasificacin
Procesador: Trmino genrico
Microprocesador (P):

Procesador dentro de un chip de silicio, de propsito general.


Ejemplos: familia i80x86, Motorola, MIPS, ALPHA, SPARC ...

Microcontrolador (C):
Diseado para sistemas empotrados, integra ms elementos.
Tpicamente: CPU + memoria + perifricos.
Ejemplos : 8051, Intel 80196, familia Motorola 68HCxx.

Digital signal processor (DSP):


Optimizado para aplicaciones de procesamiento de seal discreta en
el tiempo. Conjunto de instrucciones complejas.
Ejemplos: TI's 320Cxx, series de Motorola 5600x, dsPIC

Log FLEXIBILIDAD

Procesador
Propsito
General

Procesador
Digital de
Procesador
Seal
con Repertorio
Field
Especfico
Programmable
Devices
Application
Specific IC
(Circ.Integr.)
Physically
Optimized IC
(Circ.Integr.)

Software

Hardware

Log POTENCIA DISIPADA

Aproximaciones de Implementacin

Log RENDIMIENTO

Algoritmo ms o menos cerca de los transistores


Coste de Diseo frente prestaciones y coste final

Alternativas: ms o menos a medida


Microprocesadores computacionales:
de propsito general, y muy eficientes para aplicaciones de sobremesa
soporte especfico para aplicaciones multimedia y buen rendimiento de
punto-flotante

Microprocesadores empotrados:
versiones reducidas de los anteriores
muchas variedades en funcin de rendimiento, coste y consumo
de propsito general: los puede hacer poco eficientes para ciertas
aplicaciones (lentos para seal)

Custom H/W (ASIC: application specific integrated circuit)


alto rendimiento y eficiencia (rea de chip y energa)
en grandes cantidades: eficiencia menor coste
enorme esfuerzo de diseo: requiere buenas herramientas (lenguaje,
compilador, depurador ...)

Alternativas intermedias
Programmable Logic Device (PLD):
Elementos
elementos combinacionales (cmputo) y estructura de
interconexin entre ellos
Memoria de datos y de control (de la interconexin)

PLD: Recursos Dinmicos + Algoritmo Dinmico


H/W = Recursos Fijos + Algoritmo fijo
Procesador = Recursos Fijos + Algoritmo Dinmico

Tecnologa en evolucin
Mejor eficiencia en el uso del rea del chip y en el consumo
energtico. Menor tiempo de configuracin.
Mejores herramientas de diseo

Ejemplo de PLD
FPGA (Field-Programmable Gate Arrays)
Son capaces de realizar cualquier implementacin en lgica digital
El chip contiene bloques bsicos capaces de realizar una funcin
sencilla, pero programable para cada bloque individual
La conexin entre los bloques tiene un esquema fijo (malla) pero
tambin es programable qu bloques se conectan y cmo.
El paralelismo
del H/W es
enorme: pero la
complejidad
para utilizarlo
recae en el
programador y
en el S/W

CCB

CCB

CCB

CCB

CCB

CCB

CCB

CCB

CCB

Alternativas intermedias
SOC (system on a chip) application specific, multiple
heterogeneous processors on chip (or board); defined
(and relatively small) memory
The new SOC
+ Plenty of low cost area (transistors).
+ Lower frequencies and fast on-die memory
provide better system balance.
+ Lower frequencies mean lower power and
better reliability.
- BUT application specific design means
smaller production runs and more concern
with design costs and design complexity.

Procesadores personalizados
Why use ASIPs (Application Specific Processor Architectures)?
Rainer Leupers, Aachen University
Higher efficiency for given range of applications
IP (Intellectual Property) protection
Cost reduction (no royalties)
Product differentiation

Procesadores personalizados
Tensilica Xtensa:
Fixed RISC-like processor core
Configurable and optional components
ISA extension language (application specific instructions)
Escoger el repertorio de instrucciones
- Escoger el nmero de registros
- Eliminar modos de direccionamiento no utilizados
Personalizar la microarquitectura
- reemplazar unidades funcionales (MUL) por S/W
- eliminar controladores de E/S no usados
- configurar la cach de instrucciones (eliminarla)
- configurar tamao o nmero de bancos de memoria

Permite aumentar GHz y


rendimiento!

Como el PIB de algunos pases!

Problemas a la vista!
Cada vez ms caro incrementar GHz
(frecuencia de reloj) (a pesar de
economa de produccin en masa)

Gran Problema: Calor!!


Solucin:
menos GHZ y ms PARALELISMO

Una tarea nada fcil!

NOW: Network of Workstations

La potencia agregada de muchos procesadores baratos es


superior a la del mayor SUPERCOMPUTADOR, y con un
precio total mucho menor

Blue Gene (IBM) - Marenostrum


SUPERCOMPUTADOR=
Miles de procesadores
conectados de forma
jerrquica

http://www.bsc.es/

Evolucin del Computador

La nueva era de la Computacin


If you round off the fractions, embedded systems consume 100% of
the worldwide production of microprocessors. Jim Turley

a new generation of smart, connected (wired or wireless), powerful,


and cheap devices is upon us. Josh Fisher

DSEBM
Teora Tema 2
Arquitectura de Microprocesadores

2008-2009

Arquitectura del HCS12

HCS12 es el core utilizado

Diversas familias de microcontroladores


utilizan el core HCS12

Estudiaremos el MC9S12E128CPV

Como se identifican los distintos modelos de


cada familia con el core HCS12 ???

Arquitectura del HCS12

Arquitectura del HCS12


MC9S12E128CPV

Arquitectura del HCS12

Arquitectura del HCS12

Caractersticas:

Core 16-bits HCS12


Entradas de interrupcin
wake-up
Memoria interna
Conversor A/D
Conversor D/A
Timers (TIM)
PWM
Interfaces Serie (SCI y SPI)
Soporte para depuracin

Arquitectura del HCS12. Mapa de memoria

Arquitectura del HCS12


port A, B, E, and K related to the core
logic and multiplexed bus interface
port T connected to the timer modules
port U connected to PWM and TIM2
modules
port S associated with 2 SCI and 1 SPI
modules
port M associated with 1 SCI2, 1 IIC,
and 2 DAC modules
port P and Q connected to the PMF
module
port AD connected to ADC module,
which also can be used as an external
interrupt source

Arquitectura del HCS12


Registros:

10

WEBS INTERESANTES:
http://www.motorola.com
http://www.freescale.com

Lectura recomendada:
AN1057: Selecting the Right Microcontroller Unit,
Motorola Semiconductor Application Note, Phoenix, AZ, 1990

11

DSEBM
Teora Tema 3
Programacin del HCS12

2008-2009

Modelo de programacin
Registros:

Acumuladores A, B y D:
A y B son dos acumuladores de 8 bits
Algunas instrucciones tienen operandos de 16 bits
y tratan a los registros A y B como uno solo (A es
el byte ms significativo)
Cuando se modifica D, tambin se modifican A y B

A = AB
B = 32

D = AB32

Modelo de programacin
Registros:

Registros ndice X e Y:
Son utilizados principalmente para indexar
direccionamientos
Algunas instrucciones aritmticas utilizan los
registros ndices

Modelo de programacin
Registros:

Registro Puntero de Pila SP:


La pila es usada para almacenar el contexto del
sistema durante el llamado de una subrutina o de una
interrupcin y tambin puede ser utilizada para el
almacenamiento de datos temporalmente
La pila puede ser localizada en cualquier lugar del
espacio de direcciones y puede crecer hasta cualquier
tamao hasta el total de memoria disponible
El valor de SP se decrementa cuando se inserta un
nuevo elemento a la pila y se incrementa cuando se lo
saca
4

Modelo de programacin
Registros:
Registro Contador de Programa PC:
Registro de 16 bits que contiene la direccin de la
prxima instruccin a ejecutar.
Se incrementa automticamente cada vez que una
instruccin es fetched

Modelo de programacin
Registros:
Registro de Condicin

Tipos de Datos
Bit.
Enteros con signo de 5-bit(offset en direccionamiento
indexado).
Enteros con y sin signo de 8 bits
Enteros con signo de 9-bit (offset en direccionamiento
indexado).
Enteros con y sin signo de 16 bits.
Direccin efectiva de 16 bits.
Enteros con y sin signo de 32 bits.
7

Modos de Direccionamiento
Hay 7 modos de direccionamiento:
{

Inmediato

Directo

Extendido

Indexado

Indexado-indirecto

Inherente

Relativo

Notacin utilizada

Nombre de registro: indica un registro y su contenido

: indica una operacin de transferencia de datos


{

AB, el contenido de A es transferido a B

() : contenido de una posicin de memoria


{

($1234)B, el contenido de la posicin de memoria $1234 es


transferido a B

(()) : modo de direccionamiento indirecto. El interior de


los parntesis especifica una direccin de memoria cuyo
contenido es la direccin del dato
{

A(($1234)), el contenido de A es transferido a una direccin


de memoria cuya direccin est en $1234:1235
9

Modos de Direccionamiento
Direccionamiento Inmediato
Usado cuando el operando es una constante
conocida al momento de escribir el programa

Ldaa #!64

; Decimal !64 -> A

; En el CodeWarrior no hay que introducir el !


Ldaa #$64

; Hexadecimal 64 ->A

Ldx

; Hexadecimal 1234 -> X

#$1234

Lda #%10101010 ; Binario -> A


Observar el # que indica que es direccionamiento inmediato
10

Modos de Direccionamiento
Direccionamiento Directo y Extendido:
El operando contiene la direccin de memoria donde se encuentra el dato.
En el tipo directo la direccin es de 8 bits y en el extendido de 16.

11

Modos de Direccionamiento
Direccionamiento Indexado:
El formato operacin que usa este direccionamiento es:

Op Offset, Registro_Indice
Donde Registro_Indice puede ser: X,Y SP o en algunos casos PC y Offset
es un valor de 5, 9 o 16 bits. Este direccionamiento nos da una direccin
efectiva del dato al hacer : Registro_Indice + Offset.

12

Modos de Direccionamiento
Direccionamiento Indexado (cont.):

13

Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado

14

Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado

Direccionamiento indexado con post/pre incremento/decremento

15

Modos de Direccionamiento
Direccionamiento Indexado (cont.):

Direccionamiento indexado con acumulador

16

Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado-indirecto

17

Modos de Direccionamiento
Direccionamiento Indexado (cont.):
Direccionamiento indexado- Indirecto

Direccionamiento indexado- Indirecto

18

Modos de Direccionamiento
Direccionamiento Inherente:
Todos los datos para la ejecucin de la instruccin
estn dentro de la CPU

19

Modos de Direccionamiento
Direccionamiento Relativo:
Direccionamiento usado en las instrucciones de salto.
Podemos tener dos tipos de saltos:
Saltos pequeos (Short Branch): Usan direcciones de salto de 8
bits. Direcciones accesibles:

PC + 127 o PC - 127 bytes

Saltos largos (Long Branch): Usan direcciones de salto de 16 bits.


Direcciones accesibles:

PC + 32568 o PC - 32767 bytes

Hay instrucciones de bucle como DBEQ,IBEQ o TBEQ pueden usar


direcciones de 9 bits en cuyo caso las direcciones accesibles son: PC +

256 o PC - 255 bytes

20

Modos de Direccionamiento
Direccionamiento Relativo (cont.):

21

Modos de Direccionamiento
Resumen:

22

Programas en Assembler
Cada lnea de cdigo tiene cuatro campos:
Label field
Ejemplo

Label field:

Opcode
field
<tab>

ldaa

Operand
field
<tab>

#64

Comment
field
<tab> ;Inicializacin reg A

Comienza en la primera columna de la lnea de cdigo


Un label es un simbolo seguido (opcionalmente) por dos puntos :
Los labels son opcionales
Provee una referencia a una memoria. Ejemplo: saltos
Puede tener entre 1 a 16 caracteres.
Caracteres vlidos:
Letras maysculas y minsculas (a-z y A-Z)
Dgitos 0-9
$, _ y
Pueden comenzar con un carcter alfabtico o un (_)
Pueden comenzar en la primera columna de la lnea
No hay diferencia entre maysculas y minsculas
23
Pueden estar en una lnea el solo

Programas en Assembler
Ejemplos:

24

Programas en Assembler
Label field
Ejemplo

Operand
field

Opcode
field
<tab>

ldaa

<tab>

#64

Comment
field
<tab> ;Inicializacin reg A

Opcode u Operation Field:


Comienza despus del primer whitespace (<tab> o espacio)
Contiene pseudooperation, assembler directive o macro name

25

Programas en Assembler
Label field
Ejemplo

Opcode
field
<tab>

ldaa

Comment
field

Operand
field
<tab>

#64

<tab> ;Inicializacin reg A

Operand Field
Tipos de Operandos:
Smbolos: representan enteros de 8 o 16 bits. Ej. Si CRLF es definido como
$0D0A cuando el programa es ensamblado CRLF es reemplazado
por $0D0A
Constantes: valores numricos que no cambian durante el programa. Pueden
ser Decimales, Hexadecimales, Binarios o ASCII

Base

Prefijo Sufijo

Binario

Decimal

Hexadecimal

H
26

Programas en Assembler
Base

Prefijo Sufijo

Binario

Decimal

Hexadecimal

27

Programas en Assembler
ASCII:

se utilizan o

Show four ways to specify the code for the ASCII code for the character C and choose the best
way to load the ASCII code into the A register in a program.
Solutions:
ASCII - "C"
Hexadecimal - $43
Decimal - !67
Binary - %01000011
The best way to load the A register with the ASCII code for the character C is
ldaa #"C"

28

Programas en Assembler
Label field
Ejemplo

Opcode
field
<tab>

ldaa

Operand
field
<tab>

#64

Comment
field
<tab>

;Inicializacin reg
A

Comment Field:
Los comentarios comienzan con (;)
Cualquier lnea que comience con (;) o (*) se considera como
una lnea de comentario
til para simplificar el entendimiento del cdigo

29

Programas en Assembler
Pseudooperation

30

Programas en Assembler
Pseudooperation
ORG

EQU

DS
31

Programas en Assembler
Pseudooperation
DC

dc.b
dc.w

dc.b
dc.b
dc.b

dc.b

dc.b

32

Repertorio de Instrucciones
Grupos de instrucciones:

Load and Store


Transfer and Exchange
Move
Addition and Subtraction
Binary-Coded Decimal
Decrement and Increment
Compared and Test
Boolean Logic
Clear, Complement and Negate
Multiplication and Division
Bit Test and Manipulation
Shift and Rotate

Fuzzy Logic
Branch
Loop Primitive
Jump and Subroutine
Interrupt
Index Manipulation
Stacking
Pointer and Index Calculation
Condition Code
Stop and Wait
Background Mode and Null Operations

33

Repertorio de Instrucciones
Load and Store

34

Repertorio de Instrucciones
Transfer and Exchange

35

Repertorio de Instrucciones
Move

Addition and Subtraction

36

Repertorio de Instrucciones
Binary-Coded Decimal

Decrement and Increment

37

Repertorio de Instrucciones
Compared and Test

Boolean Logic

38

Repertorio de Instrucciones
Clear, Complement and Negate

Multiplication and Division

39

Repertorio de Instrucciones
Bit Test and Manipulation

Shift and Rotate

40

Repertorio de Instrucciones
Branch

41

Repertorio de Instrucciones
Loop Primitive

Jump and Subroutine

42

Repertorio de Instrucciones
Interrupt

43

Repertorio de Instrucciones
Index Manipulation

44

Repertorio de Instrucciones
Stacking

45

Repertorio de Instrucciones
Pointer and Index Calculation

Condition Code

46

Repertorio de Instrucciones
Stop and Wait

Background Mode and Null Operations

47

Repertorio de Instrucciones

48

Repertorio de Instrucciones

49

Repertorio de Instrucciones

50

Repertorio de Instrucciones

51

Repertorio de Instrucciones

52

Repertorio de Instrucciones

53

Repertorio de Instrucciones

54

Repertorio de Instrucciones

55

Repertorio de Instrucciones

56

Repertorio de Instrucciones

57

Repertorio de Instrucciones
LECTURA : LDAx (x es A o B), LDz (z es D,X,Y), funcionalidad: (M)->Reg
ESCRITURA: STAx (x es A o B), STz (z es D,X,Y), funcionalidad: Reg->(M:M+1)
ARITMETICAS: INCx (x es A o B), INz (z es X,Y), funcionalidad: Reg+1->Reg

DECx (x es A o B), DEz (z es X,Y), funcionalidad: Reg-1->Reg


Suma: ABA: funcionalidad:(A+B)->A , ABX: funcionalidad:(B+X)->X
ADDx (x es A o B) funcionalidad: Reg+(M)->Reg
ADDD: Reg. D + (M:M+1)->Reg. D
Resta: SBA: funcionalidad:(A-B)->A

SUBx (x es A o B) funcionalidad: Reg-(M)->Reg


SUBD: Reg. D - (M:M+1)->Reg. D
Multiplicacin y divisin: MUL: A*B->D, EMUL: D*Y->Y:D
IDIV: D/X->X,D, EDIVS: Y:D/X->Y,D
58

Repertorio de Instrucciones
LOGICAS: ANDx (x es A o B) Reg and (M) ->Reg, ORAx (x es A o B) Reg or (M) ->Reg
EORx (x es A o B) Reg xor (M) ->Reg

SALTO CONDICIONAL: BEQ: Salta si igual, BNE: Salta si no es igual


BGT(con signo)BHI (sin signo) : Salta si es mayor
BLT(con signo)BLO (sin signo) : Salta si es menor
BGE(con signo)BHS (sin signo) : Salta si es mayor o igual
BLE(con signo)BLS (sin signo) : Salta si es menor o igual
COMPROBACIN DE DATOS: CBA: A-B -> Reg de flags de estado

CMPx (x es A o B) CPz (z es D,X,Y) funcionalidad:

Reg- (M) -> Reg de flags de estado


BITx (x es A o B) Test de los bits del Reg (and sin

modificar el registro destino).


SALTO: JMP: Salto a una direccin, BRA: Salto cercano a una direccin.
59

Repertorio de Instrucciones
CCR Condition Code Register

N : refleja el estado del bit ms significativo (MSB) del resultado.

Es muy utilizado en operaciones aritmticas en complemento a 2 donde el


MSB es 1 si el nmero es negativo y 0 si es positivo.

Z : este flag es 1 cuando todos los bits de un resultado son 0.


V : se pone en 1 cuando ocurre un desbordamiento en complemento a 2 como
como resultado de una operacin

60

Programacin
IF THEN ELSE (Decisin)

Get Temperaure
IF Temperature > Allowed Maximum
THEN
Turn the water valve off
ELSE
Turn the water valve on
ENDIF Temperature > Allowed Maximum

61

Programacin
IF THEN ELSE
(Decisin)
Get Temperaure
IF Temperature > Allowed Maximum
THEN
Turn the water valve off
ELSE
Turn the water valve on
ENDIF Temperature > Allowed Maximum

; IF-THEN-ELSE example
; Equates define constants need by the code
AD_PORT:
EQU
$20
; A/D Data port
MAX_ALLOWED:
EQU
!128
; Maximum Temp
VALVE_OFF:
EQU
0
; Bits for valve off
VALVE_ON:
EQU
1
; Bits for valve on
VALVE_PORT:
EQU
$24
; Port H
; Get Temperature
ldaa
AD_PORT
; IF Temperature > Allowed Maximum
cmpa
#MAX_ALLOWED
bls
ELSE_PART;
; THEN Turn the water valve off
ldaa
VALVE_OFF
staa
VALVE_PORT
bra
END_IF
; ELSE Turn the water valve on
ELSE_PART:
ldaa
VALVE_ON
staa
VALVE_PORT
END_IF:
; END IF Temperature > Allowed Maximum

62

Programacin
WHILE DO (Repeticin)

Get the temperaure from the A/D


WHILE the temperature > maximum allowed
DO
Flash light 0.5 sec on, 0.5 sec off
Get the temperature from the A/D
END_DO
END_WHILE

63

Programacin
WHILE DO
(Repeticin)

Get the temperaure from the A/D


WHILE the temperature > maximum allowed
DO
Flash light 0.5 sec on, 0.5 sec off
Get the temperature from the A/D
END_DO
END_WHILE

; WHILE - DO Example
AD_PORT:
EQU
$70
; A/D Data port
MAX_ALLOWED: EQU
!128
; Maximum Temp
LIGHT_ON:
EQU
1
LIGHT_OFF:
EQU
0
LIGHT_PORT:
EQU
$24
; Port H
;
- - ; Get the temperature from the A/D
ldaa AD_PORT
; WHILE the temperature > maximum allowed
WHILE_START:
cmpa MAX_ALLOWED
bls
END_WHILE
; DO
; Flash light 0.5 sec on, 0.5 sec off
ldaa LIGHT_ON
staa LIGHT_PORT ; Turn the light
jsr
delay
; 0.5 sec delay
ldaa LIGHT_OFF
staa LIGHT_PORT ; Turn the light off
jsr
delay
; End flashing the light
; Get the temperature from the A/D
ldaa AD_PORT
; END_DO
bra
WHILE_START
END_WHILE:
; END_WHILE the temperature > maximum allowed
; Dummy subroutine
delay:
rts

64

Programacin
DO - WHILE (Repeticin)

DO
Get data from the switches
Output the value to the LEDs
END_DO
WHILE Any switch is set

65

Programacin
DO - WHILE
(Repeticin)
DO
Get data from the switches
Output the value tothe LEDs
END_DO
WHILE Any switch is set

; DO-WHILE example
; Equates needed for this example
SW_PORT: EQU
$28
; The switches are on Port J
LEDS:
EQU
$24
; The LEDs are on Port H
;
- - ; DO
DO_BEGIN:
; Get data from the switches
ldaa
SW_PORT
; Output the data to the LEDs
staa
LEDS
; END_DO
; WHILE Any switch is set
tst
SW_PORT
bne
DO_BEGIN
; END_WHILE

66

Saltos Subrutinas

INICIALIZAR EL SP
Y RETORNAR DE
LA SUBRUTINA CON RTS!!!!

67

DSEBM
Teora Tema 4
Entrada/Salida

2008-2009

PIM y Puertos
PIM: Port Integration Module. Interfaz entre los
elementos de E/S y el microcontrolador
Puerto T. Relacionado con el TImer Module y el
PWM. 8 canales.
Port P: generador de formas de onda. 6 canales.
Puerto S. SCI. Serial Communications Interface.
Serie , asncorono.
Puerto M. CAN. Controller Area Netork. Red
entre microcontroladores. SPI. Serial Peripheral
Interface. Serie, sncrono
Puertos A y B. Puertos paralelos de propsito
general.
Puerto E. Puerto paralelo. Admite usos
especiales en funcion del modo de operacind el
microcontrolador.
Puerto AD. Conversor 10bits AD
Puerto J. Generacin de interrupciones o
estndar E/S
2
La mayora de canales pueden ser de propsito
general

Puertos

Puertos

Modelo E/S
{
{
{
{
{

Totalmente integrado
E/S paralelas y serie
E/S analgicas
Funciones de timer
Algunos pins tienen funciones de doble
propsito
TODAS las operaciones de E/S y el CONTROL se
realiza mediante registros

Puertos

Todos los puertos I/O tienen asociados dos


registros :
{
{

Direccin (DDRx)
Datos (PORTx o PTx)

Direccin
{
{

Bit en H o 1 salida
Bit en L o 0 entrada

Puertos

E/S Software

Inicializacin Configuracin de los puertos. Determinar


las lneas que sern de entrada o salida.
E/S Software

Transmisin de datos (E/S) Lectura o escritura de los


datos
Sincronizacin

Determinar si la transmisin puede


considerarse correcta.

Puertos

Sincronizacin
El software de E/S debe sincronizar la lectura y escritura de los datos con los
requerimientos de tiempo de los dispositivos de Entrada/Salida.
En general los procesadores son mucho ms rpidos que los dispositivos de
Entrada/Salida

Real-Time

Cmo sincronizar?

Polling
Handshaking

Puertos

Sincronizacin Real-Time

Utiliza un delay por software para ajustar los requerimientos de tiempo del
software y el hardware.
Ejemplo:
Envo de caracteres por un puerto a una velocidad de hasta 10 caracteres/segundo.
Considerar insignificante el tiempo usado en obtener y enviar cada carcter.
Un delay de 100 mSeg es requerido entre cada operacin de salida.
Obtencin del carcter y envo del mismo
Dos subrutinas
delay de 100 mSeg
PROBLEMA!!
Dependencia con la frecuencia del Clock de la CPU
Problemas de exactitud en el delay
Solucin Uso del sistema de Timing (prximo tema)
8

Puertos

Polling
Utiliza bits de E/S como bits de estado para los dispositivos de E/S
Ejemplo 1:
Envo de informacind de HCS12 a un dispositivo
de E/S
PJ0 bit de estado
PJ0 lo modifica el dispositivo cuando est listo para
recibir ms informacin. Para esto es necesario un
hardware adicional en el dispositivo externo.
El programa verifica constantemente el bit de
estado PJ0 y enva datos cuanto el disp. est listo
por las lneas PH[3:0].

Puertos

Polling

Ejemplo 2:
Envo de un dispositivo de E/S al HCS12
PJ1 bit de estado
PJ1 lo modifica el dispositivo cuando tiene un nuevo
dato para ser transmitido a la CPU.

10

Puertos
PORTJ:
PORTH:
DDRH:
BIT0:
BIT1:
O_BITS:
;
data1:
data2:

EQU
EQU
EQU
EQU
EQU
EQU

$28
; Port J address
$24
; Port H address
$25
; Data direction Port H
%00000001
%00000010
%00001111

DS
DS

- - 1 ; variable de salida
1 ; variable de entrada

; Initialization
; Set up PORTH[3:0] to be output and PORTH[7:4] to be
; input
bset
DDRH,O_BITS
; Port H output
;

- - -

; Output data to Port H


; Wait until the status bit, Port J, Bit-0 is 1
SPIN1:
brclr
PORTJ,BIT0,SPIN1
; Now can output the data
ldaa
data1
staa
PORTH
;

- - -

; Input data from Port H


; Wait until the status bit, Port J, Bit-1 is 1
SPIN2:
brclr
PORTJ,BIT1,SPIN2
; Now can input the data
ldaa
PORTH
staa
data2
;

- - -

11

Puertos

Polling
Ejemplo 2:
Envo entre HCS12 y un dispositivo
PJ1 bit de estado
PJ1 lo modifica el dispositivo cuando tiene un nuevo
dato para ser transmitido a la CPU.

Cmo sabe el dispositivo externo que la


CPU ya ha tomado su dato?
El bit New_Data_Ready aporta informacin desde el
dispositivo al procesador
No hay informacin en la direccin CPUDispositivo
para determinar que es seguro enviar un nuevo dato.
Soluciones:
Generar interrupcin con PJ1
Handshaking
12

Puertos

Handshaking
Hay microcontroladores que tienen lneas dedicadas al Handshaking (HC11),
el HCS12 no.

13

Puertos
Inicializacin

PORTJ:
EQU
DDRJ:
EQU
PORTH:
EQU
DDRH:
EQU
BIT0:
EQU
BIT1:
EQU
BIT2:
EQU
BIT3:
EQU
O_BITS: EQU
;
; Initialization
bset
bset
bclr
bclr

$28
;
$29
;
$24
;
$25
;
%00000001
%00000010
%00000100
%00001000
%00001111
- - -

Port
Data
Port
Data

DDRH,O_BITS
DDRJ,BIT1|BIT3
PORTJ,BIT1|BIT3
PORTH,BIT3

J address
direction Port J
H address
direction Port H

;
;
;
;

Port H output
Port J-1,3 output
Reset NEW_DATA_READY
READY_FOR_NEW_DATA

14

Puertos
; Handshaking output data to Port H
; Wait until the status bit, Port J, Bit-0 is 1
SPIN1:
;

brclr

PORTJ,BIT0,SPIN1

Now can output the data


ldaa
data1
staa
PORTH
and can strobe the handshaking bit
bset
PORTJ,BIT1
bclr
PORTJ,BIT1

BIT0:
EQU
BIT1:
EQU
BIT2:
EQU
BIT3:
EQU
O_BITS:
EQU
;
; Initialization
bset
bset
bclr
bclr

%00000001
%00000010
%00000100
%00001000
%00001111
- - DDRH,O_BITS
; Port H output
DDRJ,BIT1|BIT3; Port J-1,3 output
PORTJ,BIT1|BIT3; Reset NEW_DATA_READY
PORTJ,BIT3
; READY_FOR_NEW_DATA

- - -

; Handshaking input data from Port H


; Set READY_FOR_NEW_DATA on Port J, Bit-3
bset
PORTJ,BIT3
; Wait until the status bit, Port J, Bit-2 is 1
SPIN2:
;

brclr

PORTJ,BIT2,SPIN2

Now can input the data


ldaa
PORTH
staa
data2
and reset the READY_FOR_NEW_DATA
bclr
PORTJ,BIT3

;
data1:
data2:

DS
DS

- - 1
1

15

Puertos
Transferencia de Datos Asncrona (ejemplo: entrada)

S, puedes
Puedo?

De nada
Gracias

16

Puertos
Puerto T

Puerto T conectado a 8 LEDs


PORTT $0240
DDPRT $0242

17

Puertos
Cmo escribir un valor en el puerto?
movb
staa

variable1, PORTT
o
PORTT

18

Puertos
Configuracin y escritura en el puesto T
; export symbols
XDEF Entry
ABSENTRY Entry
application entry point
;LEDS
PORTT
DDPRT
CODE
DATA
STACK

EQU
EQU
EQU
EQU
EQU

; export 'Entry' symbol


; for absolute assembly: mark this as

$0240
$0242

$4000
$0400
$1FFF

; variable/data section
ORG DATA
temp_byte
ds.b 5
var_A:
dc.b $AA ; 1010 1010
; code section
ORG CODE
Entry:
lds #STACK

;inicializa la pila SP

bset DDPRT,#$FF;define el puerto T (leds) como puerto de salida


movb

var_A,PORTT

bucle:
nop
; no operation
bra bucle

19

Puertos
Ejemplo de escritura en el puerto T
; export symbols
XDEF Entry
ABSENTRY Entry
;LEDS
PORTT
EQU
$0240
DDPRT
EQU
$0242
CODE
DATA
STACK

EQU
EQU
EQU

$4000
$0400
$1FFF

; variable/data section
ORG DATA
temp_byte
ds.b 5
var_A:
dc.b $AA

; subrutina Retardo
retardo:
pshx
pshb
ldab #$FF
ciclo: ldx #$FFF
ciclo_1:nop
dbne x,ciclo_1
dbne b,ciclo
pulb
pulx
rts

; code section
ORG CODE
Entry:
lds #STACK
bset DDPRT,#$FF
bucle:
movb var_A,PORTT
jsr
retardo
ldaa #$00
staa PORTT
jsr
retardo
bra
bucle
20

(I)
(II)
(III)

(IV)
21

DSEBM
Teora Tema 5
Temporizadores I

2008-2009

Manejo de tiempos

Bucles
for (i=0; i<tiempo; i++)
{
NOP
}
{

Dificultad para el control exacto del tiempo

Manejo de tiempos

Clock

16 Bits

Contador
0000000000000000
0

1111111111111111
F

0000

FFFF

Por cada ciclo de reloj se incrementa en 1 el contador


3

Manejo de tiempos
Clock

$0000

Contador
0000000000000000
0

$FFFF 1111111111111111

0000000000000000
TOF

0000000000000001 Time Overflow Flag


1111111111111111
0000000000000000
0000000000000001

1
Reg. Estado Timer
TFTLG2
Time FLaG2

Clock = A ciclos/segundo
Incrementar el contador hasta FFFF tardar:
t = FFFF/A [Seg]
Ej: Clock = 8 Mhz
t = (2^16 Ciclos)/8 Mhz = 65536 / 8 106 Sg= 8,19 mSeg
4

Manejo de tiempos
Prescaler: incrementa el contador cada n ciclos
Donde n = 2,4,8,16,32,64,128

0000000000000000
0000000000000001

Ej: Prescaler = 32 (n)

t = (2^16 Ciclos)/8 Mhz/32 = 262 mSeg

1111111111111111

Manejo de tiempos
Para manejar tiempos ms exactos

comparar el contador con un registro


0000000000000000
0000000000000001
1111111111100000
F

Registro de
comparacin

Contador

FFE0
CnF

Reg. Estado Timer

Ej: Clock = 8 MHz


1/8 MHz = 125ns

TFLG1
6

Manejo de tiempos

TOF (Time Overflow Flag ) y OC (Ouput


Compare) son detectados por polling pero
puede configurarse el sistema para que
generen interrupcin

Temporizador

Sistema de tiempos del HCS12

Principales funciones:
{
{
{
{

Timer Overflow:
Input Capture:
Output Compare:
Pulse Accumulator:

Temporizador

Input Capture:
Permite la medicin de caractersticas de una
seal de entrada. El sistema de Input Capture
puede ser programado para medir la longitud de
un pulso de entrada o usado para computar las
caractersticas de una seal peridica
( duty cycle y perodo)
Trailing
edge

Rising
edge

Longitud
del pulso

On time
Perodo
Duty cycle = On Time x 100
Perodo

Temporizador

Output Compare:
Permite un control de tiempos ms preciso que el
TimerOverflow. El control lo realiza mediante la
comparacin del contador con el contenido de un
registro programable. Se puede usar para la
generacin de formas de ondas de salida.

Pulse Accumulator:
Permite contar contabilizar pulsos externos.

10

Temporizador
Componentes del TIM
(detalle)
1. 16-bit free running counter
and its associated time
scaling hardware
2. Eight input capture/output
compare channels. TIM0 four
plus TIM1 another
Habilita four.
el timer

3. The pulse accumulator


Hardware
11

Temporizador

Free Running Counter


TCNT
PACLK
PACLK/256
PACLK/65536
P Clock

TCNT(hi):TCNT(lo)
4:1
MUX

Free running
counter

prescaler

PR[2:1:0]

TOF
TOI
TCRE
Channel 7
Output Compare

CLK[1:0]

Habilita el timer
$0046

12

Temporizador

Free Running Counter


TCNT
PACLK
PACLK/256
PACLK/65536
P Clock

TCNT(hi):TCNT(lo)
4:1
MUX

prescaler

PR[2:1:0]

Free running
counter

TOF
TOI
TCRE

CLK[1:0]

Channel 7
Output Compare

13

Temporizador

Free Running Counter


TCNT
PACLK
PACLK/256
PACLK/65536
P Clock

TCNT(hi):TCNT(lo)
4:1
MUX

Free running
counter

prescaler

PR[2:1:0]

TOF
TOI
TCRE
Channel 7
Output Compare

CLK[1:0]

$004D

14

Temporizador

Free Running Counter


TCNT
PACLK
PACLK/256
PACLK/65536
P Clock

TCNT(hi):TCNT(lo)
4:1
MUX

prescaler

PR[2:1:0]

Free running
counter

TOF Time Overflow


TOI Flag
TCRE

CLK[1:0]

Channel 7
Output Compare

15

Temporizador

Ejemplo de uso del Timer OverFlow Pseudocdigo


; export symbols
XDEF Entry
ABSENTRY Entry

Entry:

ROMStart
RAMStart:

EQU
equ

$00004000
$00000400

DDRT:
PTT:

equ
equ

$00000242
$00000240

mTIM0_TSCR2_PR0:
mTIM0_TSCR2_PR1:
mTIM0_TSCR2_PR2:

equ
equ
equ

%00000001
%00000010
%00000100

TIM0_TSCR1:
TIM0_TSCR2:
TIM0_TFLG2:

equ
equ
equ

$00000046
$0000004D
$0000004F

mTIM0_TFLG2_TOF:
mTIM1_TSCR1_TEN:

equ
equ

%10000000
%10000000

; variable/data section
ORG RAMStart
; Insert here your data definition.
Datos
dc.b $1,$2,$4,$8,$10,$20,$40,$80
; code section
ORG

ROMStart

;Inicializacin de los 8 canales del


puerto T como salida
bset DDRT,#$FF
;Inicializacin del TimerOverFlow
;Configurarmos el prescale a 128
bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2 |
mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)

;Nos aseguramos que el bit TOF est a 0


bset TIM0_TFLG2,#mTIM0_TFLG2_TOF
;Activamos el contador
bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
;Fin inicializacin del TimerOverFlow
ldab #0
ldx #Datos
; Hasta que el bit TOF del registro TFLG2 no
;sea 1 nos quedamos en la siguiente instruccin
;indefinidamente
Bucle_1:
brclr TIM0_TFLG2,#mTIM0_TFLG2_TOF, Bucle_1
; Una vez que el TOF se pone a 1 ( ha habido
;desbordamiento lo ponemos a 0 para que nos podamos dar
;cuenta de cuando se vuelva a desbordar el contador
bset TIM0_TFLG2,#mTIM0_TFLG2_TOF
; a partir de aqu ya realizamos las acciones que se
requieran
movb b,x,PTT
incb
cmpb #8
bne Bucle_1
ldab #0
;Ya hemos realizado las acciones y volvemos a
esperar que se desborde el contador
16
bra Bucle_1

Temporizador
Output Compare

Permite manejar tiempos en


forma mas exacta que con el
timer overflow.
Permite manejar tiempos en
forma mas exacta que con el
timer overflow.

TCNT es incrementado en funcin del


prescaler PR2:PR1:PR0
TCn (Timer Input Capture/Output
compare register) es cargado por software
TCn comparado con TCNT y si son iguales
CnF (Channel Flag) es puesto es 1

TSCR2
TSCR2

CnF (Registro TFLG1)es aplicada junto a


FOCn (timer compare Force bit-n) causa
el mismo efecto que una comparacin.

TIE

En OMn y OLn controlan las acciones del


puerto T cuando se produjo un output
compare. Registro TCTL1
El registro TIOS determina si el canal
(Puerto T) es utilizado como Output
Compare (1) o como Input Capture o puerto
de uso general (0)

TO 7 MORE
TIMER
CHANNELS

TCTL1

El CnF puede ser utilizado por polling o


interrupcin. Registro TFLG1
17

Temporizador
Output Compare
TCNT
PACLK
PACLK/256
PACLK/65536
P Clock

TCNT(hi):TCNT(lo)
4:1
MUX

Free running
counter

prescaler

PR[2:1:0]

TOF
TOI
TCRE
Channel 7
Output Compare

CLK[1:0]

$004D

18

Temporizador ROMStart
RAMStart:

XDEF Entry
ABSENTRY Entry
EQU $4000
equ
$00000400

DDRT:
PTT:

equ
equ

$00000242
$00000240

mTIM0_TSCR2_PR0:
mTIM0_TSCR2_PR1:
mTIM0_TSCR2_PR2:

equ
equ
equ

%00000001
%00000010
%00000100

TIM0_TIOS:
mTIM0_TIOS_IOS7:

equ
equ

$00000040
%10000000

TIM0_TSCR1:
TIM0_TSCR2:
TIM0_TFLG2:

equ
equ
equ

$00000046
$0000004D
$0000004F

mTIM1_TSCR1_TEN:

equ

%10000000

TIM0_TC7:
mTIM1_TFLG1_C7F:

equ
equ

$0000005E
%10000000

Tiempo

EQU
$5555
ORG RAMStart
Datos
dc.b $1,$2,$4,$8,$10,$20,$40,$80
ORG
ROMStart
Entry:
;Inicializacin de los 8 canales
del puerto T como salida
bset DDRT,#$FF
;Inicializacin del TimerOverFlow
;Configurarmos el prescale a 128
bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2
| mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)

Output Compare Time Delays

ldab #0
ldx #Datos
;Activamos el canal 7 como output compare
bset TIM0_TIOS, #mTIM0_TIOS_IOS7
;Cargamos en el registro TC7 el valor que queremos
;comparar con el contador libre
movw #Tiempo, TIM0_TC7
;Activamos el contador libre
bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
; Fin de la inicializacin del Output Compare
; Mientras el bit C7f sea 0 ( el valor del contador
; libre TCNT y el valor del registro TIM0_TC7 son diferentes )
; nos quedamos en la siguiente instruccin indefinidamente
Bucle_1:
brclr TIM0_TFLG1,# mTIM1_TFLG1_C7F, Bucle_1
; Una vez que se ha obtenido una comparacin
;verdadera ( el valor del contador libre TCNT y el valor del
;registro TIM0_TC7 son iguales ) el bit C7F ( dentro del
;registro TFLG1 ) se pone a 1. Ya no salta a la etiqueta
;Bucle_1 y a partir de aqu la ejecucin del programa prosigue
; Forzamos a que el bit C7F sea 0. As nos podremos
dar cuenta del prximo output compare ( comparacin correcta
entre el TCNT y el TIM0_TC7 en nuestro ejemplo)
bset TIM0_TFLG1,#mTIM1_TFLG1_C7F
ldd #Tiempo
addd TIM0_TC7
std TIM0_TC7
movb b,x,PTT
incb
cmpb #8
bne Bucle_1
ldab #0
bra Bucle_1

19

Temporizador
Output Compare Bit Operation
El CnF puede poner en 1 o 0
automticamente un bit del puerto T

TSCR2
TSCR2

TIE

$0048
TO 7 MORE
TIMER
CHANNELS

TCTL1

20

Temporizador
Ejemplo: Output Compare Bit Operation (canal 7)
ROMStart
EQU $00004000
RAMStart:
equ $00000400
mTIM0_TCTL1_OM7:
equ %10000000
mTIM0_TCTL1_OL7:
equ %01000000
Tiempo
EQU $5555
ORG
ROMStart
Entry:
bset DDRT,#$FF
bset TIM0_TSCR2,#(mTIM0_TSCR2_PR2 | mTIM0_TSCR2_PR1 | mTIM0_TSCR2_PR0)
bset TIM0_TSCR2,#mTIM0_TSCR2_TCRE ; Reset
bset TIM0_TIOS, #mTIM0_TIOS_IOS7 ; canal 7 como Output Capture
movw #Tiempo, TIM0_TC7
bclr TIM0_TCTL1,#mTIM0_TCTL1_OM7
bset TIM0_TCTL1,#mTIM0_TCTL1_OL7
bset TIM0_TSCR1,#mTIM1_TSCR1_TEN
Bucle_1:
brclr TIM0_TFLG1,,# mTIM1_TFLG1_C7F, Bucle_1
bset TIM0_TFLG1,#mTIM1_TFLG1_C7F
bra Bucle_1

21

DSEBM
Teora Tema 5
Temporizadores II

2008-2009

Temporizador
Canal 7 Output Compare para controlar hasta 8 salidas

El canal 7 puede controlar hasta


8 canales de salida (Canal 0-7)
Los registros OC7M y OC7D son
utilizados en forma conjunta para
definir la accin que realizarn los
pins del Puerto T (0-3)
OC7M mscara, los bits de este
registro que estn en 1 tomarn el
valor correspondiente que se
encuentra en el registro OC7D
cuando el TCNT=TC7

TSCR2
TSCR2

TIE

TO 7 MORE
TIMER
CHANNELS

TCTL1

Temporizador

Temporizador

Input Capture:
Permite la medicin de caractersticas de una
seal de entrada. El sistema de Input Capture
puede ser programado para medir la longitud de
un pulso de entrada o usado para computar las
caractersticas de una seal peridica ( perodo,
duty cycle y frecuencia)
Trailing
edge

Rising
edge

Longitud
del pulso

On time
Perodo
Duty cycle = On Time x 100
Perodo

Temporizador

Input Capture

Temporizador

Input Capture

TCTL3

Temporizador

Pulse accumulator

Puede operara de dos formas:

Event counter mode


(usa flancos)
subida-bajada

Gated time accumulation mode


(usa niveles) alto-bajo

Temporizador

Pulse accumulator

PAFLG

El sistema de pulse accumulator utiliza 3 registros:


Pulse Accumulator Control Register (PACTL) $0060
Pulse Accumulator Flag Register (PAFLG) - $0061
Pulse Accumulator Counter Register (PACNT) - $0062:$0063
8

Temporizador

Pulse accumulator

PAEN Pulse Accumulator System Enable


0 disabled (default)
1 enabled
PAMOD Pulse Accumulator Mode Select
0 Event counter mode (default)
1 Gated time accumlation mode
PEDGE Pulse Accumulator Edge Control
Si PAMOD=0(event counter mode)
0 flanco de bajada en PT7 incrementa el contador
(defecto)
1 flanco de subida
Si PAMOD=1(gated time accumulation mode)
0 PT7 en nivel alto habilita al reloj del bus/64 a
incrementar el contador
1 dem pero con PT7 en nivel bajo

$0060

PAOVI Pulse Accumulator Overflow


Interrupt Enable
0 deshabilitado (defecto)
1 habilitado
PAI Pulse Accumulator Input Interrupt
Enable
0 deshabilitado (defecto)
1 habilitado

Temporizador

Pulse accumulator
$0061

PAOVF Pulse Accumulator Overflow Flag


El bit se pone a 1 al desbordarse el contador. Se pone a 0 escribiendo sobre el un 1
PAIF Pulse Accumulator Input Edge Flag
Se pone a 1 cuando se detecta un PEDGE (transicin)

10

Temporizador

Pulse accumulator

$0062

11

DSEBM
Teora Tema 6
Interrupciones I

2008-2009

Interrupciones
CONCEPTOS GENERALES

Qu es una interrupcin?
{

Es un evento que requiere la interrupcin de la


ejecucin normal de un programa y que la CPU
ejecute una rutina relacionada con el evento.

Una interrupcin puede ser generada:


{

Externamente:

Cuando un circuito externo genera una seal de


interrupcin en la CPU

Internamente :

Por medio de circuitos internos del CHIP (Timers,


interfaces I/O, ..) o errores de Software (Divisin por
cero, overflow, illegal opcodes)
2

Interrupciones

Relacin de pasos
1. El procesador est ejecutando programas la mayor cantidad de tiempo.
Solamente una interrupcin detiene la ejecucin de un programa brevemente y
realiza una accin.
1. La mayora de los procesadores finalizarn la instruccin que est ejecutando y
guardar la posicin de memoria de la siguiente para poder retomar la ejecucin
mas tarde.
1. Identificacin del origen de la interrupcin antes de tomar la accin apropiada
(hardware).
1. De acuerdo con la fuente de interrupcin se tomar la accin adecuada.
1. Despus de realizar la accin determinada por la fuente de interrupcin, el
procesador contina con la tarea que estaba realizando antes.

Interrupciones

Por qu utilizamos interrupciones?


{
{

Coordinar las actividades de I/O


Salir de una aplicacin cuando sucede un error de
software
Recordar a la CPU de realizar tareas rutinarias:

Tener presente la hora

Adquisicin peridica de datos

Conmutacin de tareas en un sistema operativo multitarea

Interrupciones

Tipos de Interrupciones:
{

Enmascarables

Interrupciones que pueden ser ignoradas por la CPU.

No-Enmascarables

No pueden ser ignoradas por la CPU y tiene que tomar


accin inmediata.

Cuando una interrupcin enmascarable est habilitada,


habilitada la CPU
responder por ella, en caso contrario, ser ignorada.
Una interrupcin esta pendiente cuando est habilitada pero an no es
atendida.
Todas la interrupciones enmascarables pueden ser deshabilitadas en
forma global o individualmente.
individualmente
5

Interrupciones

Prioridad
{

Cuando varias fuentes de interrupcin necesitan


la atencin de la CPU simultneamente
mltiples interrupciones pendientes
Solucin: priorizar las interrupciones

Interrupciones

Servicio de Interrupcin

Pasos para la atencin de una peticin de interrupcin:

Guardar el contador de programa (PCPila)

Guardar el estado de la CPU (CCR, Reg. D X Y Pila)

Identificar la fuente de interrupcin

Resolver la direccin de inicio de la rutina de servicio de


interrupcin adecuada

Ejecutar la rutina de servicio de interrupcin

Restaurar el estado de la CPU (almacenado en la pila)

Restaurar el contador de programa (almacenado en la


pila)

Reanudar el programa interrumpido


7

Interrupciones

Vector de Interrupcin
{

Definicin: direccin donde comienza la rutina


de servicio de interrupcin
Los Vectores de Interrupcin son almacenados
en una Tabla de Vectores de Interrupcin

Formas de determinar el vector:


1. Predeterminada (Intel 8051)
2. Traer el vector de una posicin de memoria predefinida (HCS12)
3. Ejecutar un ciclo de reconocimiento para obtener el nmero del
vector para localizar el vector de interrupcin (motorola 680000,
Intelx86)
8

Interrupciones

Overhead de las interrupciones

La atencin de las interrupciones provoca una sobrecarga:


1. Guardar el estado de la CPU y obtener el vector de interrupcin 9 ciclos
2. Ejecucin de la instruccin RTI (restaura los registros) 9 a 11 ciclos
3. Ejecucin del rutina de interrupcin depende la cantidad de instrucciones
Cantidad de ciclos 17 a 20 + Rutina Interrupcin
Clock de 24Mhz
Tiempo mnimo 1 Seg

Interrupciones
DISPOSITIVO LENTO

Tiempo de CPU:

10

Interrupciones
DISPOSITIVO RPIDO

11

Interrupciones
HCS12
Modelo de programacin
CCR

No-Enmascarables
INTERRUPCIONES
Enmascarables
12

Interrupciones

No-Enmascarables
No pueden ser deshabilitadas por el usuario.
Estn controladas por el bit X del CCR.
Interrupciones principales No-Enmascarables:
Reset del sistema
Nonmaskable interrupt request (XIRQ_L)
Unimplemented instruction trap
Sofware interrupt instruction (SWI)

13

Interrupciones

Enmascarables
1. Pueden ser habilitadas o deshabilitadas por el usuario.
2. El sistema de interrupciones enmascarable se habilita poniendo
el bit I del CCR en 0 (CLI) y se lo deshabilita ponindolo en 1
(SEI).
3. Las interrupciones enmascarables deben ser habilitadas
globalmente con el comando CLI y localmente con el bit de
habilitacin asociado con la interrupcin adecuada.

14

Interrupciones

Interrupciones enmascarables:
Maskable interrupt request (IRQ_L)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up

15

Interrupciones - Timer

Timer Overflow Interrupts

TSCR2
TSCR2

16

Interrupciones - Timer

Timer Overflow Interrupts

TSCR2
TSCR2

CCR

17

Interrupciones - Timer

Timer Overflow Interrupts

TSCR2
TSCR2

18

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

19

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

20

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

21

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

22

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

23

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

24

Ejemplo:Timer Overflow Interrupts


TSCR2
TSCR2

25

Ejemplo:Timer Overflow Interrupts

26

Ejemplo:Timer Overflow Interrupts

27

Interrupciones - Timer

Output Compare Interrupts

28

Interrupciones - Timer

Output Compare Interrupts

29

Interrupciones - Timer

Output Compare Interrupts

30

Ejemplo:Output Compare Interrupts

31

Ejemplo:Output Compare Interrupts

32

Ejemplo:Output Compare Interrupts

33

Ejemplo:Output Compare Interrupts

34

Ejemplo:Output Compare Interrupts

35

Ejemplo:Output Compare Interrupts

36

Timer
TSCR2

TSCR2

TIE

TO 3 MORE
TIMER
CHANNELS

TCTL1

37

Pulse accumulator

38

39

40

41

42

DSEBM
Teora Tema 6
Interrupciones II

2008-2009

Interrupciones

Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up

Interrupciones

Input Capture

Habilitacin int. global


Habilitacin int. local

Interrupciones

Pulse accumulator - input edge

El sistema de pulse accumulator utiliza 3 registros:


Pulse Accumulator Control Register (PACTL) $0060
Pulse Accumulator Flag Register (PAFLG) - $0061
Pulse Accumulator Counter Register (PACNT) - $0062:$0063
4

Interrupciones

Pulse accumulator - Overflow

El sistema de pulse accumulator utiliza 3 registros:


Pulse Accumulator Control Register (PACTL) $0060
Pulse Accumulator Flag Register (PAFLG) - $0061
Pulse Accumulator Counter Register (PACNT) - $0062:$0063
5

Interrupciones

Pulse accumulator

Interrupciones

Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up

Interrupciones

Interrupciones - Puerto PAD

Interrupciones

Interrupciones - Puerto PAD

PERADL0:Pull up Pull Down Enable Port AD


ATDDIEN: Digital Input Enable Register AD
DDRADL0: Direction Data Register AD
PIFAD - Port AD Interrupt Flag Register

Habilitacin local

Interrupciones

Interrupciones - Puerto PAD

10

Interrupciones

Interrupciones - Puerto PAD

Habilitacin global

11

Interrupciones

Interrupciones - Puerto PAD

12

Interrupciones

Interrupciones - Puerto PAD

13

Interrupciones

Interrupciones - Puerto PAD

14

Interrupciones

Interrupciones - Puerto PAD

15

Interrupciones

Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up

16

Interrupciones

Key Wakeup

17

Interrupciones

Key Wakeup

andcc CCR(M)->CCR

18

Interrupciones

Key Wakeup

19

Interrupciones

Interrupciones enmascarables:
Maskable interrupt request (IRQ*)
Real-time interrupt (RTI)
Timer channel
Timer overflow
Input Capture
Pulse accumulator overflow
Pulse accumulator input edge
SPI and SCI
Analog-to-digital system
Key wake up

20

Interrupciones

Real-Time Interrupt
Permite generar interrupciones con diferentes
perodos de tiempo
Se acostumbra a usar para recordar al
microcontrolador que realice alguna tarea
Ejemplo: Test del estado de la batera
Configuracin.Registro de control

RTR6 RTR5

Habilitacin local

RTIE

RTICTL
OSCCLK

CRGINT
CRGFLG

RTR0

Real Time Interrupt Flag

RTIF
CCR

REAL TIME
INTERRUPT
REQUEST

Habilitacin global

21

Interrupciones

Real-Time Interrupt

CRGINT
RTIE
RTICTL
OSCCLK

RTR6 RTR5

RTR0

CRGFLG
RTIF
CCR
I

REAL TIME
INTERRUPT
REQUEST

22

Interrupciones
Preescale

Reloj 16Mhz(2 x fec.cpu)


/ 1024
RTICTL
divide entre 1,2,4 .. 64

RTR6 RTR5 RTR4


RTICTL
divide entre 1,2,3,..16

RTR3 RTR2 RTR1 RTR0


CRGFLG
RTIF

23

Interrupciones

Real-Time Interrupt

CRGINT
RTIE
RTICTL
OSCCLK

RTR6 RTR5

RTR0

CRGFLG
RTIF
CCR
I

REAL TIME
INTERRUPT
REQUEST

24

Interrupciones

Real-Time Interrupt

CRGINT
RTIE
RTICTL
OSCCLK

RTR6 RTR5

RTR0

CRGFLG
RTIF
CCR
I

REAL TIME
INTERRUPT
REQUEST

25

Interrupciones

Prioridad
Utilizada cuando se produce ms de un evento que genera interrupcin
El programador mediante el registro HPRIO (Highest
PRIOrity interrupt) puede determinar que fuente de
interrupcin es la ms prioritaria, el resto se mantiene igual
E registro HPRIO puede ser escrito cuando el bit I del CCR es 1
(interrupciones enmascarables deshabilitadas)

26

Interrupciones

Prioridad

27

Interrupciones

Prioridad

28

Interrupciones

Prioridad - ejemplo

Canal 7 con mxima prioridad

SEI
LDD #Vtim0ch7 ; vector canal 7
STAD
HPRIO
CLI

29

Interrupciones

Interrupcin, acciones del programador y de la CPU


Inicializar la tabla de vectores de interrupcin con la direccin de la rutina
de interrupcin PROGRAMADOR

Inicializar el Stack Pointer PROGRAMADOR

Habilitar las interrupciones enmascarables PROGRAMADOR

Completar la instruccin actual CPU

Calcular la direccin de retorno CPU

Guardar los registros de la CPU en la pila CPU

Poner en 1 el bit I del registro de estado (CCR) CPU

Buscar el vector de interrupcin para la interrupcin en curso de mxima


prioridad CPU

Pasar el control a la rutina de tratamiento de interrupcin CPU

Borrar el flag asociado a la produccin de la interrupcin PROGRAMADOR

Restaurar los registros de la CPU desde la pila CPU

Poner en 0 el bit I del registro de estado (CCR) CPU

Transferir el control de ejecucin al programa principal CPU

30

Interrupciones

XIRQ*

Interrupcin externa no-enmascarable


Las interrupciones provenientes de este pin son
enmascaradas y el programador luego de inicializar la pila,
debe habilitarla

Durante el proceso de reset, I=X=1 enmascaradas


ANDCC #%1 0 1 1 1 1 1 1 se habilita
Una vez que X es puesto en 0, no puede ser enmascarado
31
nuevamente (X=1)

Interrupciones

XIRQ*

Proceso en una interrupcin no-enmascarable(parte)



Registros de la CPU Pila
X=I=1
Ejecucin de la rutina de interrupcin
Pila Registros de la CPU

32

33

You might also like