SlideShare una empresa de Scribd logo
1 de 12
Programación delmicroatmega328p en ensamblador.Comocargar
programas en proteusde Atmel Studio 7 a Arduino UNO y ejemplo
en ensamblador
Este instructivoesútil cuandonecesitamos desarrollarprogramasque utilizancaracterísticasmás
avanzadasy poderprogramarloenlenguaje ensamblador.
Se integralascapacidadesde programaciónmediante USBde nuestratarjeta.Para hacereso
utilizaremos"avrdude.exe"ylaopción"external tools"de AtmelStudio
Primerodebemosinstalar
 ArduinoIDE
 Atmel Studio
Paso 1: ConfigurandoAtmel Studio
Ahoraconecta tu ArduinoUNOa tu PC y esperaa que se instalenloscontroladores. Cuando
termine,toma nota de cual puerto está utilizando. Para mi caso esel COM4.
Ahora:
1. Una vez abiertoAtmel Studiode clickenel menú"toos/externaltools"yse abrirá un
cuadro de dialogodonde se nospedirállenaralgunosparámetros.
2. En title escribir"Sendto ArduinoUNO"o el nombre que quieras.
3. En command escribir"C:ProgramFiles
(x86)Arduinohardwaretoolsavrbinavrdude.exe"
4. En arguments escribir" -C"C:ProgramFiles
(x86)Arduinohardwaretoolsavretcavrdude.conf"-patmega328p -carduino -P
COM5 -b 115200 -U flash:w:"$(ProjectDir)Debug$(TargetName).hex":i " En este caso
necesitasreemplazarel puertoCOMpor el que estésempleando.
Programación en lenguaje ensamblador
Lenguaje ensamblador
El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es
un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que
representan instrucciones básicas para
los computadores, microprocesadores, microcontroladores y otros circuitos
integrados programables. Implementa una representación simbólica de los códigos de
máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y
constituye la representación más directa del código máquina específico para cada arquitectura
legibleporunprogramador.Cada arquitecturade procesadortiene supropiolenguaje ensamblador
que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que
simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las
posicionesdememoriayotrascaracterísticasdel lenguaje.Unlenguajeensambladoresporlotanto
específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la
mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.
.DEVICE
La directivadevice permite al usuariodeciral Ensambladorque dispositivoysobre que código se
va a ejecutar.
Syntax:
DEVICEatmega328p
.ORG
La directivaorg es usadapara indicarel comienzode ladirección,puede serempleadatantopara
códigocomo para dato.
Syntax:
.ORG exprasión
Ejemplo
.ORG 0x00
.INCLUDE
La directivainclude le dice al lenguaje ensambladro AVRque agregue el contenidode unarchivoa
nuestroprograma.
Ejemplo
include "m328pdef.inc"
.EQU
Ésta es utilizadaparadar unvalorconstante a una direcciónfija.
Syntax:
.EQU etiqueta=exprasión
El valorde la expresiónpuede ser enhexadecimal,ejemplo:
.EQU DATO1 = 0x39 ;numeroenhexadecimal
El valorde la expresiónpuede seren binario,ejemplo:
.EQU DATO2 = 0b00110101 ;Binario(35 en hexadecimal)
El valorde la expresiónpuede seren decimal,ejemplo:
.EQU DATO3 = 39 ;numerodecimal (27en hexadecimal)
El valorde la expresiónpuede seren carácter,ejemplo:
.EQU DATO4 = '2' ;carácter ASCII
Puertosde entrada salida (configuraciones)
Ejemplosde código en ensamblador
Cambiar de estadouna salidacada 500 milisegundos(lalibreríade los delayviene más abajo)
;
; blink_led.asm
;
; Created: 15/02/2017 08:56:19 a. m.
; Author : NoeAdrian
;
.include "m328pdef.inc"
.include "delay.inc" ;Library a de retardos
.device atmega328p
;---------Configuración de puertos ---------------
.ORG 0x00 ; Comienzo del código en la posición 0
;inicializa el SP
LDI R16, HIGH(RAMEND) ; Carga el SPH
OUT SPH, R16
LDI R16, LOW(RAMEND) ;Carga el SPL
OUT SPL, R16
LDI R16, 0xFF ;R16 = 255 o 0b11111111
OUT DDRB,R16 ;Pone como salida el Puerto B
NOP ;Espera un ciclo de reloj
LDI R16, 0b00100000 ;R16 = 0b00100000
OUT PORTB, R16 ;Enciende el led
Start:
LDI R16, 0b00100000 ;R16 = 0b00100000
OUT PORTB, R16 ; enciende el led
call delay_500ms ;Retado de 500 milisegundos
LDI R16, 0b00000000 ;R16 = 0b0000000
OUT PORTB, R16 ; enciende el led
call delay_500ms ;Retado de 500 milisegundos
jmp Start
Instruccionesempleadas
;K Valor
LDI Rd, K ;Carga el registro Rd con el valor K
IN Rd, PINn ;Carga el valor de un registro como PINn a Rd
OUT PORTn, Rd ;Carga Rd a PORTn. Es empleada para mandar algún
valor a un puerto
JMP k ;Salta a la dirección k. En este caso la etiqueta start
Cambiar de estadouna salidaPD0 mediante cada que se pone en alto la entrada PB0
.include "m328pdef.inc"
.include "delay.inc"
.device atmega328p
;---------Configuración de puertos ---------------
.ORG 0x00 ;Comienzo del código en la posición 0
; Inicializa el SP
LDI R16, HIGH(RAMEND) ; Carga el SPH
OUT SPH, R16
LDI R16, LOW(RAMEND) ;Carga el SPL
OUT SPL, R16
LDI R16, 0x00 ;R16 = 0
OUT DDRB,R16 ;Pone como entrada el Puerto B
NOP ;Espera un ciclo de reloj
LDI R16, 0xFF ;R16 = 0x0FF
OUT DDRD,R16 ;Pone como salida el Puerto B
NOP ;Espera un ciclo de reloj
LDI R16,0xFF ;Pone resistencia de pull up
OUT PORTB, R16 ;Pone en cero el puerto b
start:
sbis PINB,0 ;Salta la siguiente línea si PB0 es 1
jmp continuar1 ;salta a continuar1
call delay_100ms ;espera 100 milisegundos para
evitar rebotes
call delay_100ms ;espera 100 milisegundos para
evitar rebotes
call delay_100ms ;espera 100 milisegundos para
evitar rebotes
sbis PIND,0 ;Salta la siguiente línea si PD0
es 1
jmp escero ;Salta a escero
ldi r17,0b00000000 ;r17=0
out PORTD,r17 ;PORTD = r17
jmp continuar1 ;Salta a continuar1
escero:
ldi r17,0b00000001 ;r17=1
out PORTD,r17 ;PORTD = r17
continuar1:
jmp start
Como crear una subrutinade retardo
Para este caso lasubrutinaestáenotro archivoel cual nombraremosdelay.inc
1. Damos clickderechoenel nombre del proyecto
2. ClickenAdd/new ítem...
3. Seleccionamosincludefile ynombramosel archivo
4. Una vez creadahay que añadirla libreríacon .include
;------------------------- subrutina de retardo delay_10ms --------------
-------------------
.ORG 0x300 ;coloca la rutina de retardo en la dirección
0x300
dealy_10ms:
ldi r17,99 ; 1 ciclo
repetir1:
ldi r18,199 ; 1 ciclo
repetir:
nop ; 1 ciclo
nop ; 1 ciclo
nop ; 1 ciclo
nop ; 1 ciclo
nop ; 1 ciclo
dec r18 ; 1 ciclo
brne repetir ; 2 ciclos
dec r17 ; 1 ciclo
brne repetir1 ; 2 ciclos
ret ; 5 ciclo
Instruccionesempleadas
;K Valor
LDI Rd, K ;Carga el registro Rd con el valor K.
NOP ;No hace ninguna operación.
DEC Rd ;Carga Rd = Rd-1.
BRNE k ;Salta a la dirección k +1. En si el valor no es cero o
z=0.
RET ;regresa a la dirección donde fue llamada + 1.
¿Cómose calculó?
Buenoenprimerlugarse utilizóunafrecuenciade trabajode 16 MHz por loque
(1/(16x10^6))(1+1+100(200(8))+4))=0.01 seg= 10 ms
Se repite primero100 vecespor 200 veces8 ciclosque sonlosnop,dec y brne.
Si se utilizaotrafrecuenciade trabajoparael micro se deberáhaceruna subrutinaparecidapero
adecuadaa la frecuenciade trabajo.
Con estopodemosrealizar una nueva rutina de 100ms repitiendo10 vecesla subrutina de 10ms
y de la misma manera podemoscrear más.
Ejemplo
/*
* delay.inc
*
* Created: 15/02/2017 12:17:22 p. m.
* Author: NoeAdrian
*/
;----------------------Esta es la subrutina de retardo dalay_500ms -----
--------------------
.ORG 0x300 ;coloca la rutina de retardo en la dirección
0x300
delay_500ms:
call delay_100ms
call delay_100ms
call delay_100ms
call delay_100ms
call delay_100ms
ret
;----------------------Esta es la subrutina de retardo delay_100ms -----
--------------------
delay_100ms:
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
call delay_10ms
ret
;----------------------Esta es la subrutina de retardo delay_10ms ------
-------------------
delay_10ms:
ldi r17,99 ; 1 ciclo
repetir1:
ldi r18,199 ; 1 ciclo
repetir:
nop
nop
nop
nop
nop
dec r18 ; 1 ciclo
brne repetir ; 2 ciclos
dec r17 ; 1 ciclo
brne repetir1 ; 2 ciclos
ret
Practica 1
Realizarel unprograma que mediante unbotónconectadoal PUERTO B incremente el valorde la
salidadel PUERTO D en1, mostrandoel valorcon undisplay7SEG-BCDsegmentos que vayade 0 a
F.
El códigoserásimuladoenProteus.
Componentes
1. 7SEG-BCD
2. CAPACITOR22pF
3. ATMEGA328P
4. BUTTON
5. CRISTAL
6. RES
Configuracióndel microcontrolador(revisarsuconfiguración,que correspondaconlaimagen).
Al terminarenla práctica se deberáentregarunreporte porcada persona,seráhechoen
computadoray contendrá:
1. Portada
1. Nombre de lainstitución
2. Carrera
3. Semestre
4. Númerode lapráctica, unidadynombre de la práctica
5. Nombre del Alumno
6. Nombre del profesor
7. Lugar y fecha
2. Introducción
3. Objetivos
4. Desarrollo
1. Códigodel programacon comentarios.
2. Fotografíasde los resultadosde lasimulación
5. Conclusiónpersonal
Ayuda
ldi r17,16 ;Se debe poner este registro a 16 para compararlo con el
valor del puerto D
inc r18 ;r18 = r18+1
cp r18,r17 ;compara r18 con r17
breq mayora15 ;si es igual salta a mayora15

Más contenido relacionado

La actualidad más candente

Hoja de datos de 74181 alu
Hoja de datos de 74181 aluHoja de datos de 74181 alu
Hoja de datos de 74181 aluPedro Miranda
 
General Purpose Input Output - Brief Introduction
General Purpose Input Output - Brief IntroductionGeneral Purpose Input Output - Brief Introduction
General Purpose Input Output - Brief IntroductionNEEVEE Technologies
 
digital electronics Design of 101 sequence detector without overlapping for...
digital  electronics Design of 101 sequence detector without  overlapping for...digital  electronics Design of 101 sequence detector without  overlapping for...
digital electronics Design of 101 sequence detector without overlapping for...sanjay kumar pediredla
 
Conversión de decimal fraccionario a hexadecimal y entre
Conversión de decimal fraccionario a hexadecimal y entreConversión de decimal fraccionario a hexadecimal y entre
Conversión de decimal fraccionario a hexadecimal y entreDieguinmc
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
8051 addressing modes
8051 addressing modes8051 addressing modes
8051 addressing modesVima Mali
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De TuringRicardo Quintero
 
Microprocessor 8086 instruction description
Microprocessor 8086 instruction descriptionMicroprocessor 8086 instruction description
Microprocessor 8086 instruction descriptionDheeraj Suri
 
Manual Pic16 F87 X
Manual Pic16 F87 XManual Pic16 F87 X
Manual Pic16 F87 XLuis Zurita
 
Internal architecture-of-8086
Internal architecture-of-8086Internal architecture-of-8086
Internal architecture-of-8086Estiak Khan
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2Luis Zurita
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosEduardo Henriquez
 
2. 8085-Microprocessor.pptx
2. 8085-Microprocessor.pptx2. 8085-Microprocessor.pptx
2. 8085-Microprocessor.pptxISMT College
 
Comparativa Intel 8086 Motorola 68000
Comparativa Intel 8086   Motorola 68000Comparativa Intel 8086   Motorola 68000
Comparativa Intel 8086 Motorola 68000guest0f5365
 

La actualidad más candente (20)

Hoja de datos de 74181 alu
Hoja de datos de 74181 aluHoja de datos de 74181 alu
Hoja de datos de 74181 alu
 
General Purpose Input Output - Brief Introduction
General Purpose Input Output - Brief IntroductionGeneral Purpose Input Output - Brief Introduction
General Purpose Input Output - Brief Introduction
 
8051 Timer
8051 Timer8051 Timer
8051 Timer
 
digital electronics Design of 101 sequence detector without overlapping for...
digital  electronics Design of 101 sequence detector without  overlapping for...digital  electronics Design of 101 sequence detector without  overlapping for...
digital electronics Design of 101 sequence detector without overlapping for...
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Conversión de decimal fraccionario a hexadecimal y entre
Conversión de decimal fraccionario a hexadecimal y entreConversión de decimal fraccionario a hexadecimal y entre
Conversión de decimal fraccionario a hexadecimal y entre
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
8051 addressing modes
8051 addressing modes8051 addressing modes
8051 addressing modes
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De Turing
 
Microprocessor 8086 instruction description
Microprocessor 8086 instruction descriptionMicroprocessor 8086 instruction description
Microprocessor 8086 instruction description
 
Manual Pic16 F87 X
Manual Pic16 F87 XManual Pic16 F87 X
Manual Pic16 F87 X
 
Internal architecture-of-8086
Internal architecture-of-8086Internal architecture-of-8086
Internal architecture-of-8086
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
 
Funciones
FuncionesFunciones
Funciones
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
 
2. 8085-Microprocessor.pptx
2. 8085-Microprocessor.pptx2. 8085-Microprocessor.pptx
2. 8085-Microprocessor.pptx
 
Comparativa Intel 8086 Motorola 68000
Comparativa Intel 8086   Motorola 68000Comparativa Intel 8086   Motorola 68000
Comparativa Intel 8086 Motorola 68000
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
Sistemas de Numeración octal y hexadecimal
Sistemas de Numeración  octal y hexadecimalSistemas de Numeración  octal y hexadecimal
Sistemas de Numeración octal y hexadecimal
 
Module 1 8086
Module 1 8086Module 1 8086
Module 1 8086
 

Similar a Programación del microATmega328P en ensamblador

Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0SANTIAGO PABLO ALBERTO
 
Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioSANTIAGO PABLO ALBERTO
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-MicrocontroladoresOmar Ruiz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOLeida Zuñiga
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduinoKetoc2k3
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivasalmidon_pcb
 
Controlando el tiempo
Controlando el tiempoControlando el tiempo
Controlando el tiempoguest02693a
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresSANTIAGO PABLO ALBERTO
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoSANTIAGO PABLO ALBERTO
 

Similar a Programación del microATmega328P en ensamblador (20)

Lenguaje máquina
Lenguaje máquinaLenguaje máquina
Lenguaje máquina
 
Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0
 
Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR Studio
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGO
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Grabacion de microcontroladores_pic
Grabacion de microcontroladores_picGrabacion de microcontroladores_pic
Grabacion de microcontroladores_pic
 
Controlando el tiempo
Controlando el tiempoControlando el tiempo
Controlando el tiempo
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
 
Programación básica de Arduino
Programación básica de Arduino Programación básica de Arduino
Programación básica de Arduino
 
Arduino
ArduinoArduino
Arduino
 

Más de SANTIAGO PABLO ALBERTO

Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaSANTIAGO PABLO ALBERTO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez SANTIAGO PABLO ALBERTO
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio PereiraSANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTSANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...SANTIAGO PABLO ALBERTO
 

Más de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 

Último

Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesal21510263
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfSandXmovex
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfssuserc34f44
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIARafaelPaco2
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptxJhordanGonzalo
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 

Último (20)

Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operaciones
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIACOMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
COMPONENTES DE LA VIA FERREA UAJMS - BOLIVIA
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 

Programación del microATmega328P en ensamblador

  • 1. Programación delmicroatmega328p en ensamblador.Comocargar programas en proteusde Atmel Studio 7 a Arduino UNO y ejemplo en ensamblador Este instructivoesútil cuandonecesitamos desarrollarprogramasque utilizancaracterísticasmás avanzadasy poderprogramarloenlenguaje ensamblador. Se integralascapacidadesde programaciónmediante USBde nuestratarjeta.Para hacereso utilizaremos"avrdude.exe"ylaopción"external tools"de AtmelStudio Primerodebemosinstalar  ArduinoIDE  Atmel Studio Paso 1: ConfigurandoAtmel Studio Ahoraconecta tu ArduinoUNOa tu PC y esperaa que se instalenloscontroladores. Cuando termine,toma nota de cual puerto está utilizando. Para mi caso esel COM4. Ahora: 1. Una vez abiertoAtmel Studiode clickenel menú"toos/externaltools"yse abrirá un cuadro de dialogodonde se nospedirállenaralgunosparámetros. 2. En title escribir"Sendto ArduinoUNO"o el nombre que quieras. 3. En command escribir"C:ProgramFiles (x86)Arduinohardwaretoolsavrbinavrdude.exe" 4. En arguments escribir" -C"C:ProgramFiles (x86)Arduinohardwaretoolsavretcavrdude.conf"-patmega328p -carduino -P COM5 -b 115200 -U flash:w:"$(ProjectDir)Debug$(TargetName).hex":i " En este caso necesitasreemplazarel puertoCOMpor el que estésempleando. Programación en lenguaje ensamblador Lenguaje ensamblador El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legibleporunprogramador.Cada arquitecturade procesadortiene supropiolenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posicionesdememoriayotrascaracterísticasdel lenguaje.Unlenguajeensambladoresporlotanto
  • 2. específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles. .DEVICE La directivadevice permite al usuariodeciral Ensambladorque dispositivoysobre que código se va a ejecutar. Syntax: DEVICEatmega328p .ORG La directivaorg es usadapara indicarel comienzode ladirección,puede serempleadatantopara códigocomo para dato. Syntax: .ORG exprasión Ejemplo .ORG 0x00 .INCLUDE La directivainclude le dice al lenguaje ensambladro AVRque agregue el contenidode unarchivoa nuestroprograma. Ejemplo include "m328pdef.inc" .EQU Ésta es utilizadaparadar unvalorconstante a una direcciónfija. Syntax: .EQU etiqueta=exprasión El valorde la expresiónpuede ser enhexadecimal,ejemplo: .EQU DATO1 = 0x39 ;numeroenhexadecimal El valorde la expresiónpuede seren binario,ejemplo: .EQU DATO2 = 0b00110101 ;Binario(35 en hexadecimal) El valorde la expresiónpuede seren decimal,ejemplo: .EQU DATO3 = 39 ;numerodecimal (27en hexadecimal)
  • 3. El valorde la expresiónpuede seren carácter,ejemplo: .EQU DATO4 = '2' ;carácter ASCII Puertosde entrada salida (configuraciones) Ejemplosde código en ensamblador Cambiar de estadouna salidacada 500 milisegundos(lalibreríade los delayviene más abajo) ; ; blink_led.asm ; ; Created: 15/02/2017 08:56:19 a. m. ; Author : NoeAdrian ; .include "m328pdef.inc" .include "delay.inc" ;Library a de retardos .device atmega328p ;---------Configuración de puertos --------------- .ORG 0x00 ; Comienzo del código en la posición 0 ;inicializa el SP LDI R16, HIGH(RAMEND) ; Carga el SPH OUT SPH, R16 LDI R16, LOW(RAMEND) ;Carga el SPL OUT SPL, R16
  • 4. LDI R16, 0xFF ;R16 = 255 o 0b11111111 OUT DDRB,R16 ;Pone como salida el Puerto B NOP ;Espera un ciclo de reloj LDI R16, 0b00100000 ;R16 = 0b00100000 OUT PORTB, R16 ;Enciende el led Start: LDI R16, 0b00100000 ;R16 = 0b00100000 OUT PORTB, R16 ; enciende el led call delay_500ms ;Retado de 500 milisegundos LDI R16, 0b00000000 ;R16 = 0b0000000 OUT PORTB, R16 ; enciende el led call delay_500ms ;Retado de 500 milisegundos jmp Start Instruccionesempleadas ;K Valor LDI Rd, K ;Carga el registro Rd con el valor K IN Rd, PINn ;Carga el valor de un registro como PINn a Rd OUT PORTn, Rd ;Carga Rd a PORTn. Es empleada para mandar algún valor a un puerto JMP k ;Salta a la dirección k. En este caso la etiqueta start
  • 5. Cambiar de estadouna salidaPD0 mediante cada que se pone en alto la entrada PB0 .include "m328pdef.inc" .include "delay.inc" .device atmega328p ;---------Configuración de puertos --------------- .ORG 0x00 ;Comienzo del código en la posición 0 ; Inicializa el SP LDI R16, HIGH(RAMEND) ; Carga el SPH OUT SPH, R16 LDI R16, LOW(RAMEND) ;Carga el SPL OUT SPL, R16 LDI R16, 0x00 ;R16 = 0 OUT DDRB,R16 ;Pone como entrada el Puerto B NOP ;Espera un ciclo de reloj LDI R16, 0xFF ;R16 = 0x0FF OUT DDRD,R16 ;Pone como salida el Puerto B NOP ;Espera un ciclo de reloj LDI R16,0xFF ;Pone resistencia de pull up OUT PORTB, R16 ;Pone en cero el puerto b start: sbis PINB,0 ;Salta la siguiente línea si PB0 es 1 jmp continuar1 ;salta a continuar1 call delay_100ms ;espera 100 milisegundos para evitar rebotes call delay_100ms ;espera 100 milisegundos para evitar rebotes call delay_100ms ;espera 100 milisegundos para evitar rebotes sbis PIND,0 ;Salta la siguiente línea si PD0 es 1 jmp escero ;Salta a escero
  • 6. ldi r17,0b00000000 ;r17=0 out PORTD,r17 ;PORTD = r17 jmp continuar1 ;Salta a continuar1 escero: ldi r17,0b00000001 ;r17=1 out PORTD,r17 ;PORTD = r17 continuar1: jmp start Como crear una subrutinade retardo Para este caso lasubrutinaestáenotro archivoel cual nombraremosdelay.inc 1. Damos clickderechoenel nombre del proyecto 2. ClickenAdd/new ítem... 3. Seleccionamosincludefile ynombramosel archivo 4. Una vez creadahay que añadirla libreríacon .include ;------------------------- subrutina de retardo delay_10ms -------------- ------------------- .ORG 0x300 ;coloca la rutina de retardo en la dirección 0x300 dealy_10ms: ldi r17,99 ; 1 ciclo repetir1: ldi r18,199 ; 1 ciclo repetir: nop ; 1 ciclo nop ; 1 ciclo nop ; 1 ciclo nop ; 1 ciclo nop ; 1 ciclo dec r18 ; 1 ciclo brne repetir ; 2 ciclos
  • 7. dec r17 ; 1 ciclo brne repetir1 ; 2 ciclos ret ; 5 ciclo Instruccionesempleadas ;K Valor LDI Rd, K ;Carga el registro Rd con el valor K. NOP ;No hace ninguna operación. DEC Rd ;Carga Rd = Rd-1. BRNE k ;Salta a la dirección k +1. En si el valor no es cero o z=0. RET ;regresa a la dirección donde fue llamada + 1. ¿Cómose calculó? Buenoenprimerlugarse utilizóunafrecuenciade trabajode 16 MHz por loque (1/(16x10^6))(1+1+100(200(8))+4))=0.01 seg= 10 ms Se repite primero100 vecespor 200 veces8 ciclosque sonlosnop,dec y brne. Si se utilizaotrafrecuenciade trabajoparael micro se deberáhaceruna subrutinaparecidapero adecuadaa la frecuenciade trabajo. Con estopodemosrealizar una nueva rutina de 100ms repitiendo10 vecesla subrutina de 10ms y de la misma manera podemoscrear más.
  • 8. Ejemplo /* * delay.inc * * Created: 15/02/2017 12:17:22 p. m. * Author: NoeAdrian */ ;----------------------Esta es la subrutina de retardo dalay_500ms ----- -------------------- .ORG 0x300 ;coloca la rutina de retardo en la dirección 0x300 delay_500ms: call delay_100ms call delay_100ms call delay_100ms call delay_100ms call delay_100ms ret ;----------------------Esta es la subrutina de retardo delay_100ms ----- -------------------- delay_100ms: call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms call delay_10ms
  • 9. ret ;----------------------Esta es la subrutina de retardo delay_10ms ------ ------------------- delay_10ms: ldi r17,99 ; 1 ciclo repetir1: ldi r18,199 ; 1 ciclo repetir: nop nop nop nop nop dec r18 ; 1 ciclo brne repetir ; 2 ciclos dec r17 ; 1 ciclo brne repetir1 ; 2 ciclos ret Practica 1 Realizarel unprograma que mediante unbotónconectadoal PUERTO B incremente el valorde la salidadel PUERTO D en1, mostrandoel valorcon undisplay7SEG-BCDsegmentos que vayade 0 a F. El códigoserásimuladoenProteus. Componentes 1. 7SEG-BCD 2. CAPACITOR22pF 3. ATMEGA328P 4. BUTTON 5. CRISTAL 6. RES
  • 11. Al terminarenla práctica se deberáentregarunreporte porcada persona,seráhechoen computadoray contendrá: 1. Portada 1. Nombre de lainstitución 2. Carrera 3. Semestre 4. Númerode lapráctica, unidadynombre de la práctica 5. Nombre del Alumno 6. Nombre del profesor 7. Lugar y fecha 2. Introducción 3. Objetivos 4. Desarrollo 1. Códigodel programacon comentarios. 2. Fotografíasde los resultadosde lasimulación
  • 12. 5. Conclusiónpersonal Ayuda ldi r17,16 ;Se debe poner este registro a 16 para compararlo con el valor del puerto D inc r18 ;r18 = r18+1 cp r18,r17 ;compara r18 con r17 breq mayora15 ;si es igual salta a mayora15