/* Autor: Alberto J. Molina modificado por Isabel Gómez Última modificación: 1-6-11 *//* Repita el ejercicio anterior para las siguiente estructura en la que se ha eliminado los latches. Además la alimentación de los displays dispone de unos transistores conectados, a través de resistencias, con salidas del microcontrolador. Esto implica que cuando la salida del microcontrolador está a 1, el transistor se activa permitiendo el flujo de corriente hacia el display correspondiente, mientras que si la salida está a 0 el transistor se desactiva provocando el corte de suministro al display, por lo que sus diodos se apagan. */ /* En este caso, se procederá a utilizar una variable auxiliar para controlar la secuencia de refresco y represente cada dígito a partir del número N (también BCD, ver problema anterior), almacenado en un registro determinado. ----------------- Número |0 .. 9 | 0 .. 9| ----------------- MS LS Obsérvese que, ahora, los displays son del tipo ánodo común, por tanto, el código 7 segmentos de cada dígito BCD es la versión complementada 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