Está en la página 1de 2

;********************************************************************

;Tipo Microcontrolador
;********************************************************************
.include "m16def.inc" ;ATmega16
;********************************************************************
;Registros
;********************************************************************
.def dato = r17
.def dato1 = r18
.def dato2 = r19
;********************************************************************
;La sección de la SRAM (datos)
;********************************************************************
.DSEG
;********************************************************************
;La sección EEPROM (datos)
;********************************************************************
.ESEG
;********************************************************************
;Vector de Reset y Vectores de Interrupcion
;********************************************************************
.CSEG
.org $0000 ; Vector de reset
rjmp Programa ; Inicio del Programa
;********************************************************************
;PROGRAMA PRINCIPAL
;********************************************************************
.org $002A
Programa:
ldi r16,high(RAMEND) ;Configuracion del punte
ro
out sph,r16
ldi r16,low(RAMEND) ;de Pila
out spl,r16
;__________________________________________________________
ser r16
out ddrd,r16 ;puerto D salida
out ddrc,r16 ;puerto C salida
out porta,r16
clr r16
out ddra,r16 ;puerto A Entrada
;__________________________________________________________
clr r16
out portd,r16 ;
out portc,r16 ;Inicializar puertos
;********************************************************************
;Bucle principal
;********************************************************************
bucle:
in r16,pina
mov dato,r16
;-------------------------------------------------------------------------------
----------------------
mov r16,dato
andi r16,0b00001111
mov dato1,r16
mov r16,dato
andi r16,0b11110000
swap r16
mov dato2,r16
;-------------------------------------------------------------------------------
-----------------------
mov r16,dato1
ldi ZH,HIGH(tabla_7segmentos ) ;cargamos la Direccion
ldi ZL,LOW(tabla_7segmentos ) ;de la tabla
add ZL,r16
eor r16,r16
adc ZH,r16
clc
rol ZL
rol ZH
lpm r16,Z ;7_segmentos de las tabl
a
out portc,r16 ;y lo enviamos a puertoB
;-------------------------------------------------------------------------------
----------------------
mov r16,dato2
ldi ZH,HIGH(tabla_7segmentos <<1) ;cargamos la Direccion
ldi ZL,LOW(tabla_7segmentos <<1) ;de la tabla
add r16,r16
add ZL,r16 ;recogemos el codigo
lpm r16,Z ;7_segmentos de
las tabla
out portd,r16 ;y lo enviamos a
puertoB
rjmp bucle
;********************************************************************
.org $500
tabla_7segmentos:
.DB 0b00111111 ;numero 0
.DB 0b00000110 ;numero 1
.DB 0b01011011 ;numero 2
.DB 0b01001111 ;numero 3
.DB 0b01100110 ;numero 4
.DB 0b01101101 ;numero 5
.DB 0b01111101 ;numero 6
.DB 0b00000111 ;numero 7
.DB 0b01111111 ;numero 8
.DB 0b01100111 ;numero 9
;********************************************************************
.org $600
tabla_7segmentos1:
.DB 0b00111111,0b00000110 ;numero 0, 1
.DB 0b01011011,0b01001111 ;numero 2,3
.DB 0b01100110,0b01101101 ;numero 4,5
.DB 0b01111101,0b00000111 ;numero 6,7
.DB 0b01111111,0b01100111 ;numero 8,9

También podría gustarte