Objetivo
Nuestro objetivo en este proyecto es la aplicación simple
del Convertidor Analógico-Digital de nuestro Microcontrolador MC9S08SE8.
La forma de Aplicación será a través de un sensor de temperatura de precisión, dicha interpretación de la entrada análoga se hará por medio de 2 display en un formato decimal.
La forma de Aplicación será a través de un sensor de temperatura de precisión, dicha interpretación de la entrada análoga se hará por medio de 2 display en un formato decimal.
Material
- Microcontrolador MC9S08SE8
- USBDM
- TTL 7448 (decodificador a 7 segmentos)
- Display Catodo Comun
- Sensor LM35-TO92 (sensor termico de presición)
Desarrollo
Para este programa se diseñara en una salida al Puerto B de
nuestro Microcontrolador y configurado el canal 1 como la entrada analógica de
nuestra implementación.
Para esto también configuraremos nuestro Microcontrolador
para que los datos enviados al puerto B sean en el sistema decimal, esto para
que nuestros drivers puedan mostrarnos en el display la información explícita.
Programación
;-------------------------------------------------------------------------------------------------------
;Inicializamos nuestras variables a Utilizar
;-------------------------------------------------------------------------------------------------------
ExampleVar: DS.B 1
Corregido: equ $83
Convertido: equ $84
Comparador: equ $85
Tope: equ $86
ORG ROMStart
;-------------------------------------------------------------------------------------------------------
;Configuramos los registros para habilitar el ADC de nuestro Microprocesador con salida a puerto B
;-------------------------------------------------------------------------------------------------------
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
CLI ; enable interrupts
;-------------------------------------------------------------------------------------------------------
;Declaramos Puerto B como Salida
;-------------------------------------------------------------------------------------------------------
LDA #$FF
STA PTBDD ;lo colocamos en el registro PTBDD para hacer PTBD la Salida
;-------------------------------------------------------------------------------------------------------
;Configuracion del ADC
;-------------------------------------------------------------------------------------------------------
LDA #$90 ;Cargamos $90=10010000
STA ADCCFG ;Colocamos en registro ADCCFG con la siguiente configuracion
;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 nuestras variables
;-------------------------------------------------------------------------------------------------------
LDA #$00
STA Corregido
STA Convertido
STA Comparador
STA Tope
;-------------------------------------------------------------------------------------------------------
;Programa Principal
;-------------------------------------------------------------------------------------------------------
MainLoop:
BSR ConvertidorAD ;Realizamos la adquision de datos del canal 1
BSR Conversor ;Realiza la conversion del sistema hexagesimal a decimal
LDA Corregido ;Carga nuestro valor corregido
STA PTBD ;Manda la Informacion al puerto B
BSR Retardo ;Llama al ciclo de retardo para la apreciación de datos en tiempo real
feed_watchdog
BRA MainLoop
;-------------------------------------------------------------------------------------------------------
;Programa convertidor
;-------------------------------------------------------------------------------------------------------
ConvertidorAD:
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 ConvertidorAD ;si COCO no esta activado (Z=0), regresa (Branch) a main, con COCO debe ser:
LDA ADCRL ;Cargamos la entrada convertida del Canal 1
STA Convertido ;La mandamos a variable para realizar el arreglo decimal
feed_watchdog
RTS
;-------------------------------------------------------------------------------------------------------
;Programa que realiza la conversion del sistema hexagesimal al decimal
;-------------------------------------------------------------------------------------------------------
Conversor:
LDA Convertido
ADD #$A
STA Tope
LDA #$00
STA Corregido
STA Comparador
for:
feed_watchdog
LDA Comparador
CMP Tope
BEQ Salir_Ciclo
LDA Corregido
ADD #$01
DAA
STA Corregido
INC Comparador
BRA for
Salir_Ciclo:
RTS
;-------------------------------------------------------------------------------------------------------
;Programa de Retardo
;-------------------------------------------------------------------------------------------------------
Retardo:
LDA #$A
STA $100
STA $101
STA $102
Retardomain:
feed_watchdog
LDA $100
CMP #$00
BEQ Retorno
DECA
STA $100
LDA #$78
STA $101
Subretardo_1:
feed_watchdog
LDA $101
CMP #$00
BEQ Retardomain
DECA
STA $101
LDA #$78
STA $102
Subretardo_2:
LDA $102
CMP #$00
BEQ Subretardo_1
DECA
STA $102
BRA Subretardo_2
Retorno:
RTS
Como se puede apreciar, este programa es una aplicación básica del ADC, la cual puede servir como base para proyectos futuros. Esto porque no es exclusiva del diseño, sino es una programación general del ADC, es posible conectar casi cualquier entrada análoga para su cuantización digital.
Otra aplicación adicional es que puede programarse alguna
entrada de control para procesos de automatización.

no tendras el diagrama de conexion?
ResponderEliminarya lo actualicé, por favor revisen bien la codificación esta mas que clara, ya subí también el datasheed de los componentes para que no tengan problema.
Eliminarcualquier otra duda comenten o envíen correo
Buen aporte... lo voy a realizar, no tengo muy claro la parte de la programación, me recomiendas algún módulo de programación PIC?
ResponderEliminarun saludo