sábado, 2 de julio de 2011

HCS08, LM35 Y DISP 7 Segmentos, Sensor de Temper

HCS08, LM35 Y DISP 7 SEGMENTOS
SENSOR DE TEMPERATURA



Un sensor de temperatura muy sencillo, se trata de desplegar la temperatura en dos dsiplay de 7 segmentos por medio de 2 drivers 7448.

REQUERIMIENTOS:
* 2 display 7 segmentos catodo comun
* 2 driver 7448 BCD a display 7 segmentos
* micro HCS08
* HCS08 open source BDM (o con lo que programes al micro

Conexiones:
* Del micro: PTB0 a PTB3 van al driver 7448 que controla las unidades
PTB4 a PTB7 van al driver 7448 que controla las decenas
(no hace falta decir que cada driver va a un display de 7 segmentos)
* La salida del LM35 va al PTA1 (pata 25) del micro






CODIGO

;En la seccion de variables colocan:
; variable/data section
;
ORG RAMStart ; Insert your data definition here
ExampleVar: DS.B 1
arreglado: equ $83
convertido: equ $84
i: equ $85
tope: equ $86



; Insert your code here
;Entrada Analogica por PTA1

;cabecera del programa
;*********************
cabecera:
;declaracion puerto B coomo salida
LDA #$FF ;cargamos $11111111=$FF
STA $03 ;lo colocamos en PTBDD para hacer PTBD de salida

;Configuracion del ADC
LDA #%10010000 ;Cargamos $90=10010000
STA ADCCFG ;Colocamos en ADCCFG=bajo poder, clock /1,largo tiempo muestreo, resolucion 8 bits,

LDA #$00
STA ADCSC2

LDA #$21 ;$21=00100001, COCO y AIEN desactivados, Activada conversion continua, Canal 1 seleccionado
STA ADCSC1

;inicializamos variables
LDA #$00
STA arreglado
STA convertido
STA i
STA tope

;main
;*********************

main:
BSR convierte
BSR arregla
LDA arreglado
STA $02
BSR retardo
feed_watchdog
BRA main
;*********************

;convierte
;*********************
convierte:
LDA ADCSC1 ;Se carga el contenido de ADCSC1 para verificar COCO
CMP #$A1 ;Comparamos con $A1=%10100001 si igual Z=1,(COCO activado, AIEN desactivado, Conversion continua activada, Canal 1),
BNE convierte ;si COCO no esta activado (Z=0), regresa (Branch) a main, con COCO debe ser:

LDA ADCRL ;cargamos la conversion
STA convertido ;la colocamos en el puerto B
feed_watchdog
RTS
;*********************



;arregla
;*********************
arregla:
LDA convertido
ADD #$A
STA tope

LDA #$00
STA arreglado
STA i

for:
feed_watchdog
LDA i
CMP tope
BEQ salirfor
LDA arreglado
ADD #$01
DAA
STA arreglado
INC i
BRA for

salirfor:
RTS
;*********************



;comenzamos con el codigo del retardo
;*************************
retardo:
LDA #$A ;cargamos FF en la mem 100 y 101
STA $100
STA $101
STA $102

retardomain:

feed_watchdog
LDA $100 ;verificamos que la 100 llegue a 0 para asi terminar el retardo
CMP #$00
BEQ regreso

DECA ;si no es cero, decrementamos en uno a A, cargamos FF en $91 y comenzamos el bucle del subretardo
STA $100

LDA #$78 ;reinicio del anidado
STA $101

subretardo:
feed_watchdog

LDA $101
CMP #$00
BEQ retardomain

DECA
STA $101

LDA #$78
STA $102 ;renicio del anidado


subretardo1:

LDA $102
CMP #$00
BEQ subretardo

DECA
STA $102

BRA subretardo1

regreso:
RTS
;**********************************
;Termina el retardo

//SIGUEME EN MI BLOG PARA SABER MAS ACERCA DEL MUNDO DEL MICRO HCS08 DE FREESCALE
http://hazafantasymicros.blogspot.com/

Y DE OTRAS COSAS:
http://hazafantasymas.blogspot.com/
//*********************************************************************************
No olvides visitar de nuevo HCS08, LM35 Y DISP 7 Segmentos, Sensor de Temper

No hay comentarios:

Publicar un comentario