Monitorea la entrada de un código binario (4 bits) y muestra la selección en decimal mediante un display.
-Aplicación de Tabla de datos para conversión Hexadecimal a 7 segmentos
Diagrama de conexión:
Programa en Assembler:
;---------------------------------------------------------
;Autor: LONELY113
; http://lonely113.blogspot.com
;
;Programa que muestra codigo seleccionado en binario
;en un display catodo comun de 7 segmentos
;Entradas: Puerto B (Pines PB0-PB3)
;Salidas: Puerto D (Pines PD1-PD7)
;Oscilador interno de 8 MHz
;---------------------------------------------------------
.nolist
.include "m8def.inc"
.list
.device atmega8
.org 0x0000
;Definicion de stack
ldi r25,HIGH(RAMEND)
out SPH,r25
ldi r25,LOW(RAMEND)
out SPL,r25
;fin definicion de stack
BEGIN: ldi r18,0x00 ;RB7-RB0 como entradas
out DDRB,r18
ldi r18,0xFF ;RD7-RD0 como salidas
out DDRD,r18
LOOP: in r17,PINB
andi r17,0x0F
rcall SAVE
out PORTD,r16
rjmp LOOP
;Subrutinas
SAVE: ldi ZH,HIGH(2*TABLA)
ldi ZL,LOW(2*TABLA)
add ZL,r17
lpm
mov r16,r0
ret
;Tabla de conversion hex a 7 segmentos
TABLA:
.DB 0x7E,0x0C,0xB6,0x9E,0xCC,0xDA,0xFA,0x0E
.DB 0xFE,0xDE,0xEE,0xF8,0x72,0xBC,0xF2,0xE2
;Fin de tabla
Archivos de Programa:
Descargar
Hola cual es la funcion de esta parte del código
ResponderEliminarandi r17,0x0F
He revisado y al parecer limpia la parte alta del nible. Pero no logro entender bien ese concepto.
in r17,PINB
andi r17,0x0F
Hola, efectivamente esa línea limpia el nible superior para evitar lecturas erróneas.
EliminarSaludos.