HCS08 y su Convertidor Analogico Digital
Sensor de Temperatura
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 |
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 |
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
Has intentado usar el Codewarrior para programarlo en C?, es mas sencillo, por que el assembler ya no se usa por ser tan incompatible =)
ResponderEliminarSaludos.
Pdta: muy buena página.
Nop :P de hecho coloque estos post porque en mi facu te obligan a usar asm jeje. Para ayudarles un poco a estos pobres chavos y que no la pasen tan mal como yo, porque ni documentaci´`on existe yya!!
Eliminarholaa
ResponderEliminareste donde podria conseguir un bdm
Hola, una pregunta, en tu programación como seria una forma para que en lugar de mandar 1 mandara 0
ResponderEliminar