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.