Pruebas Displays
-
Upload
rodrigo-espinoza-cors -
Category
Documents
-
view
214 -
download
0
Transcript of Pruebas Displays
![Page 1: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/1.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 1/6
/* * Display7Seg.asm * * Created: 13/09/2015 17:08:36 * Author: Mauri */; Conexiones: C0 -> Anodo Display 1; C1 -> Anodo Display 2; B0 - Pulsador Subida; B1 - Pulsador Bajada; D0 -> Segmento a del Display; D1 -> Segmento b del Display; D3 -> Segmento c del Display; D4 -> Segmento d del Display; D5 -> Segmento e del Display; D6 -> Segmento f del Display; D7 -> Segmento g del Display.equ unidades=$60.equ decenas=$61 ;reset-vector address $0000.org $0000
rjmp main ;ve al main
seg7:.db 0x80,0xf1,0x48,0x60,0x31,0x22,0x02,0xb0,0x00,0x20 ;PROGRAMA PRINCIPAL main:
ldi r16,$04 ;Configuracion de...out sph,r16ldi r16,$5Fout spl,r16 ;...la pila: Stack: $045F=RAMENDser r16 ;r16 <- $FFout ddrc,r16 ;portC salidaldi r16,$fb ;r16 <- $fbout ddrd,r16 ;portD salidas, excepto D2
ldi r16,$fcout ddrb,r16clr r16 ;r16 <- 0sts unidades,r16 ;unidades <- 0sts decenas,r16 ;decenas <- 0ldi r30,low(seg7) ;se carga en Zldi r31,high(seg7) ;la dirección en flash de los datos del di
splayldi r16,2 ;r16 <- 2add r30,r16 ;adecuamos el puntero Z para qeu apunte
a bytesloop:
rcall multiplexar ;mostramos datos, hasta que se suelte el
pulsadorsbis pinb,0 ;pin B0 esta todavía siendo pulsado?rjmp incremento ;si, está pulsado, volvemos a generar reta
rdo, sino se salta instrucciónrcall multiplexar ;mostramos datos, hasta que se suelte el
pulsadorsbis pinb,1 ;pin B1 esta todavía siendo pulsado?rjmp decremento ;si, está pulsado, volvemos a generar reta
rdo, sino se salta instrucciónmulti:
![Page 2: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/2.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 2/6
rcall multiplexar ;vamos a visualizar los datos en los displays
rjmp loop ;bucle infinitoincremento:
;rcall delay25m ;retardo antirrebotelds r16,unidades ;r16 <- unidadeslds r17,decenas ;r17 <- decenasinc r16 ;incrementamos el valor de r16 q
ue contiene el valor de unidadescpi r16,10 ;r16<10?brmi salir ;si es menor, salimos, sino...clr r16 ;r16 <- 0, unidades a ceroinc r17 ;incrementamos r17 que contiene el valor
de decenascpi r17,2 ;r17<2?brmi salir ;si es menor, salimos, sino...clr r17 ;r17 <- 0,decenas a cero
decremento:;rcall delay25m ;retardo antirrebotelds r16,unidades ;r16 <- unidadeslds r17,decenas ;r17 <- decenasdec r16 ;decrementamos el valor de r16 q
ue contiene el valor de unidadescpi r16,0 ;r16<0?
brmi salir ;si es menor, salimos, sino...clr r16 ;r16 <- 0, unidades a cerodec r17 ;incrementamos r17 que contiene el valor
de decenascpi r17,2 ;r17<2?brmi salir ;si es menor, salimos, sino...clr r17 ;r17 <- 0,decenas a cero
salir:sts unidades,r16 ;unidades <- r16sts decenas,r17 ;decenas <- r17rjmp multi ;volvemos a multiplexar, con los nuevos
datos
multiplexar:sbi portc,0 ;apagamos ambossbi portc,1 ;displayslds r16,unidades ;r16 <- unidadeslds r15,decenas ;r17 <- decenasmov r28,r30 ;copiamos la dirección donde estanmov r29,r31 ;los datos del displayadd r30,r16 ;se suma el valor de unidades, para desp
lazarse en la tablalpm r16,Z ;r16 <- (Z)mov r30,r28 ;r30 <- r28add r30,r15 ;se suma el valor de decenas, para despl
azarse en la tabla
lpm r15,Z ;r17 <- (Z)mov r30,r28 ;r30 <- r28out portd,r16 ;se muestra en el display de unidades, e
l valor correspondientecbi portc,1 ;enciende el display correspondientercall delay1m ;tiempo de retardo para que sea visible
al ojosbi portc,1 ;se apaga el display encendido anteriorm
entenop nop nop nop nop nop nop nop ;apagando transistor, requiere un tiempo
![Page 3: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/3.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 3/6
para apagarseout portd,r15 ;se muestra en el display de decenas, el
valor correspondientecbi portc,0 ;enciende el display correspondientercall delay1m ;tiempo de retardo para que sea visible
al ojosbi portc,0 ;se apaga el display encendido anteriorm
enteret
; =============================; delay loop generator; 100000 cycles:; -----------------------------; delaying 99990 cycles:delay25m: ldi R17, $A5WGLOOP0: ldi R18, $C9WGLOOP1: dec R18 brne WGLOOP1 dec R17 brne WGLOOP0; -----------------------------; delaying 9 cycles:
ldi R17, $03WGLOOP2: dec R17 brne WGLOOP2; -----------------------------; delaying 1 cycle: nop ret; =============================
; =============================; delay loop generator; 4000 cycles:; -----------------------------
; delaying 3999 cycles:delay1m: ldi R17, $1FWGLOOP00: ldi R18, $2AWGLOOP11: dec R18 brne WGLOOP11 dec R17 brne WGLOOP00; -----------------------------; delaying 1 cycle: nop
ret; =============================
![Page 4: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/4.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 4/6
/* * Display7Seg.asm * * Created: 13/09/2015 17:08:36 * Author: Mauri */; Conexiones: C0 -> Anodo Display 1; C1 -> Anodo Display 2; C2 - Pulsador Subida; C3 - Pulsador Bajada; Puerto B -> Displays de 7 sgmentos de cátodo común.;-----------------------------------------------------------------
; Registros: r5-r14 -> Registros para almacenar datos de displays.; r16 -> registro temporal para pasar datos.; r17 -> registro de carga de datos.; r30 -> registro apuntador.; r22-r24 -> registros para retardo.;-----------------------------------------------------------------.equ unidades=$60.equ decenas=$61
;reset-vector address $0000.org $00jmp inicio ;va al inicio con un RESET
seg7: ;.db 0x80,0xf1,0x48,0x60,0x31,0x22,0x02,0xb0,0x00,0x20.db 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
;PROGRAMA PRINCIPALinicio:;Cargar el puntero de pila;------------------------- ldi r16,high(ramend) ;Configuracion de... out sph,r16 ldi r16,low(ramend) out spl,r16 ;...la pila: Stack: $045F=RAMEND;Configuracion de los puertos a utilizar;---------------------------------------
ser r16 out ddrd, r16 ;solo puerto d de salida para displays ldi r16,$F3 ;puerto c 0b1110011 out ddrc,r16 clr r16 sts unidades,r16 ;unidades=0 sts decenas,r16 ;decenas=0 ldi r30,low(seg7) ;se carga en Z ldi r31,high(seg7) ;dirección en flash de los datos del display ldi r16,2 ;r16=2
![Page 5: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/5.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 5/6
add r30,r16 ;adecua el puntero Z para que apunte a bytes
loop:rcall multiplexar ;mostramos datos, hasta que se suelte el
pulsadorsbis pinc,2 ;pin C2 esta todavía siendo pulsado?rjmp incremento ;si, está pulsado, volvemos a generar reta
rdo, sino se salta instrucciónrcall multiplexar ;mostramos datos, hasta que se suelte el
pulsadorsbis pinc,3 ;pin C3 esta todavía siendo pulsado?rjmp decremento ;si, está pulsado, volvemos a generar reta
rdo, sino se salta instrucción
multi:rcall multiplexar ;vamos a visualizar los datos en los dis
playsrjmp loop ;bucle infinito
;Inicio del conteo ascendenteincremento: lds r16,unidades ;r16=unidaes lds r17,decenas ;r17=decenas inc r16 ;incremento valor r16
cpi r16,$A ;r16 menor a 10? brmi sale ;si es menor sale sino continua siguiente instrucción clr r16 ;unidades a 0 inc r17 ;incrementamos valor r17 cpi r17,$2 ;r17 menor a 2? brmi sale ;si es menor sale sino continua siguiente instrucción clr r17 ;decenas a 0
;Inicio conteo descendentedecremento: lds r16,unidades ;r16=unidaes
lds r17,decenas ;r17=decenas dec r16 ;decremento valor r16 cpi r16,0 ;r16 menor a 0? brmi sale ;si es menor sale sino continua siguiente instrucción clr r16 ;unidades a 0 dec r17 ;decremento valor r17 cpi r17,0 ;r17 menor a 0? brmi sale ;si es menor sale sino continua siguiente instrucción clr r17 ;decenas a 0
multiplexar:
sbi portc,0 ;apagamos ambossbi portc,1 ;displayscbi portc,2cbi portc,3lds r16,unidades ;r16 <- unidadeslds r15,decenas ;r17 <- decenasmov r28,r30 ;copiamos la dirección donde estanmov r29,r31 ;los datos del displayadd r30,r16 ;se suma el valor de unidades, para desp
lazarse en la tabla
![Page 6: Pruebas Displays](https://reader030.fdocumento.com/reader030/viewer/2022020808/5695d2be1a28ab9b029b8cee/html5/thumbnails/6.jpg)
7/24/2019 Pruebas Displays
http://slidepdf.com/reader/full/pruebas-displays 6/6
lpm r16,Z ;r16 <- (Z)mov r30,r28 ;r30 <- r28add r30,r15 ;se suma el valor de decenas, para despl
azarse en la tablalpm r15,Z ;r17 <- (Z)mov r30,r28 ;r30 <- r28out portd,r16 ;se muestra en el display de unidades, e
l valor correspondientecbi portc,1 ;enciende el display correspondientercall delay1m ;tiempo de retardo para que sea visible
al ojosbi portc,1 ;se apaga el display encendido anteriorm
entenop nop nop nop nop nop nop nop ;apagando transistor, requiere un tiempo
para apagarseout portd,r15 ;se muestra en el display de decenas, el
valor correspondientecbi portc,0 ;enciende el display correspondientercall delay1m ;tiempo de retardo para que sea visible
al ojosbi portc,0 ;se apaga el display encendido anteriorm
enteret
sale: sts unidades,r16 ;unidades <- r16sts decenas,r17 ;decenas <- r17rjmp multi ;volvemos a multiplexar, con los
nuevos datos delay25m: ldi R17, $A5WGLOOP0: ldi R18, $C9WGLOOP1: dec R18 brne WGLOOP1 dec R17 brne WGLOOP0
; -----------------------------; delaying 9 cycles: ldi R17, $03WGLOOP2: dec R17 brne WGLOOP2; -----------------------------; delaying 1 cycle: nop ret; =============================
delay1m: ldi R17, $1F
WGLOOP00: ldi R18, $2AWGLOOP11: dec R18 brne WGLOOP11 dec R17 brne WGLOOP00; -----------------------------; delaying 1 cycle: nop
ret; =============================