0% encontró este documento útil (0 votos)
14 vistas6 páginas

Control de Display 7 Segmentos ATMEGA 32

El documento describe dos programas para un microcontrolador ATMEGA 32. El primer programa controla un display de 7 segmentos conectado al puerto D para mostrar números del 0 al 15 basado en la entrada del puerto C. El segundo programa realiza un conteo ascendente y descendente a través de los puertos C.0 y C.1 respectivamente, mostrando el valor en el puerto D. Ambos programas incluyen el código fuente y un diagrama de flujo.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas6 páginas

Control de Display 7 Segmentos ATMEGA 32

El documento describe dos programas para un microcontrolador ATMEGA 32. El primer programa controla un display de 7 segmentos conectado al puerto D para mostrar números del 0 al 15 basado en la entrada del puerto C. El segundo programa realiza un conteo ascendente y descendente a través de los puertos C.0 y C.1 respectivamente, mostrando el valor en el puerto D. Ambos programas incluyen el código fuente y un diagrama de flujo.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

3. Resultados e implementación.

Primer ejercicio. Desarrollar un programa para el microcontrolador ATMEGA 32 para


controlar un display de 7 segmentos conectado al puerto D (configurado como salida).
Los códigos digitales se introducirán a través del puerto C (configurados los pines
PORTC0 a PORTC3 como entradas).

Código fuente.

.INCLUDE"[Link]"
.ORG 0
LDI R16,0xFF ;Cargar 0xFF a R16
OUT DDRD,R16 ;Cargar R16 a DDRD, DDRD configurado como salida
LDI R17,0xF0 ;Cargar 0xF0 a R16
OUT DDRB,R17 ;Cargar R17 a DDRB, DDRB configurado como entrada
bucle:
IN R16,PINB ;el estado de pinB cargar a R16
CPI R16,0x00 ;comparar R16 con 0
BREQ cero ;saltar a "cero" cuando R16 es igual al numero cargado
CPI R16,0x01 ;comparar R16 con 1
BREQ uno ;saltar a "uno" cuando R16 es igual al numero cargado
CPI R16,0x02 ;comparar R16 con 2
BREQ dos ;saltar a "dos" cuando R16 es igual al numero cargado
CPI R16,0x03 ;comparar R16 con 3
BREQ tres ;saltar a "tres" cuando R16 es igual al numero cargado
CPI R16,0x04 ;comparar R16 con 4
BREQ cuatro ;saltar a "cuatro" cuando R16 es igual al numero cargado
CPI R16,0x05 ;comparar R16 con 5
BREQ cinco ;saltar a "cinco" cuando R16 es igual al numero cargado
CPI R16,0x06 ;comparar R16 con 6
BREQ seis ;;saltar a "seis" cuando R16 es igual al numero cargado
CPI R16,0x07 ;comparar R16 con 7
BREQ siete ;saltar a "siete" cuando R16 es igual al numero cargado
CPI R16,0x08 ;comparar R16 con 8
BREQ ocho ;saltar a "ocho" cuando R16 es igual al numero cargado
CPI R16,0x09 ;comparar R16 con 9
BREQ nueve ;saltar a "nueve" cuando R16 es igual al numero cargado
CPI R16,0x0A ;comparar R16 con 10
BREQ diez ;saltar a "diez" cuando R16 es igual al numero cargado
CPI R16,0x0B ;comparar R16 con 11
BREQ once ;saltar a "once" cuando R16 es igual al numero cargado
CPI R16,0x0C ;comparar R16 con 12
BREQ doce ;saltar a "doce" cuando R16 es igual al numero cargado
CPI R16,0x0D ;comparar R16 con 13
BREQ trece ;saltar a "trece" cuando R16 es igual al numero cargado
CPI R16,0x0E ;comparar R16 con 14
BREQ catorce ;saltar a "catorce" cuando R16 es igual al numero cargado
CPI R16,0x0F ;comparar R16 con 15
BREQ quince ;saltar a "quince" cuando R16 es igual al numero cargado
cero:
LDI R18,0x3F ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
uno:
LDI R18,0x06 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
dos:
LDI R18,0x5B ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
tres:
LDI R18,0x4F ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
cuatro:
LDI R18,0x66 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
cinco:
LDI R18,0x6D ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle; ;salto relativo a bucle
seis:
LDI R18,0x7D ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
siete:
LDI R18,0x07 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
ocho:
LDI R18,0x7F ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
nueve:
LDI R18,0x6F ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
diez:
LDI R18,0x77 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
once:
LDI R18,0x7C ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
doce:
LDI R18,0x39 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
trece:
LDI R18,0x5E ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
catorce:
LDI R18,0x79 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
quince:
LDI R18,0x71 ;cargar a R18 directamente
OUT PORTD,R18 ;cargar al puertoD lo que se encuentra en R18
RJMP bucle ;salto relativo a bucle
Diagrama de flujo

Circuito implementado en el laboratorio

Segundo ejercicio. Desarrollar un programa para el microcontrolador ATMEGA 32 que


realice el conteo ascendente de los pulsos recibidos a través del pin PORTC.0
(configurado como entrada). El conteo será visualizado a través del puerto D
(configurado como salida). El pin PORTC.1 (configurado como entrada) servirá para
realizar el conteo descendente de valores también visualizado en el puerto D.

Código fuente.

.INCLUDE "[Link]"
.ORG 0
LDI R18,0xFF ;cargar 0XFF a R18
OUT DDRD,R18 ;cargar R18 a DDRD, DDRD configurado como salida
LDI R18,0x00 ;cargar 0X00 a R18
OUT DDRC,R18 ;Cargar R18 a DDRC, DDRC configurado como entrada

NEW:

SBIS PINC,0 ;si el bit de pinc0 es igual a uno salta a la siguiente instruccion
RJMP ASCENDENTE ;salto relativo a ascendente

SBIS PINC,1 ;si el bit de pinc1 es igual a uno salta a la siguiente instruccion
RJMP DESCENDENTE ;salto relativo a descendente

RJMP NEW ;salto relativo a new

ASCENDENTE:
SBIS PINC,0 ;si el bit de pinc0 es igual a uno salta a la siguiente instruccion
RJMP ASCENDENTE ;salto relativo a ascendente

INC R17 ;incrementar registro R17


OUT PORTD,R17 ;cargar al puertoD lo que se encuentra en R17

RJMP NEW ;salto relativo a new

DESCENDENTE:
SBIS PINC,1 ;si el bit de pinc1 es igual a uno salta a la siguiente instruccion
RJMP DESCENDENTE ;salto relativo a descendente

DEC R17 ;decrementar R17


OUT PORTD,R17 ;cargar al puertoD lo que se encuentra en R17

RJMP NEW ;salto relativo a new

Diagrama de flujo

Circuito implementado en el laboratorio

También podría gustarte