Sunteți pe pagina 1din 90

INTRODUCCIÓN A LOS MICROCONTROLADORES Y LABORATORIO

Bolilla I INTRODUCCIÓN Sistemas de Numeración Características. Nomenclatura de cada sistema de numeración. Conversión entre sistemas. Binario a Decimal. Binario a Octal. Binario a Hexadecimal. Octal a Binario. Octal a Decimal. Octal a Hexadecimal. a Binario. Hexadecimal a Octal. Hexadecimal a Decimal. Decimal a Binario. Decimal a Octal. Decimal a Hexadecimal. Operaciones Lógico-Aritméticas. Operaciones Aritméticas Básicas. Suma. Resta. Multiplicación. División. Método de restas y sumas sucesivas. Operaciones Lógicas Básicas. AND. OR. EXOR. Sistemas de Numeración limitados en cifras. Binario limitado en 8, decimal y hexadecimal limitados en 2. Suma en sistemas limitados en cifras. Resta en sistemas limitados en cifras. Complemento al MVR. Ca2. Ca1. Comparación. Representación o Codificación. Números Naturales. Números Enteros. Código ASCII. Códigos BCD. Código Grey. Código Johnson. Codificación BCD. Suma. Resta. Números Enteros. Suma de números enteros.

Definiciones y términos Nociones de Memorias Características Clasificación. Por uso de la memoria Por forma de acceso al registro deseado Por la forma de almacenamiento.

Bolilla II MICROCONTROLADORES Descripción y Características Bloques Principales Características Generales. Funcionamiento básico Clasificación

PIC16F628A

Características y patillaje (Hoja de Datos) Características principales. Características Especiales. Patillaje. Diagrama interno. Tipos de fuente Clases de oscilador. Circuitos de Entrada o Salida. Circuitos de Entrada. Circuitos de Salida. Memoria interna. Mapa de Memoria Memoria de Programa Memoria de Datos. Memoria EEPROM Registros Internos. SFR del núcleo. SFR de periféricos Set de instrucciones del PIC16F628A Nomenclatura. Instrucciones orientadas a registros. Instrucciones orientadas a bit.

3

Operación con literales. Instrucciones de Control. SALTOS. Formas de cargarse el PC

Bolilla III

PROGRAMACIÓN

Diagrama de los Módulo de prueba Banco de Led y de Swicht. Matriz de Led y de Swicht. Probador.

Herramientas a utilizar

Entorno de desarrollo MPLAB-IDE Conceptos y elementos básicos de programación. Diagrama de flujo Símbolos Gráficos. Diseño de Diagrama de Flujo. Diagrama Alineado Diagrama Sabana o Extendido Variable, Etiqueta, Puntero y Vector. Formas de Direccionar posiciones de memoria, registros o datos. Programa Fuente para el PIC16F628A Programación de Bajo Nivel. Formas de Direccionamiento del PIC16F628A. Sintaxis del Compilador. Comandos para el Compilador. Bits de Configuración. Estructura del programa fuente. Asociación Diagrama de Flujo – Programa Fuente Movimientos y Asignaciones. Movimientos y asignaciones. Direccionamiento Indirecto por Registro. Operaciones. Saltos y Decisiones. Decisiones y manejo bit a bit. Lazos, bucle, loop o iteraciones. Matrices y series. Subrutinas. Direccionamiento Indexado. Contadores y temporizadores

Bolilla IV

USO BÁSICO DEL PIC

Periféricos. Puertos I/O. Detección de Pulso. TIMER0. Estructura. Funcionamiento y programación. Interrupciones. Funcionamiento y Configuración. Practicas con TMR0 como temporizado y contador, RB0 y RB4-RB7 Modo Bajo Consumo Control de mecanismos Motor paso a paso de 4 o 3 hilos. Decodificador de posición (Shift decoder o encoder) Control de Elementos Mediante Multiplexión en el Tiempo. Matriz de Elementos. Multiplexión de Matrices. Manejo de Matrices por Multiplexión en el Tiempo Matriz de Salida. Display de Segmentos. Matriz de Entrada. Matriz de Swicht. Teclado Matricial.

Bolilla V

Otros Periféricos

WachtDog Timer (Vigilante). Bloques Principales. Uso y Operación. WDT y el modo SLEEP. Banderas TO, PD, POR y BOR. SLEEP y las interrupciones.

4

Memoria EEPROM. Descripción. Funcionamiento. Lectura-escritura desde software Lectura-escritura desde el quemador.

Bolilla VI COMUNICACIONES Introducción a comunicación de microprocesadores. Tipos de comunicación Comunicación Paralela. Características Unidireccional. Practica de envío y recepción Unidireccional con aviso de dato valido (STB y ACK). Practica de envió y recepción Bi-direccional con Handshaking (Entrega en mano propia). Practica de envió y recepción Comunicación Serie. Características Elementos (paridad, stop y arranque) Métodos RZ, NRZ, Ancho de pulso Comunicación maestro-esclavo y sin jerarquía Protocolos I2C, RS232 y RS485 Memorias seriales.

Bolilla VII CONVERSION A/D y D/A Principios. Métodos. Practicas

5

BOLILLA I: INTRODUCCIÓN

Sistemas de Numeración

Se llama Sistema Numérico al conjunto ordenado de símbolos y a las reglas con que se combinan para representar las cantidades numericas.Cada sistema de numeración se identifica según la cantidad de simbolos diferentes que utiliza para su representación. Este valorse llama base o raiz. Se usan en este texto varios sistemas de numeración distintos. Los sistemas digitales usan el sistema binario, pero los operadores, programadores y usuarios están acostumbrados a usar el sistema decimal. Por lo tanto se buscan sistemas numéricos que sirvan de nexo entre el binario y el decimal.

Características

La cantidad de símbolos diferentes en cada sistema define la base del mismo. Sistema decimal: base 10 (10 símbolos) : 0,1,2,3,4,5,6,7,8,9 Sistema binario: base 2 (2 símbolos): 0,1 Sistema octal: base 8 (8 símbolos) : 0,1,2,3,4,5,6,7,8 Sistema hexadecimal: base 16 (16 símbolos) : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Todos son ponderados, o sea que para cada símbolo su valor depende de su posición relativa dentro del número. Por ejemplo 5271 en sistema decimal: el uno de más a la derecha tiene orden cero, y el 5 de más a la izquierda tiene orden 3. En este caso el símbolo de orden 0 representa una unidad, el símbolo de orden 1 representa 70 unidades, el símbolo de orden 2 representa 200 unidades y el símbolo de orden 3 representa 5000 unidades. Los sistemas con procesador usan el sistema de numeración binario, pero se utilizan representaciones y conversiones a otros sistemas de numeración. Para indicar en que sistema de numeración se expresa cada número, se le coloca un subíndice al final dependiendo del sistema al que pertenece: B binario, O octal, D decimal y H hexadecimal. La representación más común es con el sistema hexadecimal, pues se necesitan menos símbolos para representar cantidades y además de muy fácil conversión binario-hexadecimal y viceversa.

Nomenclatura de cada sistema de numeración

En los sistemas de numeración ponderados cada cifra, según su posición relativa, tiene un orden, peso significativo o ponderación dentro del número. En el sistema decimal se denomina:

Unidades

-

orden 0

Decenas

-

orden 1

Centenas

-

orden 2

Millares

-

orden 3

Decimos

-

orden -1

Centésimos

-

orden -2

Milésimos

-

orden -3

En el sistema hexadecimal, octal y binario no tienen una denominación particular solo se le menciona el numero de orden de la posición de cada cifra. En el sistema binario cada cifra se llama bit o binit y tiene su nombre según el orden

Bit 0

-

orden 0

Bit 1

-

orden 1

Bit 2

-

orden 2

Bit 3

-

orden 3

Bit 4

-

orden 4

Bit 5

-

orden 5

Bit 6

-

orden 6

Bit 7

-

orden 7

Bit 8

-

orden 8

- Un grupo de 4 bit ordenados se llama nible y de 8 bit se le llama byte. En un byte se le denomina nible alto al conjunto formado por Bit 4, Bit 5, Bit 6 y Bit 7 , y nible bajo al formado por Bit 0, Bit 1, Bit 2 y Bit 3. Al bit de menor orden se le llama LSB o bit menos significativo. Al bit de mayor orden se le llama MSB o bit más significativo

Bit 9

orden 9

6

Conversiones entre sistemas

Equivalencias entre los sistemas de numeración

Decim

             

al

Binario

Hexa

Octal

Decimal

Binario

Hexa

Octal

00

0000

0

 

00 08

1000

 

8 10

01

0001

1

 

01 09

1001

 

9 11

02

0010

2

 

02 10

1010

 

A 12

03

0011

3

 

03 11

1011

 

B 13

04

0100

4

 

04 12

1100

 

C 14

05

0101

5

 

05 13

1101

 

D 15

06

0110

6

 

06 14

1110

 

E 16

07

0111

7

 

07 15

1111

 

F 17

Números Binarios y su equivalencia decimal 11010,1101 B = 1 x 2 4 +1 x2 3 +0 x2 2 +1 x2 1 +0x2 0 +1x2 -1 +1x2 -2 +0x2 -3 +1x2 -4 11010,1101 B = 26,8125 D Este método es llamado de cambio de base. Multiplicamos cada cifra del número del sistema origen (convertido a su equivalente en el sistema destino), por la base del sistema origen (expresada en el sistema destino) elevada a la potencia de su orden.

en el sistema destino) elevada a la potencia de su orden. Números Binarios y su equivalente

Números Binarios y su equivalente Octal Mediante el cambio de base:

110010,1101 B ≈ 1x2 5 +1x2 4 +0x2 3 +0x2 2 +1x2 1 +0x2 0 +1x2 -1 +1x2 -2 +0x2 -3 +1x2 -4 110010,1101 B = 62,64 O Un método más practico es:

110 010 , 110 101 B = 62,65 O Se toman grupos de 3 símbolos binarios a partir de la coma hacia la derecha y la izquierda, y se sustituye por el símbolo octal correspondiente. Números Binarios y su equivalencia Hexadecimal Mediante el cambio de base es 110010,1101 B = 1x2 5 +1x2 4 +0x23 +0x2 2 +1x2 1 +0x2 0 +1x2 -1 +1x2 -2 +0x2 -3 +1x2 -4 110010,1101 B = 32,D H Un método práctico parecido al sistema octal es:

1101 1011 , 0110 1010 B = DB,6A H Se toman grupos de cuatro símbolos binarios a partir de la coma hacia la derecha y la izquierda, y se sustituye por el símbolo hexadecimal correspondiente.

Número Octal y su equivalencia Binaria 365,72 O = 011x1000 10 +110x1000 01 +101x1000 00 +111x1000 -01 +010x1000 -10 365,72 O = 11110101,111011 B Un método práctico para esta conversión es:

365,724 O = 011 110 101 , 111 010 100 B Se sustituye cada símbolo octal por los 3 símbolos binarios equivalentes. Número Octal y su equivalencia Decimal 365,724 O = 3x8 2 +6x8 1 +5x8 0 +7x8 -1 +2x8 -2 +4x8 -3 = 245,9140625 D Numero Octal y su equivalencia Hexadecimal 1257 O = 1x8 3 +2x8 2 +5x8 1 +7x8 0 = 2AF H Numero Hexadecimal y su equivalencia Binaria

7

F5,7C H = 1111x10000 01 +0101x10000 00 + 0111x10000 -01 +1100x10000 -10 F5,7C H = 11110101,011111 B Un método practico es el siguiente:

D9,E6 H = 1101 1001 , 1110 0110 B Se sustituye cada símbolo hexadecimal por los 4 símbolos binarios equivalentes Números Hexadecimales y su equivalencia Octal F36 H = 17x20 2 +3x20 1 +6x20 0 = 7466 O Números Hexadecimales y su equivalencia Decimal 3AB,E5 H = 3x16 2 +10x16 1 +11x16 0 +14x16 -1 +5x16 -2 = 939,894531 D

Conversión decimal-hexadecimal

286,43 D = 2xA 2 +8xA 1 +6xA 0 +4xA -1 +3xA -2 286,43 D = 11E,6E14 H Un método más práctico es:

La parte entera

 

286

286

/ 16 =

17 y resto 14

>>

E

Símbolo de menor ponderación

17

/ 16 =

1 y resto 1

>>

1

1 / 16 =

0 y resto 1

>>

1

Símbolo de mayor ponderación

286 D

=

1

1 E H

La parte fraccionaria

0,43

0,43 x 16 =

6

+ 0,88

>>

6

Símbolo de mayor ponderación

0,88 x 16 =

14

+ 0,08

>>

E

0,08 x 16 =

1

+ 0,28

>>

1

0,28 x 16 =

4

+ 0,48

>>

4

Símbolo de menor ponderación

0,43 D Conversión decimal-octal

=

0, 6 E 1 4 H

519,283 D = 5x12 2 +1x12 1 +11x12 0 +2x12 -1 +10x12 -2 +3x12 -3 519,283 D = 1007,2204 O Un método más práctico es:

La parte entera

 

519

519

/ 8 =

64 y resto 7

>>

7

Símbolo de menor peso significativo

64

/ 8 =

8

y resto 0

>>

0

8

/ 8 =

1

y resto 0

>>

0

1

/ 8 =

0

y resto 1

>>

1

Símbolo de mayor peso significativo

 

519 D

= 1 0 0 7 O

La parte fraccionaria

0,283

 

0,283 x 8 =

2

+ 0,264 >>

2

Símbolo de mayor peso significativo

0,264

x

8

=

2

+

0,112 >>

2

0,112

x

8

=

0

+

0,896 >>

0

0,896

x

8 =

7

+ 0,168 >> 0,253 D

Símbolo de menor peso significativo = 0, 2 2 0 4 O

4

Conversión decimal-binario

69,687 D = 110x1010 01 +1001x1010 00 +110x1010 -01 +1000x1010 -10 +111x1010 -11 69,687 D = 100010,1011 B Un método más práctico es:

Parte entera

69

69

/ 2 =

34 y resto 1

>>

1

Símbolo de orden 0

34

/ 2 =

17 y resto 0

>>

0

17

/ 2 =

8 y resto 1

>>

1

8

/ 2 =

4 y resto 0

>>

0

4 / 2

=

2 y resto 0

>>

0

2 / 2 =

1 y resto 0

>>

0

1 / 2 =

0 y resto 1

>>

1

Símbolo de orden 6

69 D

=

1 0 0 0 1 0 1 B

 

Parte fraccionaria

0.6875

0,6875 x 2 =

1 + 0,375

>>

1

Símbolo de orden -1

0,375 x 2 =

0 + 0,75

>>

0

0,75 x 2 =

1 + 0,5

>>

1

0,5 x 2 =

1 + 0,0

>>

1

Símbolo de orden -4

0,6875 D = 0, 1 0 1 1 B

8

Operaciones Lógico-Aritméticas

Operaciones Aritméticas Básicas

Suma

Decimal

32 + 84 = 116

 

Hexadecimal

FB + A1 = 19C

Binario

0110 +

1100 = 10010

 

0

+ 0 = 0

1

+ 0 = 1

0

+ 1 = 1

1

+ 1 = 0 y hay Acarreo o Carry

Resta

Decimal

54 – 32 = 22

 

Hexadecimal

835 – 647 = 188 AC – 7B = 31

Binario

D9E – AF4 = 2AA 10011 – 01100 = 00111

 

0

- 0 = 0

1

- 1 = 0

1

- 0 = 1

0

- 1 = 1 y pido 1 o

Borrow

Multiplicación

Decimal

25 x 7 = 175

La multiplicación se puede descomponer en sucesivas sumas del multiplicando. Tantas como indique el multiplicador.

25

+ 25 = 50

(2 veces)

50

+ 25 = 75

(3 veces)

75

+ 25 = 100

(4 veces)

100

+ 25 = 125 (5 veces)

125

+ 25 = 150 (6 veces)

150

+ 25 = 175 (7 veces)

Hexadecimal

 

17

7 x C =54 7 x B = 4D

xBC

114

FD

10E4

Binario

 

110110

0 x 0 = 0

x

110

0 x 1 = 0

000000

1 x 0 = 0

110110

1

x 1 = 1

110110

101000100

 

Aplicando sucesivas sumas

 
 

110110

(001 vez)

 

+

110110

(010 veces)

1101100

1101100

+

110110

(011 veces)

 

10100010

+

110110

(100 veces)

 

11011000

+

110110

(101 veces)

 

100001110

+

110110

(110 veces)

 

101000100

En todo sistema de numeración multiplicar por la base significa agregar un cero a la derecha del numero.

9

División La división permite averiguar cuantas veces cabe el divisor en el dividendo. Calcula la proporción entre el divisor y el dividendo. Se puede hacer la división clásica, sumar en divisor a si mismo hasta que llegue al valor del dividendo, o restar el divisor del dividendo hasta que el resto sea menor al dividendo.

Decimal

245

/37

222

6

023

&

Por el método de sumas sucesivas

37

(1 vez)

+37

(2 veces)

74

Resultado menor que el dividendo

+37

(3 veces)

111

Resultado menor que el dividendo

+37

(4 veces)

148

Resultado menor que el dividendo

+37

(5 veces)

185

Resultado menor que el dividendo

+37

(6 veces)

222

Resultado menor que el dividendo

+37

(7 veces)

259

Resultado mayor que el dividendo.

El mayor número de sumas que su resultado no supere al dividendo es el cociente. La diferencia entre ese valor y el dividendo es el resto. Resto = 245 – 222 = 23

Por el método de sucesivas restas del divisor al dividendo.

245

-37

(1 vez)

208

-37

(2 veces)

171

-37

(3 veces)

134

-37

(4 veces)

097

-37

(5 veces)

060

-37

(6 veces)

023

Se debe detener cuando el resultado es menor que el divisor

Este resultado es el resto, y el número de veces que se realizo la resta el cociente.

Hexadecimal

F2B9

/D4

D4

125

1EB

1A8

439

424

015

&

4F5

475

080

&

/A3

7

10

Por el método de sumas sucesivas

0A3

(1 vez) (2 veces) Resultado menor que el dividendo (3 veces) Resultado menor que el dividendo (4 veces) Resultado menor que el dividendo (5 veces) Resultado menor que el dividendo (6 veces) Resultado menor que el dividendo (7 veces) Resultado menor que el dividendo (8 veces)

+A3

146

+A3

1E9

+A3

28C

+A3

32F

+A3

3D2

+A3

475

+A3

518

Se superó el dividendo

El número de veces que se suma el divisor sin superar el dividendo es el cociente. La diferencia de ese resultado con el dividendo da el resto Resto = 4F5 – 475 = 80

Por el método de restas sucesivas

4F5

-A3

(1 vez)

452

-A3

(2 veces)

3AF

-A3

(3 veces)

30C

-A3

(4 veces)

269

-A3

(5 veces)

1C6

-A3

(6 veces)

123

-A3

(7 veces)

080

El cociente es el número de veces que se resto el divisor del dividendo antes que el resultado de la resta sea menor que el divisor. Este último resultado es el resto.

Binario

Método Clásico

11011

110

/110

100

0001

000

0011

000

11

&

11011 / 110

Método de Sumas sucesivas

= 100 y de resto 11

 

110

01

+110

10

1100

Resultado menor que el dividendo

 

+110

11

10010

Resultado menor que el dividendo

 

+110

100

11000

Resultado menor que el dividendo

+

110

101

11110

me pase

11

El número de veces que se suma el divisor sin superar el dividendo es el cociente. La diferencia entre 11011 y 11000 es el resto.

resto =

11011

-11000

11

Método de Restas Sucesivas

11011

- 110

1

10101 Resultado mayor que el divisor

- 110

10

1111 Resultado mayor que el divisor

- 110

11

1001 Resultado mayor que el divisor

- 100

110

11

Resultado menor que el divisor es el resto

El cociente es el número de veces que se resto el divisor del dividendo antes que el resultado de la resta sea menor que el divisor.

Operaciones Lógicas Básicas

Solo son aplicables en el sistema binario. El símbolo => en una ecuación indica operación lógica.

Operación AND

(&) o (*) o (.)

0

0

1

1

& 0 => 0 & 1 => 0 & 0 => 0 & 1 => 1

Para números de varias cifras se realizan operaciones individuales entre bit de igual peso, sin generar ninguna clase de acarreo entre posiciones de diferente ponderación.

Operación OR

(+)

1110 1110 *

0

0

1

1

+ 0 => 0 + 1 => 1 + 0 => 1 + 1 => 1

0110 0011 => 0110 0010

Para números de varias cifras se realizan operaciones individuales entre bit de igual peso, sin generar ninguna clase de acarreo entre posiciones de diferente ponderación. 1011 0110 + 0110 0111 => 1111 0111

Operación Exor

(#)

0

0

1

1

# 0 => 0 # 1 => 1 # 0 => 1 # 1 => 0

1001 0111 # 0100 1011 => 1101 1100 Para números de varias cifras se realizan operaciones individuales entre bit de igual peso.

12

Sistemas de numeración limitados en cifras

Por ser dispositivos físicos los procesadores trabajan con un número finito de cifras. Lo que significa usar un sistema numérico limitado en cifras. Usan el sistema binario limitado a 4, 8, 12, 16, 32 bit o más. En este texto se estudiara el sistema binario limitado a 8 cifras, el decimal y el hexa limitados en 2 cifras. Para operar con otros conjuntos numéricos (enteros, reales, etc) se debe acordar una representación con los 256 posibles valores disponibles. Además del resultado, los procesadores, generan indicadores (banderas o flag) que nos dicen que clase de resultado dio. No dependen del valor en si, sino de las características del resultado. Se generan elegidos por convención. En las operaciones aritméticas puede suceder que el sistema sea excedido por el resultado, por lo tanto es necesario avisar si sucede tal caso

Si hubo desborde en la suma binaria CY=1 Si no hubo desborde en la suma binaria CY=0

Si pido uno prestado en la resta binaria BW=1 Si no pido prestado uno en la resta binaria BW=0

Si el resultado de la operación lógico-matemática es cero Z=1 Si el resultado de la operación lógico-matemática no es cero Z=0

Si el bit 7 del resultado de la operación lógico-matemática es igual a uno S=1 Si el bit 7 del resultado de la operación lógico-matemática es igual a cero S=0

Si hubo acarreo entre el bit 3 y el bit 4 AC=1 o DC=1 Si no hubo acarreo entre el bit 3 y el bit 4 AC=0 o DC=0 Se llama semiacarreo o acarreo digital.

Si la sumatoria de los bit del resultado es cero P=0 (paridad par) Si la sumatoria de los bit del resultado es uno P=1 (paridad impar)

Se define el máximo representable (MVR) como el valor máximo que se puede representar en un sistema limitado en cifras. Es el número donde cada cifra es el símbolo de mayor valor.

Decimal de dos cifras

99

Hexadecimal de dos cifras

FF

Binario de ocho cifras

1111 1111

Las sumas cuyo resultado es mayor al MVR ponen a 1 la bandera (indicador o flag) CY.

Como condición de funcionamiento si al máximo representable le sumamos 1, dará como resultado 0 y el indicador CY valdrá 1.

Decimal

99 + 01 = 00

y CY=1

Hexadecimal

FF + 01 = 00

y CY=1

Binario

1111 1111 + 0000 0001 = 0000 0000 y CY=1

En estos casos decimos que hubo desborde o acarreo. Se observa también un semiacarreo AC, entre:

las unidades y decenas en el sistema decimal la cifra de orden 0 ( x 16 0 )y la cifra de orden 1( x 16 1 ). el nible bajo y el alto en el sistema binario, o del bit 3 al bit 4

Suma en Sistemas Limitados en Cifras

Decimal

23

+ 45 = 68 y CY=0 AC=0

84

+ 53 = 37 y

CY=1 AC=0

38

+ 25 = 63 y CY=0 AC=1

84 + 47 = 31 y

Suma de máximos

CY=1 AC=1 99 + 99 = 98

Hexadecimal

C5 + 2A = EF y CY=0 AC=0

B8 + 19 = D1

y CY=0 AC=1

72

+ D8 = 4A

y CY=1 AC=0

13

y CY=1

4F + B9 = 08 Suma de máximos

Binario

1101 1001

+0010 0001

y CY=1 AC=1 FF + FF = FE y

1111

1010

y

CY=0 AC=0

1101

1011

+0110 0001

 

0011

1100

y

CY=1 AC=0

1010

0111

+0100 1010

 

1111

0001

y

CY=0 AC=1

1001

0111

+1010 1001

 

0100

0000

y

CY=1

AC=1

CY=1

Suma de máximo

1111 1111

+1111 1111

1111 1110

y

CY=1

Resta en Sistemas Limitados en Cifras

Se estudia el sistema decimal limitado a dos cifras y se extenderá el razonamiento al binario y al hexadecimal. Cuando el minuendo es menor que el sustraendo al final de la resta es necesario pedir una unidad a la cifra de la izquierda o un acarreo negativo, al cual llamamos borrow. El borrow se representa con BW. En la práctica activa la bandera CY.

Decimal

43 - 25 = 18

y

no hubo Borrow

La resta es una operación compleja de implementar. Lo importante es que la resta siempre reporte la diferencia entre los operandos. La resta se define:

a - b = c

a = b + c

Se plantea desde otra forma equivalente

a + (-b) = c

Se debe buscar como representar el valor (-b)

 

b

- b = 00

Entonces

 

b

+ (-b) = 00

Observación:

En sistemas limitados en cifras sumar el valor 100 en forma teórica es lo mismo que sumar 00 en forma practica. No podemos sumar 100, pero si podemos sumar 99 + 01.

Considerando la observación anterior

Se deduce

lo cual es

b + (-b) = 99 + 1

-b = 99 + 1 - b

-b =

99 - b + 1

Se define el complemento a 10 de un valor x como la diferencia de x con el máximo representable más uno.

Ca10(x) = 99 - x + 1

También se define Ca10(x) como el valor que sumado a x da como resultado 0. Con el Ca10 podemos transformar la resta en una suma.

Ejemplo:

a - b = a + Ca10(b)= c

14

43 - 25 = 18

y no hubo Borrow

Se convierte en suma Ca10(25) = 99 – 25 + 01 = 75

Queda

43 + 75 = 18

y

CY=1

Se observa que en esta suma hay un acarreo, indicando que en la resta original no hubo borrow. El borrow

y el acarreo son de diferente valor. Ambos se representan con CY

Se estudiara un caso donde el minuendo es menor que el sustraendo.

Y como

43 - 57 = ¿?

Ca10(57) = 99 – 57 + 01 = 43

Queda

43 + 43 = 86

y

CY=0

Este resultado seria el mismo que ejecutar la resta.

43 – 53 = 86 y hubo borrow

El borrow significa que se pidió prestado uno. Por lo tanto el sustraendo es mayor que el minuendo. El carry = 0 indica que en la resta original hay borrow. Y nos indica que el minuendo es menor que el sustraendo. El valor del resultado a primera vista no representa la diferencia entre los dos valores. Pero se estudia como se relaciona con la diferencia. Ca10(-86) = 99 – 86 + 01 = 14

Se comprueba

57 – 43 = 14

Se deduce que cuando la resta tiene borrow el resultado representa el Ca10 de la diferencia entre los operandos.

Binario

El máximo representable es en este caso 1111 1111.

Ejemplo

Calculo Ca10(1001 1011) El Ca10 del sistema binario corresponde al Ca2 del sistema decimal En la practica no se puede representar 1 0000 0000, así que se hace la resta con 1111 1111 y después le sumamos 1. Cualquier valor será menor que el MVR.

1111

1111

0110 0100

- 1001 1011

y

+0000 0001

0110

0100

0110 0101

Entonces

Ca10(1001 1011) = 0110 0101

Ejemplo de resta

1011 0010 -1001 0110 = ¿? Se hace el complemento del sustraendo Ca10(1001 0110) = 1111 1111 - 1001 0110 + 0000 0001 = 0110 1010 Se suman ambos valores

1011 0010

+0110 1010

0001 1100

y CY=1

La resta no tiene borrow y su resultado es 00011100

Otro ejemplo de resta 0111 0101 -1001 1000 = ¿?

Se convierte en suma Ca10(1001 1000) = 1111 1111 – 1001 1000 + 0000 0001 Ca10(1001 1000) = 0110 1000

15

0111 0101

+0110 1000

1101 1101

y CY=0

La resta tiene borrow y su resultado es 11011101 Al tener borrow se debe complementar el resultado para saber la diferencia. Ca10(1101 1101) = 1111 1111 – 1101 1101 + 0000 0001 Ca10(1101 1101) = 0010 0011 Siendo esta la diferencia entre los operandos.

Hexadecimal Máximo representable FF Por lo tanto el Ca10 del hexadecimal corresponde al Ca16 del decimal. Ejemplo

Calculo Ca10(A2) FF

-A2

5D

y

Ejemplo de resta:

E4 – 3F = ¿?

5D

+01

5E

Ca10(3F) = FF - 3F + 01 = C1

E4

+C1

A5

y CY=1

La resta no tiene borrow y su resultado es A5

Definición de Complemento al MVR (Ca[MVR]) o (Ca[10-1]) En un sistema con limite de cifras se define el complemento al MVR de x (diferente a opuesto y a inverso) como el valor que sumado a x da el máximo representable. x + Ca[10-1](x) = máximo representable

Ejemplos:

Decimal En este sistema seria Ca9 Ca9(12) = 99 - 12 = 87 Ca9(83) = 99 - 83 = 16

Hexadecimal En este sistema seria CaF CaF(A4) = FF - A4 = 5B CaF(15) = FF - 15 = EA

Binario En este sistema seria Ca1 Ca1(0111 0101) = 1111 1111 - 0111 0101 = 1000 1010 Ca1(1001 1100) = 1111 1111 - 1001 1100 = 0110 0011

Notas

# Se deduce que

# Se observa que

Ca10(x) =

Ca[10-1](x) + 1

Ca10[ Ca10(x) ]= x Ejemplo decimal limitado a 2 cifras Ca10(73) = 99 – 73 + 1 Ca10[Ca10(73)] = 99 – ( 99 – 73 + 1 ) + 1 Ca10[Ca10(73)] = 99 – 99 + 73 – 1 + 1 Ca10[Ca10(73)] = 73

# Se observa que

Ca[10-1]{Ca[10-1](x)} = x

16

Ejemplo decimal limitado a 2 cifras Ca9(38) = 99 – 38 Ca9[Ca9(38)] = 99 – ( 99 – 38 ) Ca9[Ca9(38)] = 99 – 99 + 38 Ca9[Ca9(38)] = 38

Comparación

Esta operación lógica en si es una resta en la cual no interesa el resultado. Se recaban datos respecto al resultado y la relación entre los operandos. Se puede saber cual de los operandos es mayor o si son iguales. La operación de resta activa estos indicadores:

BW

Si no se pidio prestado uno en la resta vale 0

Z

Si el resultado es cero vale 1

AC

Si no hubo borrow entre los nibles bajos y los altos vale 1

P

Según la paridad del resultado es su valor

S

Indicador de signo, copia el valor del MSB

El análisis de estos indicadores permite deducir como es la relación de x con y o sea (x – y )

Si

BW=0

entonces x >= y

Si

BW=1

entonces x < y

Si

Z=1

entonces x = y

Si

Z=0

entonces x ≠ y

Si

BW=1 o Z=1

entonces x <= y

Si

BW=0 y Z=0

entonces x > y

17

Representación o Codificación

En un sistema binario limitado a 8 cifras u 8 bit, o sea un byte, se pueden tener 256 valores diferentes. Se puede asociar cada valor a un número, letra o símbolo. Al intercambiar información con otros dispositivos es necesario que usen el mismo sistema de codificación. Números naturales (N):

Si se asocia a los números naturales podemos representar desde el 0 (0000 0000) hasta el 255 (1111 1111) inclusive en una correspondencia biunívoca

Números enteros (Z):

Al representar números enteros se debe prever como diferenciar a los negativos y los positivos, o sea como indicar el módulo y el signo. Hay dos técnicas posibles. I) Se usa el MSB como indicador del signo y los 7 bit restantes como el módulo. bit 7 = 0 signo positivo y bit 7 = 1 signo negativo.

1

111 1111 = -127

FF

1

000 0001 = -1

81

0

000 0001 = 1

01

0

111 1111 = 127

7F

0

000 0000 = 0

00

1

000 0000 = 0

80

No hay relación biunívoca por que el cero tiene dos representaciones posibles. Aunque es un código viable no es 100% óptimo.

II) Se usa del bit 0 al bit 6 para representar el modulo, pero a los números negativos se le aplica el complemento a 2. Así se representa

 

0000

0000 = 0

00

0111

1111 = 127

7F

Para hallar la representación de -127:

Ca2(0111 1111) = 1111 1111 – 0111 1111 + 0000 0001 -127 = 1000 0001

81

Se hace lo mismo para hallar la representación de -1:

 

Ca2(0000 0001) = 1111 1111 – 0000 0001 + 0000 0001

 
 

-1

=

1111 1111

FF

Para averiguar a cual valor representa el byte 1000 0000 se le aplica el Ca2 Ca2(1000 0000) = 1111 1111 – 1000 0000 + 0000 0001 = 1000 0000

1000 0000 = -128

80

Permite representar 256 números diferentes, desde -128 hasta 127 inclusive.

Se pueden idear otras codificaciones multi-byte para números fuera del rango [-128 , 127] o fraccionarios. Pero depende de cada usuario y sistema.

Código ASCII Estándar Americano derivado del Código ISO que permite la transmisión de información entre maquinas. Con 256 combinaciones permite representar símbolos ortográficos, gramaticales, especiales, dígitos y comandos de control del texto. Este sistema usa los 7 bit mas bajos para representar los símbolos, y el MSB ajusta la paridad del byte, así la misma es siempre par. Lo cual sirve para detector de errores. Hoy en día se le han realizado modificaciones generando así varias versiones de uso limitado. Codifica:

Las letras del alfabeto ingles Los signos de la escritura inglesa ( ! ? ” ( ) . : , ; { } [ ] ) Caracteres especiales ( \ / @ # $ % & = + - _ ’ * < > ^ ~ | ) Dígitos (0 1 2 3 4 5 6 7 8 9) Comandos especiales para control de texto Combinaciones sin usar para que cada usuario pueda agregar sus propios signos

Códigos BCD Es un sistema que representa cada símbolo decimal con un grupo de 4 bit. Hay varias formas de codificación en BCD. El más común es donde cada dígito se convierte a su equivalente binario. Entonces cada numero decimal se convierte a una serie binaria donde cada 4 bit se representa un dígito.

18

BCD

8421 es el más común

0

0000

5

0101

1 0001

6

0110

2 0010

7

0111

3 0011

8

1000

4

0100

9

1001

Se usan solo estas tétradas, lo cual facilita detectar errores de transmisión

En los sistemas de 8 bit el nible bajo representa las unidades y el nible alto las decenas.

BCD

2421

0

0000

5

1011

1

0001

6

1100

2

0010

7

1101

3 0011

8

1110

4 0100

9

1111

BCD exceso 3

 

0

0011

5

1000

1

0100

6

1001

2 0101

7

1010

3 0110

8

1011

4

0111

9

1100

El que ningún número sea compuesto solo por ceros permite usar esa tétrada (0000) como símbolo de no información. Es un código no ponderado, en el que por tanto no existe ninguna relación de pesos. Su nombre proviene del método de formación del propio código. Para obtener este nuevo código, no tenemos más que sumar 3 (11 B ) a la cifra equivalente en BCD natural.

Código Gray

Este código posee como característica que el paso de un número al siguiente se efectúa cambiando un solo bit de cada vez. También se le llama Código espejo.

0 0000

8

1100

1 0001

9

1101

2 0011

10

1111

3 0010

11

1110

4 0110

12

1010

5 0111

13

1011

6 0101

14

1001

7 0100

15

1000

Cada bit en el Código grey tiene su ponderación según su posición y el numero a representar. La ponderación de cada bit es

±255 ±127 ±63 ±31 ±15 ±7 ±3 ±1

En binario natural la ponderación es ±11111111 ±1111111 ±111111 ±11111 ±1111 ±111 ±11 ±1 Se consideran los bits de valor “1” desde el MSB al LSB. El primero que vale uno tendrá ponderación

positiva. El siguiente que valga 1 tendrá ponderación negativa, el siguiente ponderación positiva, el siguiente ponderación negativa y así sucesivamente con todos los bit que valen 1. Los bit de valor cero se ignoran. Por ejemplo:

Código grey 01101011 corresponde al decimal +0 +127 -63 +0 +15 +0 -3 +1 = 77 al binario +0 +1111111 -111111 +0 +1111 +0 -11 +1 =1010011 Para obtener la representación de un número se procede del modo siguiente:

1.- Se convierte el número a binario. 2.- Al valor así obtenido, se hace una EX-OR con el mismo valor una vez movido un bit a la derecha (bit que se desprecia). Veamos un ejemplo: Obtener el código Gray del decimal 14.

1º.

14 D = 1110 B

2º.

1110 EX_OR 0111 = 1001

Luego el número 14 en código Gray será 1001 Hay varias versiones del código Gray.

19

Código Johnson Es una secuencia donde se cambia un bit por vez y permite corregir errores de secuencia. Es muy usado

en decodificadores de posición. No representan ni se asocian a ningún valor, solo que después de recibir un número ya sabemos cual recibiremos después. Además puede empezar con cualquier valor. Para el caso de 5 bit seria:

11100

11000

10000

00000

00001

00011

00111

01111

11111

11110

Esta rotación de los bits se puede realizar hacia la derecha o la izquierda.

Codificación BCD

Los sistemas que hacen de interfase entre los humanos y el micro son más simples si el sistema de numeración es en base 10. Se diseño un código que representa con un byte números en base 10 desde el 00 al 99. Se llama BCD, binario codificado decimal. Se puede representar un sistema decimal limitado a 2 cifras. El BCD 8421 permite realizar sumas y restas con menor dificultad. Por lo estándar que es hay gran cantidad de circuitos digitales diseñados para manejar este sistema y los micros prevén su uso.

Ejemplo

Suma

22

56 D <=> 0101 0110 B 10 D <=> 0001 0000 B

D

+ 57 D = 79 D

CY=0 y AC=0 + 0101 0111 B = 0111 1001 B

0010 0010 B

CY=0 y AC=0

En este ejemplo ni las unidades ni las decenas superan el mayor símbolo.

Otro caso

58 D + 27 D = 85 D

0101 1000 B

CY=0

AC=1

+ 0010 0111 B = 0111 1111 B

CY=0 y AC=0

Aquí el nible bajo tiene un valor ilegal. Es necesario ajustar el resultado binario para que sea acorde con el BCD. Se estudia el ajuste necesario llamado Ajuste Decimal Si se suma 09 y 01 el resultado debe se 10.

09

+01

10

D

D

D

0000 1001 B +0000 0001 B 0000 1010 B

Se esperaba 0001 0000 como resultado pero dio 0000 1010. Se analiza la diferencia.

0001 0000 B -0000 1010 B 0000 0110 B Esta diferencia es constante para cualquier valor ilegal. Es el número de tétradas no usadas. Se usa para corregir los resultados incorrectos. Con solo sumar 0110 al nible bajo se ajusta el resultado Aplicamos la corrección a la operación realizada.

0111 1111 B

+0000 0110 B

 

1000

0101 B

=

85 D

Resultado esperado

 

CY=0

AC=1

20

Otro caso

29 D + 38 D

0010 1001 B + 0011 1000 B = 0110 0001 B

= 67 D

CY=0 y AC=1

CY=0 y AC=1

Aquí ambos nibles son valores permitidos, pero hubo acarreo en el nible bajo. Esto indica que los nibles bajos suman más de 15 entre si. Se espera 67 y resulto 61, la diferencia sigue siendo 6.

0110 0001

+0000 0110 B

B

0110 0111 B = 67 D

CY=0

AC=0

Resultado esperado

Otro caso

62 D + 53 D = 15 D CY=1 y AC=0

0110 0010 B

+ 0101 0011 B = 1011 0101 B

CY=0 y AC=0

Se observa que el nible alto es una tétrada no valida. Tiene un valor mayor de 9. Se realiza un estudio similar al del nible bajo. Ajuste Decimal

90 D

1001 0000 B

+10 D

+0001 0000 B

00D

1010 0000 B

Lo esperado es 0000 0000 B y resulto 1010 0000 B . Se analiza la diferencia.

0000 0000 B

-1010 0000 B

0110 0000 B

Al sumar 0110 0000 B se corrige la diferencia en el resultado

1011 0101 B

+0110 0000 B

0001 0101 B = 15 D Resultado esperado

CY=1

AC=1

Otro caso

94 D + 73 D = 67 D CY=1 y AC=0

1001 0100 B + 0111 0011 B = 0000 0111 B

CY=1 y AC=0

Aquí ambos nibles son valores permitidos, pero hubo acarreo en el nible alto. Esto indica que los nibles altos suman más de 15 entre si. Ajustamos el nible alto

Otro caso

0000 0111

B

+0110 0000 B

 

0110

0111 B

= 67 D

Resultado esperado

 

CY=0

AC=0

53 D

+ 89 D = 42 D

CY=1

y AC=1

0101

0011 B + 1000 1001 B = 1101 1100 B

CY=0 y AC=0

Se observa que tanto el nible bajo como el alto tienen valores no permitidos. Se ajustan ambos nibles al mismo tiempo.

1101 1100 B

+0110 0110 B

0100

0010

B

= 42 D

CY=1

AC=1

Resultado esperado.

21

Otro caso

98 D + 89 D =

1001 1000 B + 1000 1001 B = 0010 0001 B

87 D

CY=1

AC=1

CY=1 AC=1

Ambos nibles tienen valores permitidos pero la existencia de acarreo y semi-acarreo indica la necesidad de ajustar ambos. Se ajustan ambos al mismo tiempo.

0010 0001 B

+0110 0110 B

1000 0111 B

= 87 D Resultado esperado.

CY=0

AC=0

La mayoría de los micros tienen una instrucción de ajuste decimal, que ejecutada después de realizar una suma con números binarios verifica el resultado y ajusta si es necesario.

Resta Ejemplo de resta

75 D - 34 D = 41 D BW=0 y AC=0

0111 0101 B - 0011 0100 B =

¿?

Se convierte la resta en suma mediante el complemento a 10 del sustraendo. Se hace Ca10 por que el número binario representa un número decimal. Ca10(34) = 99 - 34 + 1 = 66 D Ca10(0011 0100) = 1001 1001 - 0011 0100 + 0000 0001 = 0110 0110 B

01110101 B + 01100110 B 11011011 B

CY=1

AC=0

Como todo resultado de suma BCD es necesario realizar el ajuste decimal.

1101 1011 B

+0110 0110 B

0100 0001 B

El CY indica que no hubo borrow.

Otro caso

84 D - 36 D = 48 D

1000 0100 B - 0011 0110 B =

BW=0 y AC=1

¿?

= 41 D Resultado esperado CY=1 AC=1

Se convierte la resta en suma con el Ca9 Ca10(0011 0110) = 1001 1001 - 0011 0110 + 0000 0001 = 0110 0100 B

1000 0100

+0110 0100 B

1110 1000 B

B

Se realiza el ajuste decimal al resultado.

El valor del CY indica que no hubo borrow.

Otro caso

28 D - 43 D = 85 D

0010 1000 B - 0100 0011 B = ¿?

BW=1 y AC=0

Se convierte la resta en suma con el Ca9

CY=0

AC=0

1110 1000

+0110 0000 B

0100 1000 B

B

22

= 48 D Resultado esperado.

CY=1

AC=0

Ca10(0100 0011) = 1001 1001 - 0100 0011 + 0000 0001 = 0101 0111 B

0010 1000 B

+0101 0111 B

0111 1111 B

CY=0

AC=0

Se realiza el ajuste decimal del resultado.

0111 1111 B

+0000 0110 B

1000 0101 B =85 D Resultado esperado

CY=0

AC=1

El valor del CY indica que hubo borrow. La diferencia se calcula al hacer el complemento a 10 del resultado. Ca10(1000 0101) = 1001 1001 - 1000 0101 + 0000 0001 = 0001 0101 La diferencia es 0001 0101 B o 15 D .

Otro caso 34 D - 58 D = 76 D

0011 0100 B - 0101 1000 B = ¿? Se convierte la resta en suma con el Ca10. Ca10(0101 1000) = 1001 1001 - 0101 1000 + 0000 0001 = 0100 0010 B

BW=1 y AC=1

0011 0100

+0100 0010 B

0111 0110 B

B

CY=0

AC=0

No es necesario realizar el ajuste decimal. 0111 0110 B = 76 D Resultado esperado. El CY indica que hubo borrow. Se calcula la diferencia mediante el complemento a 10 del resultado. Ca10(0111 0110) = 1001 1001 – 0111 0110 + 0000 0001 = 0010 0100 La diferencia es 0010 0100 B o 24 D .

Se deducen una serie de pasos para realizar la resta entre números binarios con codificación decimal o sea BCD 8421.

1) Realizar el Complemento a 10 del sustraendo. 99 D - sustraendo + 01 D

1001 1001 B - sustraendo + 0000 0001 B

2) Sumar el minuendo y el Ca10 del sustraendo.

3) Realizar ajuste decimal del resultado.

4) Interpretar el resultado. Si el CY=1 el resultado es la diferencia entre el minuendo y el sustraendo, siendo el último menor que el primero Si el CY=0 el resultado es el Ca10 de la diferencia entre el minuendo y el sustraendo, siendo el último mayor que el primero.

Números Enteros

Para representar números enteros se debe prever como diferenciar a los negativos de los positivos, o sea como indicar el modulo y el signo. La mejor forma es mediante el Ca2 Su usa del bit 0 al bit 6 para representar el módulo, pero a los números negativos se le aplica el complemento a 2. Así se representan:

0000

0000 B = 0 D

0111

1111 B = 127 D

1000

0000 B = -128 D

1111

1111 B = -1 D

23

Se representan 256 números diferentes, desde -128 hasta 127 inclusive.

Se pueden idear otras codificaciones multibyte para números fuera del rango [-128 , 127] o fraccionarios. Pero depende de cada usuario y sistema.

Suma de números enteros

El acarreo en la suma se ve en el bit 7, o sea detectarse en el bit de signo o en la bandera S.

a) Los dos positivos.

+22

+53

+75

D

D

D

0001 0110 B 0011 0101 B 0100 1011 B

S=0

CY=0 AC=0

En este ejemplo el resultado es menor a +127 por lo tanto es correcto

+89

+45

D

D

+134

D

0101 1001 B 0010 1101 B 1000 0110 B

S=1 CY=0

AC=1

El resultado es superior a +127 por lo tanto se puso a uno el bit7 y parece que el resultado es negativo. El acarreo se muestra en el bit 7.

b) Los dos negativos

-12

-57

-69 D

D

D

Ca2(0000 1100 B )

=

1111 0100 B

Ca2(0011 1001 B )

=

1100 0111 B 1011 1011 B

S=1 CY=1 AC=0

Ca2(1011 1011 B ) = 0100 0101 B = 69 D Resultado esperado El resultado es igual o mayor que -128 por lo que es correcto

 

-112

D

Ca2(0111 0000 B )

Ca2(0011 0110 B )

1001 0000 B 1100 1010 B 0101 1010 B

=

=

 

- 54

-166 D

D

 

S=0

CY=1 AC=0

El resultado es menor a -128 por eso S=0 aunque sea negativo.

 

c)

Sumandos de diferente signo

 

Positivo de modulo mayor 111 D

0110 1111 B 1011 0011 B 0010 0010 B

=

 
 

-77 D

Ca2(0100 1101 B )

34 D

 

S=0

CY=1 AC=0

El resultado coincide con lo esperado

 

Negativo de modulo mayor 54 D

=

0011 0110 B 1010 0011 B

 
 

-93 D

Ca2(0101 1101 B )

-39 D

1101 1001 B

 

S=1

CY=0 AC=0

Ca2(1101 1001 B ) = 0010 0111 B = 39 D Resultado esperado. Se debe ser cuidadoso al estudiar el resultado de la suma de enteros. Se debe considerar el signo de los operandos y del resultado.

24

Definiciones Y Términos

BIT- Unidad de información. BINIT- Abreviación de Dígito Binario, pero por deformación se llama BIT. Cada uno de los símbolos del sistema de numeración binario. PALABRA- Conjunto de bits ordenados. También se le identifica con grupo de 8 bits. BYTE- Conjunto ordenados de 8bit. (Cada bit tiene su ponderación) MSB- Most Significative Bit - bit más significativo, de mayor peso o ponderación. NIBLE- Conjunto ordenado de 4 bit. Dos nibles forman un byte. DATO- Es una porción de información, se usa como sinónimo de palabra. También se le llama a los bytes no usados para comandar al micro. PROCESADOR- Dispositivo físico. Conjunto de elementos capaz de ejecutar un programa. PROCESO- Secuencia de eventos para obtener un resultado o cumplir un objetivo. μP MICROPROCESADOR- Procesador implementado en un solo chip o circuito integrado. MICROCONTROLADOR- Conjunto de los elementos de un sistema (procesador, RAM, ROM y periféricos) integrados en un solo chip. UCP, CPU- Unidad de Proceso Central o Unidad de Control de Proceso OPERACIÓN MATEMÁTICA- Son operaciones que cada bit afecta al bit de orden superior. Son la suma, la resta, la multiplicación y la división. Solo los micros más potentes y dedicados a cálculos tienen la multiplicación. La división solo algunos muy escasos. OPERACIÓN LÓGICA- Son operaciones donde cada bit no afecta a otro de mayor peso, como EX-OR, NAND, SET, RESET, AND, NOT, OR, etc.

ROTACION A

LA IZQUIERDA

B7 B6 B5 B4 B3 B2 B1 B0 ROTACION A LA DERECHA INTERCAMBIO B7 B6
B7
B6
B5
B4
B3
B2
B1
B0
ROTACION A
LA DERECHA
INTERCAMBIO
B7
B6
B5
B4
B3
B2
B1
B0
DE NIBLES
“SWAP”
B7 B6 B5 B4 B3 B2 B1 B0
B7
B6
B5
B4
B3
B2
B1
B0

DECISIÓN- Es optar entre dos acciones a realizar dependiendo del resultado de alguna operación lógica- matemática. BUS- Conjunto de líneas físicas que transportan bits asociados entre sí. BUS DE DATOS- Conjunto de líneas físicas que llevan datos. Cada una de ellas se encarga de transportar un bit de la palabra. BUS DE DIRECCIONES- Similar al anterior pero cada línea transporta un bit de la dirección a utilizar. BUS DE CONTROL- Grupo de líneas físicas que transportan a las señales para coordinar acciones dentro y fuera del micro. Es mas difícil distinguirlas por que no siempre corren paralelas entre si. REGISTRO- Dispositivo físico para almacenar un dato, palabra o byte. MEMORIA- Dispositivo físico para almacenar información, conformada por registros. BUFFER- Dispositivo físico que acopla dispositivos entre si. Permite amplificar en corriente las señales entre elementos. POSICIÓN DE MEMORIA- Los registros dentro de la memoria están ordenados, por lo cual cada registro tiene su posición de memoria y esta se identifica con una dirección de memoria. DIRECCIÓN DE MEMORIA- Dato numérico que permite definir un registro o posición de memoria dentro de la misma.

un registro o posición de memoria dentro de la misma. RAM - Porción de la memoria

RAM- Porción de la memoria del sistema que puede ser escrita o leída. Generalmente alberga datos. ROM- Porción de la memoria del sistema que solo puede ser leída. En general alberga comandos.

25

MAPA DE MEMORIA- Esquema o representación de todas las posiciones de memoria que visualiza las clases de datos y su uso en el sistema.

que visualiza las clases de datos y su uso en el sistema. BLOQUE - Representación gráfica
que visualiza las clases de datos y su uso en el sistema. BLOQUE - Representación gráfica

BLOQUE- Representación gráfica de cualquier dispositivo o secuencia como un rectángulo con una entrada y una salida, identificado con la ecuación que relaciona estas entre si. INSTRUCCIONES- Palabras que al ser leídas por el μP desde la memoria le indican acciones a realizar. Cada μP tiene su propio paquete de instrucciones. MNEMÓNICOS- Nombre de las instrucciones usadas por el programador en la escritura el programa fuente CÓDIGO OPERATIVO- Valor numérico de la instrucción. A este valor numérico se le llama también Código Máquina. PROGRAMA- Secuencia de instrucciones u órdenes para conseguir un objetivo o llegar a un resultado. SUBPROGRAMA- Pequeño programa, parte de otro más extenso o principal. RUTINA- Similar al programa pero donde se acentúa la idea de ser cíclico o repetitivo. SUBRUTINA- Rutina o subprograma parte de otro, el cual puede ser invocado a ejecutarse varias veces. Simplifica el programa principal y puede ser representado como un bloque. SALTO O JUMP- El micro ejecuta las instrucciones una tras otra, buscándola en posiciones de memoria consecutivas. El salto se produce cuando se busca la siguiente instrucción en una posición de memoria no consecutiva con la ejecutada anteriormente. BIFURCACIÓN- Rama que se abre del camino principal, solo desde una decisión puede surgir. LAZO, LOOP O BUCLE- Sección de un programa que se ejecuta en forma ciclica. ARRAY o MATRIZ- Conjunto de datos los cuales tienen al menos una característica en común. Conjunto de datos ordenados en 1 o más dimensiones:

1 dimensión X a

(a Є

a los N)

Se ordenan en base a un parámetro

X a (a Є a los N) Se ordenan en base a un parámetro 2 dimensiones

2 dimensiones X a,b (a y b Є a los N)

un parámetro 2 dimensiones X a , b (a y b Є a los N) Se

Se ordenan en base a 2 parámetros.

b (a y b Є a los N) Se ordenan en base a 2 parámetros. 3
b (a y b Є a los N) Se ordenan en base a 2 parámetros. 3

3 dimensiones X a,b,c (a, b y c Є a los N) Se ordenan en base a 3 parámetros.

Permite tratar los datos como un objeto. Sin importar el agrupamiento que se haga de los datos estos siempre estarán colocados en posiciones sucesivas de memoria.

26

SERIE - Grupo de datos almacenados en posiciones de memoria consecutivas. Es una matriz unidimensional.

SERIE- Grupo de datos almacenados en posiciones de memoria consecutivas. Es una matriz unidimensional. Se necesita definir la dirección de memoria del inicio de la serie y su extensión. Ejemplo inicio en nnmm y K elementos de longitud.

TABLA- Grupo de datos almacenados

consecutivamente. Se define indicando la posición del primer (Pi)y ultimo dato (Pf).

indicando la posición del primer (Pi)y ultimo dato (Pf). VARIABLE - Elemento de programación que puede

VARIABLE- Elemento de programación que puede modificar su valor. Físicamente se debe asociar en una posición de memoria RAM ETIQUETA- Elemento de programación que permite sustituir un valor numérico por un texto o una cadena de caracteres, lo cual ayuda a ordenar el programa. PUNTERO o VECTOR- Elemento de programación (variable) que permite direccionar un dato. Registro que almacena la dirección del inicio de una matriz, o almacena la dirección del dato a ser tratado dentro de la matriz. Dentro de un lazo con solo actualizar su valor se obtiene otro elemento de la serie. VARIABLE DE LAZO- Variable utilizada en un lazo, la cual es chequeada para determinar si se continua repitiendo o no. Cuando alcanza el valor predeterminado se sale del lazo. PERIFÉRICO- Dispositivo físico que se comunica con el uP, realiza acciones que liberan a este de hacerlas. Permite que el uP tome o entregue datos al exterior. PUERTOS- Datos de dirección para la selección de periféricos. Periférico especifico para intercambiar datos con el universo. DIAGRAMA DE FLUJO- Representación gráfica de cómo la información se modifica en un programa. Representación gráfica de un proceso, se muestran los pasos en bloques tales operaciones, decisiones, bifurcaciones y saltos. INTERRUPCIÓN- Señal del exterior que indica al procesador un evento LSB- Low Significative Bit - bit menos significativo, de menor peso o ponderación. LIFO- (Last IN, First OUT). Estructura donde el ultimo dato en entrar es el ultimo en salir. FIFO- (First IN, First OUT). Estructura donde el primer dato en entrar es el primero en salir. PILA- Estructura de datos de organización LIFO. Caracterizada por ser de facil acceso, se utiliza para almacenamiento temporal de los mismos. Puede implementarse en la memoria RAM o en un banco de registros dedicados a ese fin. COLA- structura de datos con organizacion FIFO. Caracterizada por ser de fácil acceso, se usa para intercambio de datos entre dispositivos, estructuras, subrutinas, etc. PIN, PATILLA, PATA o TERMINAL- Conexión física del dispositivo con el resto del circuito. Puede unirse por soldadura o por contacto a presión.

27

Nociones de Memorias

Características

Son dispositivos electrónicos destinados a conservar información. Están formadas por elementos o células ordenadas llamados registros y un bloque de control. En cada registro se guarda un dato. Este dato puede se de uno o varios bit de longitud. La memoria tiene líneas de entrada y/o salida de datos (bus de datos) comunes a todos los registros y otras líneas dedicadas a seleccionar el registro con cual trabajar (bus de direcciones). Las líneas que controlan el proceso de lectura o escritura forman el bus de control. El bus de control se compone por el indicador de operación a realizar (lectura o escritura), el reloj maestro para sincronizar la operación y alguna señal extra para coordinar el intercambio de datos en el momento que estos son estables y validos. Los parámetros más importantes de una memoria son la capacidad de almacenamiento de información, el tiempo de acceso al dato seleccionado y el número de bit de cada dato. El número de bit de cada dato es la longitud de la palabra que almacena la memoria. Este valor multiplicado por el número de registros interna nos dice la capacidad de almacenamiento de la memoria 2048 registros de 8 bit cada uno, es una memoria de 16 Kbit o 2Kbyte. 16384 registros de 1 bit cada uno, es una memoria de 16Kbit. El tiempo de acceso se mide desde que se presentan los valores en los pines de control y hasta el momento en que el dato es valido y estable.

y hasta el momento en que el dato es valido y estable. Se clasifican según Uso

Se clasifican según Uso de la memoria Método de acceder al registro deseado Método físico de almacenamiento de información

Clasificación

Por el uso de la memoria

Memoria de Programa ROM: Se almacena en ella las instrucciones del programa a ejecutar. Algunos micros tienen esta memoria de mayor número de registros y de bit que la memoria de datos. No pierde su información aunque pierda alimentación. Se graba antes de poner a funcionar el sistema Memoria de Datos RAM: Se usan para almacenar información que varia a lo largo del programa. Tiene igual número de bit que la ALU del micro. Tiene que tener suficiente velocidad de acceso como para no entorpecer al procesador.

Por la forma de acceder al registro deseado

Acceso Aleatorio (RAM) o Paralelo: Permite seleccionar el registro con el cual trabajar escribiendo el valor que identifica al registro en los pines del bus de direcciones. Si cada registro esta en un estante de un armario, se trata solo de indicar la fila y la columna donde se ubica el cajón deseado. En este formato la velocidad de acceso es la misma para todos los registros, y su control es muy sencillo. Al necesitar un pin por cada linea de cada bus, cuanto mayor es la capacidad de la memoria mayor es el tamaño del chip. El procedimiento puede diferir un poco de un modelo a otro pero básicamente es este.

un poco de un modelo a otro pero básicamente es este. En el bus de direcciones

En el bus de direcciones se selecciona la dirección de la posición de memoria del registro a operar. Con el bus de control se indica que operación se va ejecutar y en que momento hacerlo. El dato pasa por el bus de datos hacia o desde la memoria. Pueden ser tanto internas como externas al chip del microcontrolador. El CB tiene señales básicas como selector de lectura (RD) , selector de escritura (WR), habilitador de salidas (OE) , selector de chip (CS), etc. Acceso Serial: Para acceder a un registro se necesita acceder antes a los anteriores. O sea para que se lea un dato es necesario leer todos los bits de los datos previos. La velocidad de acceso varia según la posición del registro. Exteriormente tiene pocas líneas de control. En forma serial se indican los comandos para indicarle a la memoria que operación se le aplicada, el clock maestro (CK) marca el tiempo

28

de cada bit. Cada palabra entra o sale bit por bit por la misma línea (D). Se cuentan los bits para saber cuando comienza y termina cada palabra, y así saber en que número de registro se está leyendo. Depende de la memoria en particular si se deben guarda los datos leídos en algún otro sitio. Las lineas S0 y S1 habilitan el funcionamiento del chip. Básicamente tienen una memoria RAM interna y una interfase de comunicación serial. Su control es complejo y requieren de un procesador o similar para manejarlas. Se usan como memorias externas al chip del microcontrolador, debido a que necesita dedicar pocos pines del mismo para controlarla.

que necesita dedicar pocos pines del mismo para controlarla. Método físico de almacenamiento ROM Memorias que

Método físico de almacenamiento

ROM Memorias que no pierden los datos por falta de alimentación. Originalmente se grababan los datos durante el proceso de fabricación de la memoria. PROM Se graban una vez y después no se pueden alterar. En una matriz de fusibles, grabarla es quemar los fusibles deseados. UV-EPROM Se graban eléctricamente los datos, se puede borrar con luz ultravioleta y volver a grabar. Se borra toda la memoria junta a través de una ventana en el chip. EEPROM Se graban y borran eléctricamente. Antes de re-escribirlas hay que borrarlas. FLASH-EPROM Se graban eléctricamente y se pueden re-escribir sin necesidad de borrarlas previamente. Las tensiones de escritura y borrado de memoria han bajado con el avance de la tecnología. Las primeras necesitaban pulsos de 26 volts, hoy en día la tecnología permite que se graben con 3,3 volts y se sigue bajando. Consume menos y es más pequeña que las EPROM, además de programable en el circuito. Es más rápida, de mayor densidad y tolera más ciclos de escritura/borrado que la EEPROM. Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar el circuito integrado de la tarjeta. La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto. OTP-ROM Son memorias que se pueden grabar una sola vez. Son PROM modernas, tiene su fuerte en el bajo precio para la fabricación en grandes cantidades. RAM Memorias que pierden los datos almacenados si se pierde la alimentación. ESTATICAS Después de escritas si no desaparece la alimentación conservan el dato. Los registros están formados por FF o cerrojos. DINAMICAS Es necesario ir re-escribiendo o refrescando los datos guardados para que no se le borren. La información se guarda en condensadores, los cuales pierden carga con el tiempo. Algunos modelos incluyen circuitería para refrescar los datos si no se le está utilizando. Su ventaja radica en el poco espacio que ocupan, permitiendo grandes densidades.

29

BOLILLA II: MICROCONTROLADORES

Descripción y Características

Son sistemas que contienen un procesador y demas dispositivos neceasarios para su funcionamiento. Los procesadores son dispositivos electrónicos digitales sincrónicos programables que para funcionar necesitan, además de alimentación y señales externas, un programa, el cual contiene las instrucciones o comandos a seguir.

Bloques Principales

En su descripción se observa que son una evolución de los circuitos digitales combinacionales y secuenciales. La gran ventaja de los procesadores frente a los automatas y maquinas de estado es que la orden o señales de seleccion de secuencia se codifican en la memoria ROM del sistema. Lee el comando desde la memoria y determina cual secuencia debe ejecutar. El núcleo interno es el procesador. El externo delimita al controlador. Se lo define como micro cuando esta integrado todo en un solo chip. Sus partes principales son:

integrado todo en un solo chip. Sus partes principales son: Bloque de control - Es la

Bloque de control- Es la seccion mas importante del sistema. En la mayoria de los diagramas de bloques de los procesadores no se dibuja. Pero cuanto más complejo es, más funciones tiene el dispositivo. El bloque de control es un generador de secuencias, (automata programable), la misma es seleccionada segun varias señales o bit. Las diferentes secuencias que puede generar son la microprogramacion del procesador, determinadas durante el diseño del procesador. A todos los elementos del sistema les llegan señales de control. ALU- Unidad encargada de todas las operaciones lógicas-matemáticas. Es un circuito combinacional sin capacidad de almacenamiento. Consta de dos entradas de operandos, varias lineas de seleccion de funcion

y dos salida, una para el resultado y otra de indicadores de la clase de resultado. Para poder operar, a la ALU se le asocia Acumulador, Banderines y líneas de control. Según la cantidad de bit de las entradas se clasifica al procesador. Memoria de programa Dispositivo donde se almacenan ordenadas las instrucciones a seguir. Es una

memoria ROM Memoria de trabajo Dispositivo donde se puede escribir y leer para guardar cualquier dato variable durante la ejecución del programa. Es una memoria RAM. Registros internos Dispositivos para guardar información o datos importantes, de mayor frecuencia de uso

o configuración de funcionamiento. Pueden formar parte o no del mapa de memoria RAM.

29

Acumulador Registro que actúa en conjunto con la ALU. Le suministra uno de los operandos o es el destino de su resultado. La mayoría de las instrucciones lo usan como destino o fuente de datos. Banderines son indicadores sobre la clase de resultado. Se almacenan en el registro de estado del programa PSW. También puede guardar información sobre el estado del programa. Bus de Datos -DB. Líneas físicas que interconectan todos los elementos que manejan datos en el sistema. Es una forma optima de poder interconectar varios dispositivos que manejen datos. Se multiplexa en el tiempo quien usa este bus (Registros Internos, ALU, Memoria, Perifericos, etc)) Bus de Direcciones -AB. Líneas físicas que llevan la información para seleccionar el registro de la memoria con que se va a trabajar o cual puerto periférico activar Bus de Control -CB. Líneas físicas que llevan las señales que se encargan de comandar el funcionamiento de cada elemento. Aunque cada bit del bus tiene diferente significado o destino, igual comparten la finalidad de controlar. Registro de Instrucciones En el se guarda la instrucción mientras se la interpreta e implementa la secuencia de acciones a realizar. Contador de Programa Registro que guarda la posición de la próxima instrucción a ejecutar. Tiene la capacidad de incrementar, decrementar o cargarse con un valor particular. Registro de Direcciones Registro donde se guarda la información sobre la posición de memoria o periferico con la cual se esta trabajando. De él nace el AB. Periféricos Dispositivos que comunican el sistema con el mundo exterior.

Características Generales

Los microcontroladores son dispositivos electrónicos digitales sincrónicos programables que para funcionar además de alimentación y señales de entrada necesitan un programa para ejecutar Son electrónicos por la tecnología de aplicación. Son digitales por que manejan señales discretas, es decir con niveles cuantificados o pre-establecidos. En este caso solo dos posible (1 o 0). Por lo tanto, la escritura de una salida o lectura de una entrada es solo para alguno de estos valores. Son sincrónicos debido a que todas sus acciones están acompasadas por una oscilación de referencia o señal de RELOJ (CK). Son programables pues su estado depende de las señales de entrada y su estado previo. La gran ventaja de los procesadores frente a los automatas y maquinas de estado es que la orden o señales de seleccion de secuencia se codifican en la memoria ROM del sistema, a este conjunto de ordenes se les llama programa. Al programa lo ejecutan una instrucción por vez, pero algunos procesan más de una al mismo tiempo. En tal caso superponen la ejecución de una instrucción, con la búsqueda y almacenaje en el Registro de Instrucciones de la siguiente (pipeline). Pueden verificar una condición y determinar entre dos posibles respuestas. Ahí es donde se presenta la aparente inteligencia de un micro. Trabajan con baja tensión y corriente, por eso la necesidad de periféricos y drivers para interactuar con el universo.

Los micros manejan múltiples señales de las cuales las más comunes son:

OSC. Señal de oscilación generada dentro o fuera del sistema para funcionamiento del mismo. CLK, CK o reloj. Sincroniza todas las acciones de los dispositivos internos o externos al chip. Interrupción. Señal externa al procesador que avisa de la ocurrencia de un evento. Solicita al micro ejecutar una subrutina particular en respuesta. No todos los micros pueden manejar interrupciones. DMA. Señal que le solicita al micro dejar en alta impedancia los buses, para ser utilizados por otro elemento, modulo o chip. RST o reset. Señal que indica al micro inicializarse. Reinicia sus contadores y comienza el programa desde el principio nuevamente. Puede o no borrar el contenido de los registros internos. TXD y RXD. Son señales de transmisión serial: TXD de envío y RXD de recepción de datos.

Ejemplos de señales de OSC y CLK:

Para el 8080 se necesita dos señales de oscilador de diferente en fase y ciclo de trabajo.

30

de señales de OSC y CLK: Para el 8080 se necesita dos señales de oscilador de

Para el 8088 se necesita una señal CLK con un ciclo de trabajo del 33%

se necesita una señal CLK con un ciclo de trabajo del 33% Para el 8085 se

Para el 8085 se utiliza una señal del 50% de ciclo de trabajo en OSC y entrega un CLK de la mitad de frecuencia

Para el PIC16F628A se necesita una señal del 50% de ciclo de trabajo y entrega un CLK de un cuarto de frecuencia.

de trabajo y entrega un CLK de un cuarto de frecuencia. La señal interna de reloj

La señal interna de reloj del procesador es siempre de mayor frecuencia que la suministrada al sistema. Esto permite al procesador que en cada ciclo máquina (periodo de CLK) se lleve a cabo varias acciones, mientras que el sistema realiza una sola. El micro puede ser considerado un complejo cúmulo de flipflop y puertas lógicas.

Funcionamiento Básico

Cuando es energizado se debe mantener en estado de reset hasta que la tensión de funcionamiento sea alcanzada. El reset puede ser generado con circuitos externos o internos al chip. Cuando sale de reset el procesador lee la posición de memoria ROM llamada Vector de Inicio. En esta posición se encuentra la primera instrucción a ejecutar. Para esto carga el PC con el valor del vector de reset, copia el PC en el Registro de direcciones, que lo vuelca al AB. Habilita el DB entre la memoria ROM y el registro de instrucciones (IR). Envia la señal de lectura a la ROM y de escritura en el IR. Esta acción se llama FETCH. Una vez hecho esto incrementa en uno el PC, apuntando este a donde se encuentra la siguiente instrucción a ejecutar. El bloque de control la decodifica y ejecuta los pasos indicados por esa instrucción. Genera la secuencia indicada. Esta acción se llama EJECUCION. La búsqueda (fetch) y ejecución de una instrucción se llama ciclo de instrucción. El ciclo de instruccion puede variar de una instruccion a otra, si la instruccion ocupa más de un aposicion de ROM se realizan todos los FETCH necesarios para cargarla completamente. La señal de reloj CK se genera a partir de la señal OSC del oscilador del sistema. Algunos micros necesitan dos señales de oscilador externas y otros las generan dentro del chip (oscilador interno). La duración de un ciclo de instrucción depende de la clase de instrucción a ejecutar y del micro en particular. El bloque de control se une a todos los elementos del sistema mediante el bus de control. Dirige todas las acciones de los componentes del micro. También dirige las acciones de los dispositivos del sistema. Por comodidad solo se dibuja la sección más relevante. Mediante el contador de programa (PC) se sabe que instrucción ejecutara a continuación. La memoria es direccionada por el registro de direcciones, que se conecta por el bus de direcciones, e intercambia datos mediante el bus de datos. La conexión hacia el exterior ya sea para tomar o entregar datos se realiza a través de los periféricos. Estos sirven de acopladores entre el microsistema y el exterior. Según cuantas partes estén dentro de un solo chip se habla de procesador, microprocesador o microcontrolador.

31

Clasificación

Se clasifican:

Según la cantidad de bit de los datos que maneja su ALU. Pueden ser de micros 8, 10, 16, 32, 64, etc bits.

Según la arquitectura u organización de la memoria del sistema:

-VON NEWMAN se usa un solo bus de datos y direcciones para la memoria de datos y programa. -HARVARD cada área de memoria tiene su bus de datos y de direcciones.

ROM

RAM

VON NEWMAN

Bus de Datos - DB
Bus de Datos - DB
Bus de Direcciones - AB
Bus de Direcciones - AB

CPU

Bus de Control - CB
Bus de Control - CB

HARVARD

Bus de Control - CB ROM RAM CPU DBram ABrom Bus de Dir. ROM Bus
Bus de Control - CB
ROM
RAM
CPU
DBram
ABrom
Bus de Dir. ROM
Bus de Datos RAM
Bus de Instrucciones
DBrom
Bus de Dir. RAM
ABram

Según la estructura o arquitectura del sistema también pueden ser ARQUITECTURA CERRADA o ARQUITECTURA ABIERTA. En los micros de arquitectura cerrada su sistema solo se puede tener los elementos que el fabricante suministra. No es posible agregarle RAM, ROM, u otros periféricos. Los de arquitectura abierta pueden formar sistemas de varias configuraciones de RAM, ROM o periféricos. La diferencia está en si el micro tiene o no los buses accesible al usuario. Esto influye directamente en el número de patillas del chip, por cada línea del bus se necesita una patilla o pin.

Según el set de instrucciones. Estas son determinadas por el fabricante para cada componente o su familia. Aunque la denominación se hace en referencia a las instrucciones, también implica la tecnología de fabricación y la filosofía de diseño del chip. CISC- Complex Instruction Set Computer. Conjunto de muchas instrucciones complejas, potentes y hasta redundantes. RISC- Reduced Instruction Set Computer. Conjunto de pocas instrucciones, generalmente básicas. Muchos parámetros están definidos por defecto por ejemplo uno de los operandos y el destino de la operación. SISC- Specific Instruction Set Computer. Conjunto de instrucciones que además de ser reducido es especifico al uso del procesador. VLIW- Very Large Instruction Word. Conjunto de instrucciones muy complejas. Cada instrucción define todos los parámetros de funcionamiento. Sustituye a muchas instrucciones de un sistema RISC.

Según la cantidad de memoria del sistema. La cantidad de memoria ROM nos habla de lo complejo que podrá ser el programa y la cantidad de memoria RAM la capacidad de manejar variables.

El micro que estudiaremos será el PIC16F628A. Es un microcontrolador con CPU de 8 bit, arquitectura Harvard cerrada y un set de instrucciones reducido (RISC).

32

P I C 1 6 F 6 2 8 A

Características y Patillaje

Microcontrolador fabricado por Microchip. Es un dispositivo de la gama media. Internamente tiene una CPU con arquitectura HARVARD y tecnología RISC de alto rendimiento.

Sus características principales son:

*Set de instrucciones reducidas a 35 grupos.

*Todas las instrucciones se ejecutan en un ciclo de maquina, excepto los saltos que se ejecutan en 2 ciclos. *Velocidad de funcionamiento: DC a frecuencia máxima indicada por el fabricante. *Memoria de Programa FLASH-ROM de 2048 palabras de 14 bits *Memoria de Datos RAM de 224 bytes *Memoria de Datos EEPROM de 128 bytes *Todas las instrucciones son de una sola palabra de 14 bits *Datos de 8 bit *Registros internos mapeados en la RAM *Pila por hardware de 8 niveles exclusivamente para el PC *Modos de Direccionamiento Inherente Inmediato, Directo, Indirecto y Relativo *10 Fuentes de Interrupción:

- Externa pin RB0/INT

- Desborde del TMR0

- Cambio de nivel en PORTB<4:7>

- Terminación del ciclo de escritura en EEPROM

- Cambios en los comparadores

- Recepción de un dato en la USART

- Transmisión de un dato en la USART

- Modulo CCP

- Desborde del TMR1

- Recarga del TMR2

*16 patillas de entrada/salida con control de dirección individual

* Alta corriente de fuente/sumidero para manejo directo de LED

- Corriente de Sumidero 25 mA máx. por pin

- Corriente de Fuente 25 mA máx. por pin

*Periféricos

- 2 puertos de 8 bit

- TMR0 contador/temporizador de 8 bit

- TMR1 contador/temporizador de 16 bit

- TMR2 temporizador recargable de 8 bit

- Modulo de comparación, captura y modulación PWM

- 2 comparadores analógicos

- Modulo de voltaje de referencia

- Interfase de comunicación serial

- Memoria EEPROM

Características Especiales del Microcontrolador:

* Memoria de Datos EEPROM con 1:000.000 de ciclos de borrado/escritura

* Retención de Datos EEPROM mayor a 40 años

* (ICSP™) Circuito de Programación Serial Interno - vía 3 pin

* Reset al energizar (POR)

* Retardo al encender (PWRT)

* Retardo de arranque del Oscilador (OST)

* Reset de arranque en caliente (BOR)

* Vigilante (WDT) con su propio oscilador RC interno para un funcionamiento confiable

* Protección de Código de ROM y EEPROM por separado

* Módulo completo de oscilador con 8 modos de funcionamiento *Oscilador interno de 4Mhz calibradoal 1% *Oscilador interno de 48Khz de bajo consumo

* Tecnología de bajo consumo, alta velocidad

* Modo de bajo consumo (SLEEP) economizador de energía

* Diseño totalmente estático que permite detener el OSC

* Amplio rango de voltaje de operación: 2.0V a 5.5V

33

Patillaje

Patillaje PIN Nombres DESCRIPCIÓN I/O 17 RA0 Bit 0 del Puerto A Bidireccional AN0 Entrada

PIN

Nombres

DESCRIPCIÓN

I/O

17

RA0

Bit 0 del Puerto A

Bidireccional

AN0

Entrada (-) del comparador 1

Entrada

18

RA1

Bit 1 del Puerto A

Bidireccional

AN1

Entrada (-) del comparador 2

Entrada

 

RA2

Bit 2 del Puerto A

Bidireccional

1

AN2

Entrada (+) del comparador 2

Entrada

Vref

Salida analógica del modulo de referencia de voltaje.

Salida

 

RA3

Bit 3 del puerto A

Bidireccional

2

AN3

Entrada (+) del comparador 1

Entrada

CMP1

Salida del comparador 1

Salida

 

RA4

Bit 4 del Puerto A. Salida de colector abierto

Bidireccional

3

T0CKI

Entrada de reloj del Timer0

Entrada

CMP2

Salida del comparador 2 (colector abierto)

Salida

 

RA5

Bit 5 del Puerto A

Entrada

MCLR

Cuando esta configurado como Reset Maestro un cero en este

 

4

terminal fuerza el estado de RESET en el micro. Su nivel alto no debe exceder a Vdd

Entrada

Vpp

Entrada de tensión de programación

Entrada

 

RA6

Bit 6 del Puerto A

Bidireccional

OSC2

Conexión para un cristal o resonador al oscilador en modo HS, XT

Entrada

15

o

LP

CLKOUT

Salida de señal de Reloj CK para el oscilador en modo RC o INTOSC a ¼ de la frecuencia de oscilación en OSC1.

Salida

 

RA7

Bit 7 del Puerto A

Bidireccional

OSC1

Conexión para un cristal o resonador al oscilador en modo HS, XT

Entrada

16

o

LP.

CLKIN

Conexión del puente RC al oscilador en modo RC o entrada de oscilación externa en modo HS, XT o LP

Entrada

6

RB0

Bit 0 del Puerto B

Bidireccional

INT

Entrada de interrupción por flanco

Entrada

 

RB1

Bit 1 del Puerto B

Bidireccional

7

RX

<