2011
SISTEMAS DIGITALES II
2011
Contenido
Contenido..............................................................................................................................................2 Introduccin...........................................................................................................................................2 Desarrollo:.............................................................................................................................................3 Subrutina Conversin BCD...............................................................................................................3 Subrrutina BCD..................................................................................................................................6 Conclusin:............................................................................................................................................9
Introduccin
El laboratorio consiste en la implementacin de un contador de revoluciones (RPM) realizado con un micro controlador Motorola HC908JK1 mostrando los valores medidos en tres display de 7 segmentos hasta el nmero 999 rpm. El sistema deber presentar la siguiente funcionalidad: Los pulsos digitales que ingresan por la entrada (Ent. Pulsos) provienen de un sensor que genera un ciclo por cada revolucin de eje de la mquina respectiva (se simula el sensor empleando un generador de pulsos de frecuencia variable). La llave SW1 deber cambiar la escala de medicin: En la posicin (x1) la lectura de los display ser directamente la RPM medidas (hasta 999 rpm) En la posicin (X10) la lectura presentada ser equivalente a un dcimo de las RPM medidas (hasta 9999). El diodo LED DL1 deber destellar cuando la llave selectora este en la posicin X10.
Para poder realizar este trabajo debemos utilizar un temporizar en el modo de interrupcin peridica cada fraccin de segundo como base de tiempo para iniciar el conteo de pulsos y aprovechar la misma para realizar el encendido secuencial de los display (tcnica de multiplexado para display de 7 segmentos).
2011
Laboratorio: Medidor de RPM digital. El desarrollo del programa fue pensado para realizar conteos de pulsos ascendente utilizando una ventana (muestreo) de 1 segundo, los pulsos son ingresados por el pin 4 del puerto D (canal 0) contando la cantidad de flancos ascendentes, para lo cual configuramos el canal 0 para utilizarlo como una funcin de captura de interrupciones en lugar de usar el pin IRQ. Para mostrar los pulsos transformados en RPM los datos son transformados a cdigo BCD y se visualiza a travs de tres display de 7 segmentos
SISTEMAS DIGITALES II
2011
numbinbajo numbinalto
Sumo 3
SI
NO
NO
Desplazar
ultimo desplazamiento ?
SI FIN
PSHH NUMBINBAJO BINARIOBAJO NUMBINALTO BINARIOALTO CONTBAJO CONTALTO ;(NUMBINBAJO)--->(A) ;(A)--->(BINARIOBAJO) ;(NUMBINALT)--->(A) ;(A)--->(BINARIOALT) ;(0)--->(CONTADOR MENOS SIGNIFACATIVO) ;(0)--->(CONTADOR MAS SIGNIFICATIVO) ;(16)--->(CONTEO)
MOV #$10,CONTEO
SISTEMAS DIGITALES II
2011
Laboratorio: Medidor de RPM digital. ;INICIO EL AJUSTE PARA CONVERTIR EL NUMERO BINARIO QUE ESTA DIVIDIDO EN NUMBINALTO Y NUMBINBAJO POR SER DE 16 BIT
SIGO
CONTBAJO
;(CONT)--->(A) ; (A)--->(X)
#$0F #$05
BMI SALTO1 ; saltar si el resultado es negativo a la etiqueta SALTO1 QUIERE DECIR QUE ES MENOR QUE 5 AIX #$03 ;(X)+$03
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SALTO1 AND SUB BMI AIX TXA #$F0 #$50 SALTO2 #$30 ; (X)--->(A) ; multiplicar (A) bit a bit por $F0 ; restar $50 a (A) ; saltar si el resultado es negativo a la etiqueta SALTO2 ;(X)+$30
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SALTO2 STX LDA TAX AND SUB #$0F #$05 CONTBAJO CONTALTO ; GUARDO LA PARTE BAJA DEL BCD unidad y decena ; (A)--->(CONT) ; (A)--->(X) ; multiplicar(A) bit a bit por $0F ; restar $05 a (A)
BMI SALTO3 ; saltar si el resultado es negativo a la etiqueta SALTO3 QUIERE DECIR QUE ES MENOR QUE 5 AIX #$03 ;(X)+$03
SISTEMAS DIGITALES II
2011
Laboratorio: Medidor de RPM digital. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SALTO3 STX ASL ROL ROL ROL CONTALTO ;(X)--->(CONT) el numero bcdatlo esta en CONTALTO ;desplazamiento aritmtico de (BINARIOBAJO) ;rotar a la izquierda a travs del carry (BINARIOALTO) ;rotar a la izquierda a travs del carry ;rotar a la izquierda a travs del carry ;(CONTEO)-1 Y saltar a etiqueta SIGO si no es 0
;fin subrutina
Subrrutina BCD
Esta subrutina se encarga de almacenar los valores de los nibles de CONTALTO Y CONTBAJO en las variables UNIDAD, DECENA y CENTENA. Y adems de verificar si excede la medicin que esta almacenada en PULSOS el valor de 999 en SWx1 o 9999en SWx10, en tal caso carga el valor de $0F en las variables UNIDAD, DECENA y CENTENA mostrando el cartel Err en los displays.
SISTEMAS DIGITALES II
inicio
2011
PULSOS>=167
SI
BIT 3 PUERTO B =1
NO
PULSOS>=17
Separo los nibles de CONTBAJO y los guardo en UNIDAD y DECENA. Guardo nible de CONTALTO en CENTENA.
FIN
BCD
POR1
POR10
CLC
SISTEMAS DIGITALES II
LDA ADC BCS CARRY ESTE EN 1 BRA
2011
Laboratorio: Medidor de RPM digital. PULSOS ;CARGO EN A <=PULSOS #!89 ERRORR SALIR ;A=A+89+CARRY PULSOS+89+CARRY ;SALTAR A ETIQUETA ERRORR CUANDO EL ;SALTAR A ETIQUETA SALIR
ERRORR
SALIR
LDA AND STA LDA NSA AND STA LDA AND STA
;(CONT)--->(A) ;(A)*%00001111, elimina los 4bits MSB ;(A)--->(CONTL) ;(CONTBAJO)--->(A) ;intercambiar nibles de A
;(A)*%00001111, elimina los 4bits MSB ;(A)--->(CONTH) ;(CONTALTO)--->(A) ;(A)*%00001111, elimina los 4bits MSB ;(A)--->(CONTH)
FINBCD
2011