Módulo Atmel T89C51CC01

Introducción

Esquema y descripción

Programación del sistema

Pasos para la programación y ejecución de programas

Uso del programa Flip

Programa de prueba

Uso del equipo con el entorno Keil uVision2

Anexo

Introducción  WB01624_.gif (281 bytes)

Este manual describe el diseño y la programación de un sistema con microcontrolador compatible con la familia MCS-51 de Intel.

El objetivo del diseño es proporcionar un sistema didáctico sencillo que sea fácil de programar sin el requisito de un programador específico. Para ello se ha elegido un potente microcontrolador de Atmel que permite reprogramación ISP (In-System Programming).

El microcontrolador concreto elegido es un Atmel T89C51CC01 en encapsulado PLCC de 44 pines. Entre sus características cabe destacar:

El diseño incluye exclusivamente la circuitería mínima para tener un sistema microcontrolador totalmente operativo. Al montaje se accede mediante conectores a todos sus puertos así como a las líneas de control más importantes. Está equipado con regulador de alimentación, puertos RS232 y RS485 y referencia de tensión.

El microcontrolador puede ser reprogramado por puerto serie desde un PC, y el nuevo programa puede ser testeado con solo cambiar un switch y resetear. La figura muestra una foto del diseño.

Figura 1. Foto de la placa

Esquema y descripción  WB01624_.gif (281 bytes)

    A continuación se describe el esquemático de la placa.

    La figura muestra el conexionado y componentes mínimos que permiten al micro funcionar. Por una parte, el microcontrolador alimentado a 5 V. y debidamente desacoplado de las fluctuaciones de la corriente en las pistas.

    El circuito oscilador compuesto por un cristal de cuarzo y dos condensadores.

    Y el circuito de reset automático (al alimentar el diseño) y un pulsador que permite reiniciar el micro siempre que se desee.

       

    Figura 2. Microcontrolador alimentado, circuito de reloj y circuito de reset.

    La figura muestra los conectores que permiten acceder a los pines de los puertos del microcontrolador. Cada puerto dispone de un conector independiente que provee también dos pines con +Vcc y Vgnd que permiten alimentar una placa externa. Uno de los conectores permite el acceso a otras líneas útiles, como son: ALE, PSEN, RD, WR y entrada del convertidor AD). La figura muestra el tipo de conector empleado visto desde arriba y los cables.

    Figura 3. Conectores.

     

    Figura 4. Planta del conector y cable

    En el puerto P3.5 se ha conectado un led. Ello permite hacer pequeñas comprobaciones de que la placa funciona y utilizarlo como diagnóstico en los programas. El led luce cuando por el correspondiente pin hay un "1".

    Figura 5. Planta del conector y cable

    Para utilizar el conversor AD del microcontrolador se ha incluido en la placa una referencia de tensión (ver figura).

    Figura 6. Referencia de tensión para el conversor AD del micro.

    El módulo dispone de dos sistemas de comunicación serie estándar, una conexión RS-232 y una conexión industrial RS-485. El bloque de transmisión serie por protocolo RS232 se ha implementado con transceiver MAX232 y conector DB-9 (macho/hembra) y se comporta como equipo DCE. El bloque de transmisión RS485 se basa en un SN75176 y se ha provisto de una resistencia terminadora con jumper para poder configurares fácilmente con módulo fin de par trenzado.

     

    Figura 7. Adaptadores serie para RS-232 y RS-485.

    Un dip switch de 5 contactos permite seleccionar la interfaz serie a utilizar entre RS232 y/o RS485. También permite conectar la resistencia terminadora.

    Figura 8. Selector de configuración de las comunicaciones serie.

    Este es un dip-switch de dos contactos. Es el que permitirá cambiar a modo programación o ejecutar el programa (desde memoria interna o externa).

    Figura 9. Selector de modo de programación y de ejecución externa/interna.

    Para alimentar el módulo y los periféricos se dispone de una conexión en la placa a la que se deberá conectar una señal contínua entre 8 y 12 voltios, sin importar su polaridad. La figura muestra el conjunto de puente y regulador que permite este rango de tensión.

    Figura 10. Circuito de alimentación.

Programación del sistema  WB01624_.gif (281 bytes)

El microcontrolador T89C51CC01 dispone de una flash-EPROM interna de 32Kbytes de memoria de programa donde se pueden grabar nuestras aplicaciones.

Esta familia de micros incluye un cargador interno que permite una fácil grabación de los programas a través de la conexión serie y sin necesidad de desmontar el micro de la placa (In-System Programming).

Para programar el micro de la placa basta un PC con conexión RS-232, un cable serie, el ejecutable a grabar en formato Intel-HEX y el software de grabación suministrado por Atmel.

Concretamente los requisitos son:

Hardware:

Software:

Pasos para la programación y ejecución de programas  WB01624_.gif (281 bytes)

Para la programación de la placa se deberán seguir los pasos siguientes:

  1. Conectar el cable serie al PC y a la placa (teniendo en cuenta si se conecta a COM1 o COM2).
  2. Alimentar la placa. Deberían brillar el led de alimentación y el conectado a P3.5.
  3. Configurar los switches en modo de programación
    PSEN = 0, y EA = 1
  4. Pulsar el RESET. La placa entra en modo programación.
  5. Grabar/borrar/verificar/etc. la memoria de programa con el FLIP.
  6. Configurar los switches en modo ejecución
    PSEN = 1, y EA = 1
  7. Pulsar el RESET. La placa empieza a ejecutar el programa grabado.

Uso del programa Flip WB01624_.gif (281 bytes)

En programa Flip se emplea para reprogramar diferentes dispositivos de la empresa Atmel. En este caso lo utilizamos para reprogramar el micro de la placa.

A continuación se explican los pasos a seguir para reprogramar la placa.

NOTA: Se supone cristal oscilador del micro de 12 Mhz.

  1. Asegurarse de que la placa está conectada y en modo programación.
  2. Ejecutar el programa Flip.exe. La aplicación tiene el siguiente aspecto.
  3. Seleccionar el tipo de dispositivo a programar.
  4. Menú: Device --> Select --> T89C51CC001

  5. Configurar y activar la conexión serie.
  6. Menú: Settings --> Communication --> RS232

    Port: COM1 ó COM2

    Baud: 9600

    Pulsar "Connect"

    Si todo va bien se establece la comunicación y se presenta un informe del micro.

    Después de un intento de comunicación fallido el microcontrolador debe ser reseteado.

  7. Cargar en el "buffer" de Flip el programa a grabar. Es necesario un fichero en formato Intel HEX.
  8. Menú: File --> Load HEX...

  9. Establecer la configuración del grabador en la ventana principal de Flip.
  10. Marcar: Erase, Blank Check, Program y Verify.

  11. Pulsar el botón "Run".
  12. Pasar la placa a modo programación y pulsar reset. El programa empezará a ejecutarse.

 

Programa de prueba WB01624_.gif (281 bytes)

    A continuación se proporciona un listado en formato Intel-HEX de un programa que hace parpadear el led conectado a P3.5. El programa permite comprobar que la placa funciona.

    :10000000B2B512000780F978FF79FF000000D9FB34
    :03001000D8F722FC
    :00000001FF

    El programa se deberá copiar en un editor de texto y grabar con extensión .hex. Se puede utilizar el "edit" de DOS o el "Bloc de notas" de Windows.

    A continuación se proporciona el listado ensamblador correspondiente al programa.

    P3_5 equ 0B0H.5

    org 0

    bucle: CPL 0B5h

    LCALL reta

    SJMP bucle

    reta: MOV R0,#255

    B1: MOV R1,#255

    B2: NOP

    NOP

    NOP

    DJNZ R1,B2

    DJNZ R0,B1

    RET

    END

Uso del equipo con el entorno Keil uVision2  WB01624_.gif (281 bytes)

    Accediendo al menú de "Inicio", buscaremos dentro de la opción "Programas" la entrada para arrancar nuestro programa: "Keil uVision2". Obteniendo la pantalla siguiente:

    Para empezar debemos cerrar el proyecto que se abre por defecto usando el menú "Project->Close project".

    Ahora deberemos crear un proyecto nuevo. Para ello, accederemos al menú "Project" y escogeremos la opción "New Project…", donde nos aparecerá una ventana para dar nombre al proyecto e indicar dónde se almacenará. Deberemos crear un nueva carpeta en dicha ventana de diálogo, entrar en ella y guardar el proyecto.

    Posteriormente nos aparecerá la base de datos de dispositivos para que le indiquemos de todos los posibles microcontroladores para los que es capaz de generar código máquina este entorno, cuál es el que nos interesa. Escogeremos la opción "Atmel" y el modelo de microcontrolador "T89C51CC01", tal y como se muestra en la figura:

    Tras aceptar esta opción el programa realizará la siguiente pregunta:

    Nosotros deberemos responder "No", ya que no precisamos que se añada código de inicialización al programa. Si se quiere entender mejor esta opción, consúltese el manual interactivo que proporciona el entorno.

    Para transferir el código máquina al microcontrolador mediante el programa Flip (práctica anterior), necesitaremos generar un fichero hexadecimal (con extensión ".hex"). Por ello, deberemos configurar esta opción accediendo al menú "Project" y escogiendo la opción "Options for Target ‘Target 1’. Seguidamente nos aparecerá una ventana con varias carpetas, nosotros seleccionaremos "Output" y dentro de ella activaremos la opción indicada como: "Create HEX File".

    En la pestaña A51 se deberá desmarcar también la casilla "define SFR names".

    Ahora que ya tenemos creado y configurado el Proyecto, deberemos crear un módulo donde desarrollaremos nuestro programa. Para ello, seleccionaremos en el menú "File" la opción "New".

    Los módulos del programa se pueden desarrollar en C o en ensamblador indistintamente. Para que el entorno sepa si se trata de uno u otro, deberemos grabar el nuevo módulo con extensión .c o .asm respectivamente.Para ello seleccionaremos en el menú "File" la opción "Save" y le daremos un nombre a la práctica y grabaremos en disco. Es importante a la hora de grabar el programa darle la extensión ".c".o ".asm".

    El siguiente paso consiste en asignar el fichero con el programa en el lenguaje elegido al proyecto. Esto lo haremos con el menú "Project" opción "Targets, Groups, Files…". Se abrirá una ventana en la que seleccionaremos la carpeta "Groups/Add Files":

     

     

    En esta ventana seleccionaremos la línea que aparezca en la parte inferior dentro del epígrafe "Available Groups". Seguidamente, y con el grupo seleccionado le pincharemos la opción "Add Files to group…" y nos aparecerá una ventana en la que deberemos buscar y seleccionar nuestro módulo con el código en lenguaje elegido y que habremos grabado con la extensión adecuada.

     

    Una vez completadas con éxito las operaciones anteriores, procederemos a grabar nuevamente todo el proyecto, accediendo al menú "File" opción "Save All".

    A continuación deberemos compilar nuestro programa para generar el código máquina y nuestro correspondiente fichero hexadecimal. Esto lo haremos accediendo al menú "Project" y escogeremos la opción "Build target". Si todos los pasos han sido satisfactorios se habrá generado el correspondiente fichero hexadecimal y no se habrán producido errores de compilación. La ventana que se genera indicando que no hay errores debe ser algo parecido a la siguiente:

    El siguiente paso consiste en transferir el programa a la placa microcontrolador. Para ello, usando el programa Flip, dentro del menú "File" escogeremos la opción "Load HEX…", buscando el directorio donde tengamos almacenado el fichero hexadecimal generado anteriormente.

     

Anexo  WB01624_.gif (281 bytes)

Listado de componentes

 

Item

Cantidad

Referencia

Componente

1

2

C2,C1 33nF

2

1

C3 100uF

3

3

C4,C6,C12 100n

4

6

C5,C7,C8,C9,C13,C14 10uF

5

2

C10,C11 2.2nF

6

1

D1 puente de diodos 1A

7

2

D4,D2 Led

8

1

D3 Regulador de tensión 3.3V

9

2

JP3,JP1 Conector atornillable 2 pines

10

3

J6,J7,J8,J9,J10 molex 10 pines vertical

11

1

P1 CONECTOR DB9 hembra acodado

12

2

Q1,Q2 BC547

13

1

R1 R330

14

  R3,R11 1K

15

1

R4 15K

16

2

R5,R6 47

17

2

R7,R8 4K7

18

1

R9 1K5

19

1

R10 120

20

1

R12 330

21

1

SW1 micropulsador

22

1

SW3 SW DIP-5

23

1

SW4 SW DIP-2

24

1

U1 AT89C51CC01/PLCC44 + zocalo

25

1

U3 L7805/TO220

26

1

U5 MAX232 + zocalo

27

1

U6 SN75176 + zocalo

28

1

Y2 12 MHz + zocalo