Vous êtes sur la page 1sur 17

PROGRAMACIN BSICA DEL MICROCONTROLADOR MC68HC11

Autor: Jos Juan rincn Pasaye Resumen: Se presenta una coleccin de programas elaborados para el curso de Control digital de Procesos que se imparte al quinto grado de la Facultad de Ingeniera Elctrica. El objetivo de estos programas es presentar de manera sencilla como se programan los dispositivos internos del microcontrolador MC68HC11 de Motorola. Estos dispositivos internos son los que le dan el poder para una gran variedad de aplicaciones al microcontrolador, por lo cual los programas presentados constituyen una especie de librera bsica de programas para cualquiera que desee introducirse al uso de dicho microcontrolador. En estos programas se abordan los siguientes dispositivos: El puerto serie asncrono (SCI). Transmisin y recepcin El Timer. Entradas de captura y salidas de comparacin) Manejo de interrupciones. Del tipo IRQ, del tipo RTI y del tipo TIC El convertidor Analgico / Digital.

Observacin 1: NO se anexan impresiones de la ejecucin de ninguno de los programas, ya que el resultado de stas slo se aprecia teniendo el hardware correspondiente a cada programa, el cual consiste en dispositivos sencillos, tales como leds, switches, etc. que se encuentran disponibles en el Laboratorio de Electrnica o que el estudiante debe elaborar y conectar al microcontrolador

Observacin 2: Para ejecutar todos los programas presentados se requiere lo siguiente: El Mdulo de evaluacin M68HC11EBVU Un cable de comunicacin para el puerto serie Un software de comunicacin entre el mdulo y la PC El hardware que se especifica en cada programa

1.- El puerto Serie Asncrono

Para este dispositivo se presentan tres programas fundamentales: 1.1.- ENVIA.ASM. Contiene la lgica fundamental para enviar datos desde el microcontrolador a una computadora conectada al puerto serie. Descripcin Este programa enva una cadena de caracteres almacenados a partir de una localidad de memoria especificada de antemano ($0150) y que terminan con un carcter delimitador elegido arbitrariamente como el carcter $. Ejecucin Al ejecutarse , el programa de comunicacin con PC (PROCOM u otro) deber captar la cadena enviada por el programa ENVIA.ASM y desplegarla en la pantalla de la PC Hardware necesario En este caso lo nico que se ocupa es el mdulo de evaluacin, la PC y el cable de comunicacin entre ambos para el puerto serie, adems del programa de comunicacin. Continua listado del programa fuente ENVIA.ASM
* Este programa enva el bloque de datos de 8 bits * que comienza en $0150 y termina con un caracter "$" * a travs del SCI * el bloque puede ser recibido desde la PC por PROCOM * o por algn programa que maneje el puerto serie de la PC como receptor ************************************************************************ BAUD EQU $102B SCCR1 EQU $102C SCCR2 EQU $102D SCSR EQU $102E SCDR EQU $102F veloc EQU $30 letrero EQU $0150 buffalo EQU $E000 ORG letrero FCC "Facultad de Ingenieria Electrica $" ORG $0100 inicio ldaa #$00 ;elige formato de dato de 8 bits, 1 bit de inicio y de paro staa SCCR1 ;configura ldaa #$08 ;habilita transmision, deshabilita interrupciones

estado

staa SCCR2 ldaa #veloc staa BAUD ldx letrero ldaa SCSR and #$80 beq estado

;velocidad de comunicacion a 9600 baudios ;apunta al inicio del bloque ;checa si el buffer esta vacio ;

1.2.- RECIBE.ASM. Contiene la lgica fundamental para recibir datos de a una computadora conectada al puerto serie hacia el microcontrolador Descripcin Este programa recibe una cadena de caracteres provenientes del puerto serie y terminados con el carcter especial $ (elegido arbitrariamente como carcter de fin de cadena) y loa almacena a partir de una localidad de memoria especificada de antemano ($0150). Ejecucin Al ejecutarse , el programa de comunicacin con PC (PROCOM u otro) deber captar la cadena ingresada por el usuario desde el teclado y la enviar por el puerto serie carcter por carcter, conforme el usuario la va tecleando. El usuario no apreciar nada en la pantalla, hasta que ingrese el carcter de fin de cadena acoradado $, el mirocontrolador le regresar el control al programa monitor (buffalo) y el usuario podr checar el resultado en las localidades de memoria especificadas (a partir de $150). Hardware necesario En este caso lo nico que se ocupa es el mdulo de evaluacin, la PC y el cable de comunicacin entre ambos para el puerto serie, adems del programa de comunicacin. Continua listado del programa fuente RECIBE.ASM
* Este programa obtiene una secuencia de datos a traves del puerto serie * el conjunto de datos obtenidos se guardara a partir de $0150 * y debera ser terminado con un signo de $ ************************************************************************ BAUD EQU $102B SCCR1 EQU $102C SCCR2 EQU $102D

SCSR SCDR V9600 letrero buffalo inicio paro

EQU $102E EQU $102F EQU $30 EQU $0150 EQU $E000 ORG $0100 ldaa #$00 staa SCCR1 ldaa #$04 staa SCCR2 ldaa #V9600 staa BAUD ldx #letrero ldab SCSR andb #$20 beq vacio ldaa SCDR cmpa #$24 beq fin staa 0,x inx bra vacio jmp buffalo

;elige formato de dato de 8 bits, 1 bit de inicio y de ;configura ;habilita recepcion, deshabilita interrupciones ;velocidad de comunicacion a 9600 baudios ;apunta al inicio del bloque ;checa si el buffer esta ocupado ; ;si esta vacio espera ;si esta lleno lee el dato que contiene ;es el signo $? ;si es $ termina ;si no, lo guarda en el bloque ;apunta a la siguiente localidad del bloque ;repite

vacio

fin

1.2.- TRANSREC.ASM. Es una conjugacin de los dos programas anteriores para ejemplificar la lgica fundamental de transmisin - recepcin de datos entre el microcontrolador y una computadora conectada al puerto serie. Descripcin Este programa espera la recepcin por el puerto serie de un carcter, al recibirlo lo repite de regreso por la misma va (puerto serie) y este ciclo se repite hasta que el carcter recibido sea el carcter elegido como fin de transmisin $ Ejecucin Al ejecutarse, el programa de comunicacin con PC (PROCOM u otro) deber recibir los caracteres ingresados por el usuario a travs del teclado y enviarlos uno a uno al puerto serie, El microcontrolador en respuesta a los caracteres recibidos los devuelve uno por uno causando con esto que PROCOM los despliegue en la pantalla. el proceso termina al teclear el carcter $, el cual ya no se regresa. Hardware necesario En este caso lo nico que se ocupa es el mdulo de evaluacin, la PC y el cable de comunicacin entre ambos para el puerto serie, adems del programa de comunicacin.

Continua listado del programa fuente TRANSREC.ASM


* Este programa obtiene un dato del puerto serie y lo regresa * sin modificacion por el mismo puerto. * termina cuando recibe por el puerto serie un caracter "$" ************************************************************* BAUD EQU $102B SCCR1 EQU $102C SCCR2 EQU $102D SCSR EQU $102E SCDR EQU $102F V9600 EQU $30 buffalo EQU $E000 ORG $0100 inicio ldaa #$00 ;elige formato de dato de 8 bits, 1 bit de inicio y paro staa SCCR1 ;configura ldaa #$0C ;habilita transmisin y recepcion, deshabilita interrups staa SCCR2 ldaa #V9600 ;velocidad de comunicacion a 9600 baudios staa BAUD vacio ldab SCSR ;checa si el buffer de recepcin tiene dato andb #$20 ; beq vacio ;si esta vacio espera ldaa SCDR ;si esta lleno lee el dato que contiene cmpa #$24 ;es el signo $? beq fin ;si es $ termina lleno ldab SCSR ;checa si el buffer de transmisin esta ocupado andb #$80 beq lleno ;si esta ocupado espera staa SCDR ;si est listo envia dato bra vacio ;repite fin jmp buffalo

2.- El timer
2.1.- TOC2.ASM. Contiene la lgica fundamental para usar una salida de comparacin del timer para generar una seal oscilatoria de una frecuencia determinada. Descripcin Este programa utiliza la capacidad de una salida del timer (la salida de comparacin 2) (TOC2) para conmutar su estado en el momento en que el contador de carrear libre ha alcanzado una cuenta predeterminada. Esta cuenta se calcula para obtener un periodo de 1 segundo. La salida ser monitoreada mediante un led conectado a la patita OC2 del timer.

Estrategia La lgica del programa sigue la siguiente sencilla estrategia: Cada vez que el contador de carrera libre (TCN) alcanza el valor predeterminado N se le vuelve a sumar este valor, de manera que para volver a alcanzar la nueva cuenta TCNT+N tardar N ciclos de reloj como se ilustra en la figura, adems se programa la salida para que cada vez que esto ocurra dicha salida conmute su estado

TIMER

2N OC2 N N La constante N es calculada de la ecuacin:

TOC2=TCNT+N

TOC2=TCNT+N

...

Frec =

F ck 2N

Donde Fck es la frecuencia del reloj del timer. en este caso se est suponiendo que el preescalador del timer se activ para tener Fck= 125 Khz (la ms baja posible) y por lo tanto, despejando, obtenemos N=62,500 = $F424 Ejecucin Al ejecutarse, el efecto es muy simple, el led conectado a la patita OC2 parpadea repetitivamente a razn de 1 hertz (enciende 0.5 seg y se apaga 0.5 seg) Hardware necesario Se deber conectar un led a la patita OC2 como se muestra en la siguiente figura TIMER Continua listado del programa fuente TOC2.ASM
OC2

270 ohms

* Este programa genera una seal TTL de frecuencia fija = 1Hz * a travs de la patita OC2 del timer, con ciclo de trabajo del 50% ************************************************************** ***** TCNT EQU $100E TOC2 EQU $1018 TFLG1 EQU $1023 TMSK2 EQU $1024 divisor EQU $F424 org $0100 inicio ldaa #$40 ;configura toggle staa TCTL1 ;para el canal TOC2 ldd #divisor ;carga divisor para una frecuencia de 1 hertz std TOC2 ciclo ldaa TFLG1 ;checa si ya se alcanzo el valor de comparacin anda #$40 ;OC2F=1? beq ciclo ;si no espera staa TFLG1 ;si ya, resetea OCF2 ldd TCNT ;y lee contador de carrera libre addd #divisor ;le suma el divisor para formar el std TOC2 ;nuevo valor de comparacin bra ciclo

2.1.- TIC1.ASM. Contiene la lgica fundamental para usar una entrada de captura de eventos del timer para realizar la medicin de periodo de una seal oscilatoria de proveniente del exterior. Descripcin Este programa realiza la medicin del periodo de una seal oscilatoria de niveles TTL conectada a la patita IC1 del timer el periodo es expresado mediant un dato de 16 bits, por lo cual se pueden medir periodos desde 1 hasta 65536 1/Fck, por eejmplo, si Fck= 125,000 hertz, el rango de medicin es desde 8 seg hasta 0.524 segundos. Estrategia La lgica del programa sigue la siguiente sencilla estrategia: Cada vez que la seal a medir realiza un cambio de bajo a alto (transicin positiva) se realiza una captura, se usa una captura (capt1) y la siguiente (capt2) para realizar la resta periodo =capt2-capt1, con lo cual se obtiene el valor del periodo de la seal medido en pulsos de reloj es decir, medido en mltiplos de 1/Fck. Esta estrategia se ilustra en la siguiente figura

TIMER

T IC1

Capt1

Capt2

... Ejecucin

Al ejecutarse el programa, PROCOM comienza a recibir a travs del puerto serie los valores de periodo en datos de 16 bits en formato ASCII, los cuales se van desplegando continuamente en la pantalla cada vez que la seal de entrada produce una transicin positiva. Hardware necesario Se deber conectar una seal oscilatoria en de frecuencia en el rango mencionado a al patita OC1 como se muestra en la siguiente figura. Dicha seal puede provenir de un botn pulsador, o preferentemente de un oscilador o generador de funciones

TIMER

IC1

Generador de seal TTL

programa fuente TIC1.ASM


* Este programa mide el periodo de una seal TTL recibida por la linea IC1 * y envia el valor medido al puerto serie usando rutinas del buffalo ************************************************************************** TCNT EQU $100E TIC1 EQU $1010 TCTL2 EQU $1021 TMSK2 EQU $1024 OUT2BS EQU $FFC1 OUTCRL EQU $FFC4 org 0 periodo RMB 2 capt1 RMB 2 capt2 RMB 2 org $100 inicio ldaa #$10 ;Habilita captura en flanco de subida, canal1 staa TCTL2

Continua listado del

ciclo

ldaa #$03 staa TMSK2 ldaa TCNT std capt1 ldd TIC1 std capt2 subd capt1 beq ciclo std periodo ldx #periodo jsr OUT2BS jsr OUTCRL ldd capt2 std capt1 bra ciclo

;preescalador divisor entre 16 ;(frecuencia=125 Khz la mas baja posible) ;lee cuenta actual ;la guarda ;lee ultima captura ;la guarda ;calcula el periodo = capt2 - capt1 ;espera mientras no cambie el valor capturado ;guarda el resultado ;apunta lugar donde se guarda el periodo ;lo envia por el puerto serie ; ;reemplaza capt1 por capt2 ;repite

3.- Interrupciones
3.1.- IRQ.ASM. contiene la lgica fundamental para interactuar con la fuente ms simple de interrupciones en el sistema del microcontrolador 68HC11: la patita IRQ Descripcin Este programa realiza la conmutacin del estado de encendido / apagado de un led conectado al puerto B cada vez que se presiona diez veces consecutivas un botn conectado a la patita IRQ Ejecucin Al ejecutarse el programa el led conectado al puerto B se apaga, y el programa entra en un ciclo de conteo de las veces que ha sido presionado botn, pero NO sensa el estado del botn, sino una localidad de memoria denominada cuenta. Esta localidad sirve de comunicacin entre este ciclo de consulta de la cuenta y la rutina de atencin a la interrupcin en donde S se checa el estado del botn, ya que slo se ejecuta dicha rutina cuando el botn ha sido presionado. Hardware necesario Es muy simple, basta con un led conectado a la patita PB0 y un botn pulsador conectado a la patita IRQ como se muestra en la siguiente figura

PB0
270 ohms

MC68HC11

1k IRQ

Continua listado del programa fuente IRQ.ASM


* Este programa conmuta el estado de un LED conectado a PB0 * cada vez que un boton conectado a la lnea IRQ sea presionado * (y soltado) 10 veces consecutivas. * (el accionamiento del botn debe ser "rapido") ************************************************************** * Portb EQU $1004 Virq EQU $00EE durac EQU $8000 ORG 0 cuenta RMB 1 ORG Virq jmp rutina ;Salto a la rutina de atencion a IRQ ORG $0100 Inicio sei ;bloquea interrupciones clr cuenta ;inicia conteo cli ;habilita interrupciones lee ldaa cuenta ;consulta cuenta cmpa #$0A ;ya llego a 10? blt lee ;si no, repite ldaa Portb eora #1 staa Portb ;invierte estado del LED bra inicio * Rutina de atencion a la interrupcion * se ejecutara siempre que IRQ=0 ************************************** rutina jsr pau1ds ;pausa de 0.1 seg inc cuenta rti pau1ds ldx durac repite dex bne repite rts

3.2.- RTI.ASM. Contiene la lgica fundamental para interactuar con una de las fuentes generadora de interrupciones ms usual en aplicaciones de control en tiempo real, la Interrupcin de Tiempo Real RTI Descripcin Este programa realiza el encencido secuencial de 8 leds conectados al puerto B, de manera que cada segundo se apaga el led actual y se enciende el de la derecha y al apagar el de ms a la derecha recomienza encendiendo el de ms a la izquierda y as continuamente sin parar. El programa enfatiza de manera visual el efecto de las interrupciones, ya que el usuario puede estar trabajando en el desarrollo de otro o del mismo programa usando el buffalo y el programa seguir realizando su labor con los leds de manera concurrente con el buffalo. Ejecucin Al ejecutarse el programa el usuario no ve afectad su interfaz de trabajo con el buffalo, pero cada segundo se producir un cambio en el encendido de los leds. Esto continuar ininterrumpidamente hasta oprimir reset o apagar el micro. Hardware necesario Requiere 8 leds conectados al puerto B como se muestra en la siguiente figura
PB0

PB1

...

PB7

A continuacin se presenta el listado del programa fuente RTI.ASM


* Este programa controla el encendido de 8 leds conectados

* conectados al puerto B, encendiendo uno a la vez secuencialmente * cada segundo. Para ello utiliza la interrupcin de tiempo real ************************************************************** ***** TMSK2 EQU $1024 TFLG2 EQU $1025 PACTL EQU $1026 PORTB EQU $1004 VRTI EQU $00EB WARMST EQU $FF7C nveces EQU $F4 * $F4 =244 veces para un segundo ******************* area de datos org 0 veces RMB 1 ******************* vector de interrupcin de la RTI org VRTI jmp Int_rti ******************* programa principal org $0100 inicio lds #$47 ;inicializa stack clr veces ;iniciliza contador de interrupciones ldaa #$01 staa PORTB ;inicializa puerto B ldaa #$00 ;configura divisor para RTI con staa PACTL ;un periodo de 4.093 miliseg ldaa #$40 staa TFLG2 ;limpia solicitudes RTI pendientes staa TMSK2 ;habilita interrupciones RTI cli ;habilita interrupciones globales repite jmp WARMST ;programa principal, no hace nada * todo se hace por interrupciones ********************************************* * Rutina de atencin a la interrupcin RTI * ********************************************* Int_rti inc veces ;incrementa contador de interrupciones ldaa veces cmpa #nveces ;checa si ya es un segundo blo regresa ;si an no, regresa clr veces ;si ya, reinicia contador asl PORTB ;recorre dato en puerto B bcc regresa ;si no llego al tope regresa ldaa #$01 staa PORTB ;si ya, reinicia puerto B regresa ldaa #$40 ;limpia la bandera RTIF staa TFLG2 ;para que no vuelva a solicitar interrup rti

3.3.- TIC-INT.ASM. Contiene la lgica fundamental para interactuar con una entrada de captura de eventos del timer, pero manejada por interrupciones Descripcin

Este programa realiza el incremento automtico de un dato enviado por el puerto serie desde el microcontrolador a la PC cada vez que hay un flanco de subida en la patita IC1 del timer El programa tambin enfatiza de manera visual el efecto de las interrupciones, ya que el usurio visualiza un dato constante en pantalla recibido por PROCOM a travs del puerto serie y cada vez que se presiona un botn este dato se incrementa Ejecucin Al ejecutarse el programa el usuario recibir en la pantalla a travs de PROCOm el dato enviado desde el microcontrolador a travs del puerto serie. Dicho dato es constante y slo se incrementar al presionar un botn conectado a la patita IC1 del timer. Hardware necesario Requiere un botn pulsador conectado a la patita IC1 del timer.

TIC1-INT.ASM
* Este programa prueba las interrupciones de IC1 * enviando continuamente un dato de 16 bits al puerto serie * e incrementando el dato cada vez que se presenta * un flanco activo en este canal ************************************************************ OUT2BS EQU $FFC1 OUTCRLF EQU $FFC4 TIC1 EQU $1010 TCTL2 EQU $1021 TMSK1 EQU $1022 TFLG1 EQU $1023 VTIC1 EQU $00E8 PORTB EQU $1004 ******************* area de datos org 0 dato RMB 2 ******************* vector de interrupcin del TIC1 org VTIC1 jmp Int_tic1 org $0100 inicio lds #$47 ;inicializa stack ldaa #$10 ;Habilita canal IC1 sensible a flanco de subida staa TCTL2 ldaa #$04 staa TFLG1 ;habilita interrupciones del TIC1 staa TMSK1 ;borra bandera TIC1F ldd #$FFFF STD dato ;guarda dato de prueba

cli ;habilita interrupciones globales ldx #dato ;apunta al dato de prueba jsr OUT2BS ;lo envia por el puerto serie jsr OUTCRLF ;envia caracteres CR + LF bra repite ;mientras no hay interrupcin ************************************************* * Rutina de atencin a la interrupcin del TIC1 * ************************************************* Int_tic1 ldx dato inx stx dato ;incrementa el dato de prueba ldd dato ldaa #$04 ;borra la bandera TIC1F staa TFLG1 ;para que no vuelva a solicitar interrup rti repite

3.4.- TOF.ASM. Contiene la lgica fundamental para interactuar con una de las fuentes de interrupcin ms importantes del sistema del timer, que es el sobreflujo del contador de carrera libre (TOF) Descripcin Este programa es una mejora al medidor de periodo presentado anteriormente, ya que admite un rango de periodo en la seal de entrada desde 0 hasta 4,294,967,296 ($FFFF FFFF) ciclos de reloj, es decir, en lugar de realizar una medicin de 16 bits, la realiza de 32 bits, de esta manera si suponemos una Fck=2 Mhz (la ms rpida posible) se tendra un rango de 0.5 seg hasta 2,147.5 segundos de periodos posibles a medir. Estrategia La estrategia es idntica a la explicada para el programa TIC1.ASM, salvo que ahora se lleva la cuanta por interrupciones de el nmero de sobreflujos M que han ocurrido desde capt1 hasta capt2 y el periodo se calcula con la frmula periodo = M+1+D si D es positivo periodo = M+D si D es negativo Donde D=capt2 - capt1 Ejecucin Al ejecutarse el programa el usuario simplemente ve un despliegue continuo de valores de 32 bits en pantalla, los cuales representan el periodo de la seal en mltiplos de 1/Fck. Hardware necesario

el mismo que el ilustrado para TIC1.ASM

TOF.ASM
* Este programa realiza la medicin del periodo de una seal cuadrada TTL * conectada a la patita IC1. Usando las interrupciones de IC1 * y las interrupciones del sobreflujo. el valor de periodo medido * es un dato de 16 bits que envia al puerto cada interrup. de IC1 * (Este programa es adecuado para seales de BAJA frecuencia.) ************************************************************** ************* OUT2BS EQU $FFC1 OUTCRLF EQU $FFC4 TIC1 EQU $1010 TCTL2 EQU $1021 TMSK1 EQU $1022 TFLG1 EQU $1023 TMSK2 EQU $1024 TFLG2 EQU $1025 VTOF EQU $00D0 VTIC1 EQU $00E8 WARMST EQU $FF7C ******************* area de datos org 0 sobrefs RMB 2 periodo RMB 2 capt1 FCB 0,0 capt2 FCB 0,0 ******************* vector de interrupcin del TOF org VTOF jmp Int_tof ******************* vector de interrupcin del TIC1 org VTIC1 jmp Int_tic1 org $0100 inicio lds #$47 ;inicializa stack ldaa #$10 ;Habilita canal IC1 sensible a flanco de subida staa TCTL2 ldaa #$80 staa TMSK2 ;habilita interrupciones del sobreflujo staa TFLG2 ;limpia solicitudes pendientes ldaa #$04 staa TMSK1 ;habilita interrupciones del TIC1 staa TFLG1 ;limpia solicitudes pendientes ldd #$00 STD sobrefs ;inicializa contador de sobreflujos en cero cli ;habilita interrupciones globales repite jmp WARMST ;todo se hace por interrupciones ************************************************* * Rutina de atencin a la interrupcin del TIC1 * ************************************************* Int_tic1 ldd capt2 std capt1 ;actualiza capt1 ldd TIC1 std capt2 ;actualiza capt2 subd capt1 ;le resta capt1

std periodo ;guarda el resultado en periodo bhs sigue ;si capt2 >= capt1 continua ldx sobrefs ;si no, checa contador de sobreflujos beq sigue ;si es cero lo deja igual dex ;si no, lo decrementa stx sobrefs sigue ldx #sobrefs ;apunta al contador de sobreflujos jsr OUT2BS ;lo despliega ldx #periodo ;apunta al periodo jsr OUT2BS ;lo despliega jsr OUTCRLF ;enva <CR>+<LF> ldx #$00 stx sobrefs ;inicializa contador de sobreflujos ldaa #$04 ;limpia la bandera IC1F staa TFLG1 ;para que no vuelva a solicitar interrup rti ************************************************* * Rutina de atencin a la interrupcin del TOF * ************************************************ Int_tof ldx sobrefs inx stx sobrefs ;incrementa contador de sobreflujos ldaa #$80 ;limpia la bandera TOF staa TFLG2 ;para que no vuelva a solicitar interrup rti

4.- El convertidor Analgico / Digital


4.1.- ADC.ACM. Contiene la lgica fundamental para el manejo de una conversin continua controlada por el programa y no por el propio convertidor de cuatro canales consecutivos. Descripcin Este programa realiza la conversin continua de los canales analgicos AN0...AN3 desplegando a travs del puerto serie los resultados en 1 dato de 32 bits. El programa usa el modo de conversin mltiple MULT=1, pero no el de conversin continua CONT=0, ya que para arrancar una nueva secuencia de conversin se monitorea continuamente la bandera de fin de conversin, de manera que cuando termina una secuencia el programa arranca otra. Ejecucin Al ejecutarse el programa el usuario obtendr en pantalla datos continuos de 32 bits, en estos datos estn pegados los resultados de 8 bits de cada canal En el orden Canal 0 como MSB a Canal 3 como LSB. Hardware necesario

Requiere 4 fuentes de seal analgica conectadas a las patitas AN0,...,AN3. Estas fuentes de seal analgica pueden ser en un principio potencimetros como se muestra en la siguiente figura

Vcc

AN0

...

...
Vcc

ADC.ASM

AN3 * Este programa realiza la conversin continua de los cuatro * primeros canales analgicos AN0...AN3, enviando al puerto serie * los resultados ************************************************************** *** ADCTL EQU $1030 ADR1 EQU $1031 ADR2 EQU $1032 ADR3 EQU $1033 ADR4 EQU $1034 OPTION EQU $1039 OUT2BS EQU $FFC1 OUTCRLF EQU $FFC4 ORG $0100 inicio ldaa OPTION anda #$80 staa OPTION ;Enciende y habilita el convertidor start ldaa #%00010000 ;SCAN=0, MULT=1, D,C,B,A=0 staa ADCTL ;inicia una conversin de los canales 0,1,2,3 ciclo ldaa ADCTL anda #$80 ;fin de conversin? beq ciclo ;si no espera ldx #ADR1 ;si ya, apunta al primeros dos resultados jsr OUT2BS ;lo envia al puerto serie jsr OUTCRLF ldx #ADR3 ; apunta a segundos dos resultados jsr OUT2BS jsr OUTCRLF ;envia al puerto serie bra start

Vous aimerez peut-être aussi