HCS08 y su Convertidor Analogico Digital
Sensor de Temperatura
Ahora les presento el codigo del convertidor analogico - digital:
REQUERIMIENTOS:
* Coloca 8 leds en el puerto B, es decir uno por pata, estos se encenderan de acuerdo a lo que reciba el convertidor.
* Coloca un potenciometro de forma divisor de voltaje en la entrada PTA1 (pata 25) del micro HCS08
|
En esta imagen se aprecia un divisor de voltaje hecho con
dos resistencias |
|
En esta imagen, por medio de un potenciometro creamos el
divisor de voltaje de arriba |
El chiste de crear un divisor de voltaje con el potenciometro es que al girar la perilla el voltaje por Vout (de la imagen de arriba) varie, asi se consigue comtrolar el voltaje que entra a PTA1 para poder muestrearlo en los leds.
Como habras entendido, Vout va conectado a la para 25 del micro (PTA1).
Esquematico:
Codigo:
; 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 #$90 ;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
;Inicia el main
;**************************
main:
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 main ;si COCO no esta activado (Z=0), regresa (Branch) a main, con COCO debe ser:
LDA ADCRL ;cargamos la conversion
STA $02 ;la colocamos en el puerto B
feed_watchdog
BRA main
;*************
;Termina el main
HCS08, LM35 Y DISP 7 SEGMENTOS
SENSOR DE TEMPERATURA
|
Se aprecia todo el circuito en si, junto con la HCS08 open source BDM |
|
Esquematico |
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 esto:
; 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
Y esto va como codigo principal del programa:
; 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