como programar un microcontrolador

Páginas: 12 (2943 palabras) Publicado: 31 de mayo de 2013
Ensamblador y C para Microcontroladores de la familia ATMEL
• Programación básica en Ensamblador con control automático
101. Activar un LED
o Diagrama a bloques del Puerto D:

El Puerto D (como la mayoría de los puertos) tiene un bloque de “drivers/buffers” que nos permite trabajar en forma
bidireccional y una “interface digital” que nos permite configurar la dirección de cada uno de lospines del puerto.
Cada bit del puerto puede configurarse como Entrada (con un “0” lógico en el registro DDRD que es la opción que
está por default) o configurarse como Salida (con un “1” lógico en el mismo registro DDRD).
Por ejemplo: Cuando DDRD = $0F, el Puerto D en su MSN = Entradas y el LSN = Salidas.
Como al Puerto D completo lo usaremos como salidas para esta parte del curso, entonces DDRD= $FF

Aplicaciones:
- Comprender las partes del entorno de desarrollo AVR Studio
- Conocer como inicializar un puerto para que trabaje como salidas
- Experimentar con la activación de bits en un puerto de salida
- Aplicar un programa principal (MAIN) para que se ejecute siempre
- Activar un motor de DC o AC (por medio de un relevador o tiristor)
- Encender la luz de un semáforo
- Hacersonar una alarma

 
 
701 ASM y C para µC ATMEL (1° Parcial) v0.2

Página 1 de 34

 
SCS

Posibles soluciones: Activación directa
Información importante para leer y consultar:
“AVR Assembler User Guide.pdf”
“AVR Instruction Set.pdf”
En el AVRStudio
Menú “Help”
“Assembler Help”
Comandos nuevos importantes:
RJMP (“brincar” a la etiqueta señalada)
OUT (mandar dato al puerto)
LDI(instrucción de carga inmediata)
ETIQUETA: (para saber a donde vamos a “brincar”)
INICIALIZACION DE PUERTOS (para definir los bits que se usarán como salida)
.CSEG (indica donde comienza el programa en la FLASH)
.INCLUDE "M8535DEF.INC" (para definir el µC con el que vamos a trabajar)

Relación del diagrama de flujo con respecto al código anterior:

INICO

.INCLUDE
"M8535DEF.INC".INCLUDE "M8535DEF.INC"

.CSEG

;DEFINICIONES DE REGISTROS
;Y PERIFERICOS DEL uC

.CSEG
LDI
OUT

MAIN:

R16,$FF
DDRD,R16

;DEFINE LAS TERMINALES DEL
;PUERTO D COMO SALIDAS

LDI
OUT

DDRD = $FF

R16,$01
PORTD,R16

;PONER A "1" LÓGICO EL LSB
;DE PUERTO D

RJMP

MAIN

;VOLVER A EMPEZAR

MAIN:
PORTD = $01

 

 
 
701 ASM y C para µC ATMEL (1° Parcial) v0.2Página 2 de 34

 
SCS

102. LED parpadeando
o Retardos:
La forma de implementar un retardo para ensamblador es usando la calculadora implementada en una hoja de
cálculo llamada “Calculo de retardos (delay) ver 5.xls” y solamente copiar y pegar el código que se genera al final de
esta hoja. Por ejemplo, para un oscilador interno de 1 MHz (configuración de fabrica) y un retardo de 300 ms, elcódigo quedaría:
DELAY:
LDI
LDI
LDI

R20, 152 ; CARGAR EL VALOR DE "A"
R21, 134 ; CARGAR EL VALOR DE "B"
R22, 2
; CARGAR EL VALOR DE "C"

LOOP:
DEC
BRNE
DEC
BRNE
DEC
BRNE

R20
LOOP
R21
LOOP
R22
LOOP

; DECREMENTOS ANIDADOS

NOP
NOP

; Ojo: Si aparece "#NOMBRE?" es porque falta instalar desde el menú
; Herramientas -> Complementos... Y seleccionar
; "Herramientaspara análisis"

RET

; RETORNO DE LA SUBRUTINA DESPUES DEL TIEMPO PROGRAMADO

Con esta sub-rutina se hace un ciclo repetitivo que provocaría retardos de 300 ms aproximadamente
Otra cuestión importante es que al hacer uso de subrutinas, debe inicializarse el StackPointer o “SP” para permitirle
al micro poder guardar temporalmente en RAM los registros necesarios al momento de saltar a lasubrutina para
despues recuperarlos y continuar con el programa principal:
.CSEG
LDI
OUT
LDI
OUT

R16,HIGH(RAMEND)
SPH,R16
R16,LOW(RAMEND)
SPL,R16

;INICIALIZACION
;DEL "SP" (SPH:SPL)

Aplicaciones:
- Control ON-OFF automático de un motor de DC o AC (por medio de un relevador o tiristor)
- Encender y apagar un anuncio luminoso
- Remplazo del 555 como astable ó biestable
-...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programador de Microcontroladores
  • Aprender A Programar Microcontroladores Es Muy Fácil
  • 3.1 Programa De Los Microcontroladores
  • Como seleccionar un microcontrolador
  • Ensayo Fpga Como Microcontrolador
  • Como Programar
  • dfd programa como utilizarlo
  • Como Programar en java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS