Herramientas Personales

Problema 21

por Gómez González, Isabel Maria Última modificación 31/05/2021 19:02

Modificaciones con respecto al problema 20

Problema21.txt — Plain Text, 2Kb

Contenido del Archivo

/*
	Autor: Alberto J. Molina modificado por Isabel G�
	�tima modificaci�1-6-11
*//*
	Repita el ejercicio anterior para las siguiente estructura en la que
 	se ha eliminado los latches. Adem�la alimentaci�e los displays 
	dispone de unos transistores conectados, a trav�de resistencias, con 
	salidas del microcontrolador. Esto implica que cuando la salida del 
	microcontrolador est� 1, el transistor se activa permitiendo el flujo 
	de corriente hacia el display correspondiente, mientras que si la salida 
	est� 0 el transistor se desactiva provocando el corte de suministro al
	display, por lo que sus diodos se apagan.

*/


/*
En este caso, se proceder� utilizar una variable auxiliar para controlar la secuencia de refresco y represente cada d�to  a partir del n� N 
(tambi�BCD, ver problema anterior), almacenado en un registro determinado. 

				-----------------
		N�  |0 .. 9 | 0 .. 9|
				-----------------
					MS      LS

Obs�ese que, ahora, los displays son del tipo �do com�or tanto, el 
c�o 7 segmentos de cada d�to BCD es la versi�omplementada del problema 
anterior (si se asume que las conexiones entre cada segmento a...h y 
los bits del puerto B, son las mismas PB0 a, PB1 b, ...PB6 h). Dos pines del puerto D, PD1, y PD0, 
 


*/


	.include "m328pdef.inc"

	.equ	CERO = ~0b00111111
	.equ	UNO  = ~0b00000110
	.equ	DOS  = ~0b01011011
	.equ	TRES = ~0b01001111
	.equ	CUATRO=~0b01100110
	.equ	CINCO= ~0b01101101
	.equ	SEIS=  ~0b01111100
	.equ	SIETE= ~0b00000111
	.equ	OCHO=  ~0b01111111
	.equ	NUEVE= ~0b01100111
	
	.equ	DIGITO0 = 0
	.equ	DIGITO1 = 1


	.def	temporal = r16
	.def	N = r17
	.def	cer= r18
	.def	aux = r19

	.cseg
		


Reset:	rcall  Inicializacion
		clr aux
		clr cer	
	Bucle:cpi aux, 127
		breq FIN	
		rcall Representa	
		inc aux
		jmp Bucle
		rcall  ConfiguraES

Fin:	rjmp	Fin	



Representa:										
		mov		temporal,aux
		lsr		temporal							si (aux[0] == 0)
		brcs	RepDigitoI
RepDigitoD:
		mov		temporal,N	
		andi	temporal,$F				
		ldi		zl, low(Tabla7Seg)		
		ldi		zh, high(Tabla7Seg)		
		add		zl,temporal					
		adc		zh,cer						
		ld r0,z	
		out		portb,r0
		cbi		portd,DIGITO1				
		sbi		portd,DIGITO0
		ret
RepDigitoI:
		mov		temporal,N					
		swap	temporal
		andi	temporal,$F
		ldi		zl, low(Tabla7Seg)
		ldi		zh, high(Tabla7Seg)
		add		zl,temporal
		adc		zh,cer						
		ld r0,z
		out		portb,r0
		sbi		portd,DIGITO1				
		cbi		portd,DIGITO0
		ret

ConfiguraES:

		ldi		temporal,$ff
		out		ddrb,temporal	;Puerto B como salida

		ldi		temporal, $3
		out		ddrd,temporal	;Puertos D[1:0] como salidas

		
		clr		aux		;Inicializar variables
		clr		cer

		ret		


Acciones de Documento