SlideShare una empresa de Scribd logo
4
Lo más leído
5
Lo más leído
6
Lo más leído
Laboratorio de Microcomputadoras
Facultad de
Ingeniería
Práctica 06
Ortiz Gómez Cristian
Teoría: Grupo 1
Sánchez Segovia Diego Armando
Teoría: Grupo 3
Convertidor
Analógico / Digital
Convertidor Analógico / Digital
Objetivo
• Familiarizar al alumno con el uso y aplicación del Convertidor Analógico / Digital de un microcontrolador.
Desarrollo
Realizar los programas solicitados y comprobar su funcionamiento
1. Empleando el canal de su elección del convertidor A/D, realizar un programa en el cual, se acuerdo a una entrada
analógica que se ingrese por este canal, se represente el resultado de la conversión en un puerto paralelo; utilizar el
arreglo de leds para ver la salida, como se muestra en la figura 6.1.
1
ConvertidorAnalógico/Digital
processor 16f877
include <p16f877.inc>
; Variables para el DELAY
val equ h'20'
cte equ 20h
org 0
goto BEGIN
org 5
1
2
3
4
5
6
7
8
9
10
11
Figura 6.1
2
ConvertidorAnalógico/Digital
BEGIN
clrf PORTA ; Limpia el puerto A
clrf PORTB ; Limpia el puerto B
bsf STATUS, RP0
bcf STATUS, RP1 ; Cambia la banco 1
clrf TRISB ; Configura puerto B como salida
clrf ADCON1 ; Configura puertos A y E como analógicos
movlw 3Fh
movwf TRISA ; Configura el puerto A como entrada
bcf STATUS, RP0 ; Regresa al banco 0
movlw b'11000001' ; Configuración ADCON0
movwf ADCON ; ADCS1 = 1 ADCS0 = 1 CHS2 = 0 CHS1 = 0
; CHS0 = 0 GO/DONE = 0 - ADON = 1
GO
bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1
call DELAY ; Espera a que termine la conversión
DONE
brfsc ADCON0, 2 ; Pregunta por GO/DONE = 0 (Terminó la conversión)
goto DONE ; No, vuelve a preguntar
movf ADRESH, 0 ; Mueve la parte alta de la conversión a W
movwf PORTB ; PORTB = ADRESH (Muestra el resultado)
goto GO ; Regresa a la conversión
DELAY ; Rutina que genera un RETARDO
movlw cte
movwf val
DECREASE
decfsz val
goto DECREASE
return
END
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2. Utilizando el circuito anterior, realizar un programa que indique si el valor del voltaje a la entrada del convertidor
A/D, se encuentra entre los siguientes rangos de voltaje.
Entradas Salidas
PX2 PX1 PX0
Ve < 1/3 < VCC 0 0 1
1/3 VCC < Ve < 2/3 VCC 0 1 1
2/3 VCC < Ve < VCC 1 1 1
Tabla 6.1 Donde Vcc = 5 V
processor 16f877
include <p16f877.inc>
; Variables para el DELAY
val equ h'20'
cte equ 20h
org 0
goto BEGIN
org 5
1
2
3
4
5
6
7
8
9
10
3
ConvertidorAnalógico/Digital
BEGIN
clrf PORTA ; Limpia el puerto A
clrf PORTB ; Limpia el puerto B
bsf STATUS, RP0
bcf STATUS, RP1 ; Cambia la banco 1
clrf TRISB ; Configura puerto B como salida
clrf ADCON1 ; Configura puertos A y E como analógicos
movlw 3Fh
movwf TRISA ; Configura el puerto A como entrada
bcf STATUS, RP0 ; Regresa al banco 0
movlw b'11000001' ; Configuración ADCON0
movwf ADCON ; ADCS1 = 1 ADCS0 = 1 CHS2 = 0 CHS1 = 0
; CHS0 = 0 GO/DONE = 0 - ADON = 1
GO
bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1
call DELAY ; Espera a que termine la conversión
DONE
brfsc ADCON0, 2 ; Pregunta por GO/DONE = 0 (Terminó la conversión)
goto DONE ; No, vuelve a preguntar
movf ADRESH, 0 ; Mueve la parte alta de la conversión a W
sublw h'55' ; Realiza 55 - W (1/3Vcc = 155h)
btfsc STATUS, 0 ; Verifica si W es menor (Carry = 0?)
goto OUT1 ; Sí, ve a SALIDA1 (Ve < 1/3Vcc)
movf ADRESH, 0 ; No
sublw h'AA' ; AAh - W (2/3Vcc = 1AAh)
btfsc STATUS, 0 ; Verifica si W es menor (Carry=0)
goto OUT2 ; Sí, se cumple que 1/3Vcc < Ve < 2/3Vcc
movf ADRESH, 0 ; No
sublw h'FF' ; FFh - W (Vcc=3ffh)
btfsc STATUS, 0 ; Verifica si W es menor a VCC (Carry=0?)
goto OUT3 ; Sí, se cumple que 2/3Vcc < Ve < Vcc
OUT1
movlw 1 ; Salida 001
movwf PORTB
goto LOOP
OUT2
movlw 3 ; Salida 011
movwf PORTB
goto LOOP
OUT3
movlw 7 ; Salida 111
movwf PORTB
goto LOOP
DELAY ; Rutina que genera un RETARDO
movlw cte
movwf val
DECREASE
decfsz val
goto DECREASE
return
END
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
4
ConvertidorAnalógico/Digital
3. Realizar un programa, de manera que identifique cuál de tres señales analógicas que ingresan al convertidor A/D es
mayor que las otras dos; representar el resultado de acuerdo al contenido en la tabla 6.2.
Señal PB2 PB1 PB0
Ve1 < Ve2 y Ve3 0 0 1
Ve2 < Ve1 y Ve3 0 1 0
Ve3 < Ve1 y Ve2 1 0 0
Tabla 6.2
processor 16f877
include <p16f877.inc>
; Variables para el DELAY
val equ h'20'
cte equ 20h
; Canales
ch1 equ h'21'
ch2 equ h'22'
ch3 equ h'23'
org 0
goto BEGIN
org 5
LOOP
movlw b'11000001' ; Configuración ADCON0 canal 0
movwf ADCON0
bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1
call DELAY ; Espera que termine la conversión
DONE1
btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?)
goto DONE1
movf ADRESH, 0 ; Mueve a W
movwf ch1 ; Guardamos el valor en ch1
movlw b'11001001' ; Configuración ADCON0 canal 1
movwf ADCON0
bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1
call DELAY ; Espera que termine la conversión
DONE2
btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?)
goto DONE1
movf ADRESH, 0 ; Mueve a W
movwf ch2 ; Guardamos el valor en ch2
movlw b'11010001' ; Configuración ADCON0 canal 2
movwf ADCON0
bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1
call DELAY ; Espera que termine la conversión
1
2
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
5
ConvertidorAnalógico/Digital
DONE3
btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?)
goto DONE3
movf ADRESH, 0 ; Mueve a W
movwf ch3 ; Guardamos el valor en ch3
movf ch1, W ; Mueve cal1 a w
subwf ch2, W ; Realiza canal2 - canal1(w)
btfss STATUS, C ; Verifica si W es mayor
goto ONE_two ; Sí, entonces Ve1 > Ve2
goto TWO_one ; No, entonces Ve2 > Ve1
ONE_two ; Ve1 > Ve2
movf ch1, W
subwf ch3, W ; Realiza canal3 - canal1(W)
btfss STATUS, C ; Verifica si W es mayor
goto ONE_two_three ; Sí, entonces Ve1 > Ve3
goto THREE_one_two ; No, entonces Ve3 > Ve1
TWO_one ; Ve1 < Ve2
movf ch2, W
subwf ch3, W ; Realiza canal3 – canal2(W)
btfss STATUS, C ; Verifica si W es mayor
goto TWO_one_three ; Sí, entonces Ve2 > Ve3
goto THREE_one_two ; No, entonces Ve3 > Ve2
ONE_two_three ; Ve1 > Ve2 y Ve3
movlw 1
movwf PORTB ;Salida 0001
goto LOOP
TWO_one_three ; Ve2 > Ve1 y Ve3
movlw 2
movwf PORTB ;Salida 0010
goto LOOP
THREE_one_two ; Ve3 > Ve1 y Ve2
movlw 4
movwf PORTB ;Salida 0100
goto LOOP
DELAY ; Rutina que genera un RETARDO
movlw cte
movwf val
DECREASE
decfsz val
goto DECREASE
return
END
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Conclusiones
El conversor analógico digital permite medir señales analógicas en forma digital, para ello el PIC cuenta con pines por donde
le llegará la señal analógica, estos pines deben configurarse como entradas analógicas, el conversor A/D cuenta con un
circuito que carga un condensador interno al PIC con la tensión analógica que le está llegando a la entrada analógica, luego
la tensión almacenada en el condensador lo convierte en un número binario de 10 bits que representará la tensión
almacenada en el condensador, este número binario se guarda en sus registros ADRESH y ADRESL de 8 bits cada uno pero
estos actúan como un solo registro de 16 bits.

Más contenido relacionado

PDF
Laboratorio de Microcomputadoras - Práctica 04
PDF
Laboratorio de Microcomputadoras - Práctica 01
PDF
Laboratorio de Microcomputadoras - Práctica 02
PDF
Modulador y demodulador ask
PDF
Laboratorio Computación Gráfica - Práctica 07
PDF
PDF
Señales de tiempo continuo y discreto MATLAB
PDF
Guía rápida tmr0 e interrupciones
Laboratorio de Microcomputadoras - Práctica 04
Laboratorio de Microcomputadoras - Práctica 01
Laboratorio de Microcomputadoras - Práctica 02
Modulador y demodulador ask
Laboratorio Computación Gráfica - Práctica 07
Señales de tiempo continuo y discreto MATLAB
Guía rápida tmr0 e interrupciones

La actualidad más candente (20)

PDF
direccionamiento microcontroladores pic
PPTX
PDF
Guia2 ac
DOCX
Apuntes generación de codigo intermedio
PDF
Tecnicas mic pdh sdh
PDF
Registro status PIC16F84A
PPTX
Conmutación espacial
PDF
Circuitos Logicos Combinacionales
PDF
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
PDF
programacion con microcontrolador pic 16f84
PDF
Problemariodigital3 bcd
PDF
Laboratorio 1: Circuitos Resonantes.
DOCX
Tutorial voz ip packet tracer
PDF
2da tarea de control
DOCX
Primer Laboratorio - Sistemas Digitales I
PDF
Mapas de karnaugh para 5 variables
PPTX
Unidad 2 TELECOMUNICACIONES
PPTX
What is Gray Code?
PDF
Uso de las tablas en lenguaje ensamblador
direccionamiento microcontroladores pic
Guia2 ac
Apuntes generación de codigo intermedio
Tecnicas mic pdh sdh
Registro status PIC16F84A
Conmutación espacial
Circuitos Logicos Combinacionales
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
programacion con microcontrolador pic 16f84
Problemariodigital3 bcd
Laboratorio 1: Circuitos Resonantes.
Tutorial voz ip packet tracer
2da tarea de control
Primer Laboratorio - Sistemas Digitales I
Mapas de karnaugh para 5 variables
Unidad 2 TELECOMUNICACIONES
What is Gray Code?
Uso de las tablas en lenguaje ensamblador
Publicidad

Similar a Laboratorio de Microcomputadoras - Práctica 06 (20)

PDF
Laboratorio de Microcomputadoras - Práctica 05
PDF
Laboratorio de Microcomputadoras - Práctica 03
PDF
Proye84
PDF
PROYECTOS CON PIC 16F84
PDF
Proyectos con el pic16 f84 cekit
TXT
PDF
Guía de ejercicios resueltos y propuestos tema 4
PDF
Picprimerospasos
PPT
Conversor_Analogo_a_Digital.ppt
PDF
Ejemplo varias interrupciones
DOC
Examen micros t1_06_solucion
PDF
Diseño rejilla lateral
DOCX
Parcial t1 2010 sol
PDF
Juego de instrucciones: PIC 16F87x
PDF
Curso de microcontroladores capitulo 08
PPSX
Debug utilitario dos
PDF
Microcontroladores - Configuración de puertos, bucles y saltos
PDF
Curso Valvulas de Control OK.pdf
PDF
Guía de ejercicios resueltos tema 2
PDF
Microprogramacion - Interrupciones y timers
Laboratorio de Microcomputadoras - Práctica 05
Laboratorio de Microcomputadoras - Práctica 03
Proye84
PROYECTOS CON PIC 16F84
Proyectos con el pic16 f84 cekit
Guía de ejercicios resueltos y propuestos tema 4
Picprimerospasos
Conversor_Analogo_a_Digital.ppt
Ejemplo varias interrupciones
Examen micros t1_06_solucion
Diseño rejilla lateral
Parcial t1 2010 sol
Juego de instrucciones: PIC 16F87x
Curso de microcontroladores capitulo 08
Debug utilitario dos
Microcontroladores - Configuración de puertos, bucles y saltos
Curso Valvulas de Control OK.pdf
Guía de ejercicios resueltos tema 2
Microprogramacion - Interrupciones y timers
Publicidad

Más de Cristian Ortiz Gómez (19)

PDF
Arquitectura Empresarial - Proyecto Integrador
PDF
Química - Actividad 1
PDF
Laboratorio Computación Gráfica - Práctica 03
PDF
Laboratorio Computación Gráfica - Práctica 10
PDF
Laboratorio Computación Gráfica - Práctica 05
PDF
Laboratorio Computación Gráfica - Práctica 05
PDF
Laboratorio Computación Gráfica - Práctica 05
PDF
Laboratorio Computación Gráfica - Práctica 05
PDF
Laboratorio de dispositivos de almacenamiento y e entrada y salida - Práctica 01
PDF
Laboratorio Redes de Datos - Práctica 03
PDF
Laboratorio Redes de Datos - Práctica 02
PDF
Laboratorio Redes de Datos - Práctica 01
PDF
Análisis de Circuitos Eléctricos - Práctica 07
PDF
Análisis de Circuitos Eléctricos - Práctica 06
PDF
Análisis de Circuitos Eléctricos - Práctica 04
PDF
Sistemas de comunicaciones - Práctica 05
PDF
Sistemas de comunicaciones - Práctica 04
PDF
Sistemas de comunicaciones - Práctica 03
PDF
Sistemas de comunicaciones - Práctica 02
Arquitectura Empresarial - Proyecto Integrador
Química - Actividad 1
Laboratorio Computación Gráfica - Práctica 03
Laboratorio Computación Gráfica - Práctica 10
Laboratorio Computación Gráfica - Práctica 05
Laboratorio Computación Gráfica - Práctica 05
Laboratorio Computación Gráfica - Práctica 05
Laboratorio Computación Gráfica - Práctica 05
Laboratorio de dispositivos de almacenamiento y e entrada y salida - Práctica 01
Laboratorio Redes de Datos - Práctica 03
Laboratorio Redes de Datos - Práctica 02
Laboratorio Redes de Datos - Práctica 01
Análisis de Circuitos Eléctricos - Práctica 07
Análisis de Circuitos Eléctricos - Práctica 06
Análisis de Circuitos Eléctricos - Práctica 04
Sistemas de comunicaciones - Práctica 05
Sistemas de comunicaciones - Práctica 04
Sistemas de comunicaciones - Práctica 03
Sistemas de comunicaciones - Práctica 02

Último (20)

PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
UD3 -Producción, distribución del aire MA.pdf
PPTX
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PDF
Clase 2 de abril Educacion adistancia.pdf
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PPTX
Software para la educación instituciones superiores
PDF
silabos de colegio privado para clases tema2
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PPTX
Electronica II, material basico de electronica II
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PPTX
leyes de los gases Ideales. combustible refinación
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PPTX
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
PDF
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
PPTX
Logging While Drilling Ingenieria Petrolera.pptx
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
UD3 -Producción, distribución del aire MA.pdf
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
S15 Protección de redes electricas 2025-1_removed.pdf
Clase 2 de abril Educacion adistancia.pdf
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
Software para la educación instituciones superiores
silabos de colegio privado para clases tema2
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
Electronica II, material basico de electronica II
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
clase MICROCONTROLADORES ago-dic 2019.pptx
leyes de los gases Ideales. combustible refinación
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
Logging While Drilling Ingenieria Petrolera.pptx
357161027-seguridad-industrial-diapositivas-ppt.ppt
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx

Laboratorio de Microcomputadoras - Práctica 06

  • 1. Laboratorio de Microcomputadoras Facultad de Ingeniería Práctica 06 Ortiz Gómez Cristian Teoría: Grupo 1 Sánchez Segovia Diego Armando Teoría: Grupo 3 Convertidor Analógico / Digital
  • 2. Convertidor Analógico / Digital Objetivo • Familiarizar al alumno con el uso y aplicación del Convertidor Analógico / Digital de un microcontrolador. Desarrollo Realizar los programas solicitados y comprobar su funcionamiento 1. Empleando el canal de su elección del convertidor A/D, realizar un programa en el cual, se acuerdo a una entrada analógica que se ingrese por este canal, se represente el resultado de la conversión en un puerto paralelo; utilizar el arreglo de leds para ver la salida, como se muestra en la figura 6.1. 1 ConvertidorAnalógico/Digital processor 16f877 include <p16f877.inc> ; Variables para el DELAY val equ h'20' cte equ 20h org 0 goto BEGIN org 5 1 2 3 4 5 6 7 8 9 10 11 Figura 6.1
  • 3. 2 ConvertidorAnalógico/Digital BEGIN clrf PORTA ; Limpia el puerto A clrf PORTB ; Limpia el puerto B bsf STATUS, RP0 bcf STATUS, RP1 ; Cambia la banco 1 clrf TRISB ; Configura puerto B como salida clrf ADCON1 ; Configura puertos A y E como analógicos movlw 3Fh movwf TRISA ; Configura el puerto A como entrada bcf STATUS, RP0 ; Regresa al banco 0 movlw b'11000001' ; Configuración ADCON0 movwf ADCON ; ADCS1 = 1 ADCS0 = 1 CHS2 = 0 CHS1 = 0 ; CHS0 = 0 GO/DONE = 0 - ADON = 1 GO bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1 call DELAY ; Espera a que termine la conversión DONE brfsc ADCON0, 2 ; Pregunta por GO/DONE = 0 (Terminó la conversión) goto DONE ; No, vuelve a preguntar movf ADRESH, 0 ; Mueve la parte alta de la conversión a W movwf PORTB ; PORTB = ADRESH (Muestra el resultado) goto GO ; Regresa a la conversión DELAY ; Rutina que genera un RETARDO movlw cte movwf val DECREASE decfsz val goto DECREASE return END 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 2. Utilizando el circuito anterior, realizar un programa que indique si el valor del voltaje a la entrada del convertidor A/D, se encuentra entre los siguientes rangos de voltaje. Entradas Salidas PX2 PX1 PX0 Ve < 1/3 < VCC 0 0 1 1/3 VCC < Ve < 2/3 VCC 0 1 1 2/3 VCC < Ve < VCC 1 1 1 Tabla 6.1 Donde Vcc = 5 V processor 16f877 include <p16f877.inc> ; Variables para el DELAY val equ h'20' cte equ 20h org 0 goto BEGIN org 5 1 2 3 4 5 6 7 8 9 10
  • 4. 3 ConvertidorAnalógico/Digital BEGIN clrf PORTA ; Limpia el puerto A clrf PORTB ; Limpia el puerto B bsf STATUS, RP0 bcf STATUS, RP1 ; Cambia la banco 1 clrf TRISB ; Configura puerto B como salida clrf ADCON1 ; Configura puertos A y E como analógicos movlw 3Fh movwf TRISA ; Configura el puerto A como entrada bcf STATUS, RP0 ; Regresa al banco 0 movlw b'11000001' ; Configuración ADCON0 movwf ADCON ; ADCS1 = 1 ADCS0 = 1 CHS2 = 0 CHS1 = 0 ; CHS0 = 0 GO/DONE = 0 - ADON = 1 GO bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1 call DELAY ; Espera a que termine la conversión DONE brfsc ADCON0, 2 ; Pregunta por GO/DONE = 0 (Terminó la conversión) goto DONE ; No, vuelve a preguntar movf ADRESH, 0 ; Mueve la parte alta de la conversión a W sublw h'55' ; Realiza 55 - W (1/3Vcc = 155h) btfsc STATUS, 0 ; Verifica si W es menor (Carry = 0?) goto OUT1 ; Sí, ve a SALIDA1 (Ve < 1/3Vcc) movf ADRESH, 0 ; No sublw h'AA' ; AAh - W (2/3Vcc = 1AAh) btfsc STATUS, 0 ; Verifica si W es menor (Carry=0) goto OUT2 ; Sí, se cumple que 1/3Vcc < Ve < 2/3Vcc movf ADRESH, 0 ; No sublw h'FF' ; FFh - W (Vcc=3ffh) btfsc STATUS, 0 ; Verifica si W es menor a VCC (Carry=0?) goto OUT3 ; Sí, se cumple que 2/3Vcc < Ve < Vcc OUT1 movlw 1 ; Salida 001 movwf PORTB goto LOOP OUT2 movlw 3 ; Salida 011 movwf PORTB goto LOOP OUT3 movlw 7 ; Salida 111 movwf PORTB goto LOOP DELAY ; Rutina que genera un RETARDO movlw cte movwf val DECREASE decfsz val goto DECREASE return END 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 5. 4 ConvertidorAnalógico/Digital 3. Realizar un programa, de manera que identifique cuál de tres señales analógicas que ingresan al convertidor A/D es mayor que las otras dos; representar el resultado de acuerdo al contenido en la tabla 6.2. Señal PB2 PB1 PB0 Ve1 < Ve2 y Ve3 0 0 1 Ve2 < Ve1 y Ve3 0 1 0 Ve3 < Ve1 y Ve2 1 0 0 Tabla 6.2 processor 16f877 include <p16f877.inc> ; Variables para el DELAY val equ h'20' cte equ 20h ; Canales ch1 equ h'21' ch2 equ h'22' ch3 equ h'23' org 0 goto BEGIN org 5 LOOP movlw b'11000001' ; Configuración ADCON0 canal 0 movwf ADCON0 bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1 call DELAY ; Espera que termine la conversión DONE1 btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?) goto DONE1 movf ADRESH, 0 ; Mueve a W movwf ch1 ; Guardamos el valor en ch1 movlw b'11001001' ; Configuración ADCON0 canal 1 movwf ADCON0 bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1 call DELAY ; Espera que termine la conversión DONE2 btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?) goto DONE1 movf ADRESH, 0 ; Mueve a W movwf ch2 ; Guardamos el valor en ch2 movlw b'11010001' ; Configuración ADCON0 canal 2 movwf ADCON0 bsf ADCON0, 2 ; Conversión en progreso GO/DONE = 1 call DELAY ; Espera que termine la conversión 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • 6. 5 ConvertidorAnalógico/Digital DONE3 btfsc ADCON0, 2 ; Pregunta por DONE(Termino conversión?) goto DONE3 movf ADRESH, 0 ; Mueve a W movwf ch3 ; Guardamos el valor en ch3 movf ch1, W ; Mueve cal1 a w subwf ch2, W ; Realiza canal2 - canal1(w) btfss STATUS, C ; Verifica si W es mayor goto ONE_two ; Sí, entonces Ve1 > Ve2 goto TWO_one ; No, entonces Ve2 > Ve1 ONE_two ; Ve1 > Ve2 movf ch1, W subwf ch3, W ; Realiza canal3 - canal1(W) btfss STATUS, C ; Verifica si W es mayor goto ONE_two_three ; Sí, entonces Ve1 > Ve3 goto THREE_one_two ; No, entonces Ve3 > Ve1 TWO_one ; Ve1 < Ve2 movf ch2, W subwf ch3, W ; Realiza canal3 – canal2(W) btfss STATUS, C ; Verifica si W es mayor goto TWO_one_three ; Sí, entonces Ve2 > Ve3 goto THREE_one_two ; No, entonces Ve3 > Ve2 ONE_two_three ; Ve1 > Ve2 y Ve3 movlw 1 movwf PORTB ;Salida 0001 goto LOOP TWO_one_three ; Ve2 > Ve1 y Ve3 movlw 2 movwf PORTB ;Salida 0010 goto LOOP THREE_one_two ; Ve3 > Ve1 y Ve2 movlw 4 movwf PORTB ;Salida 0100 goto LOOP DELAY ; Rutina que genera un RETARDO movlw cte movwf val DECREASE decfsz val goto DECREASE return END 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 Conclusiones El conversor analógico digital permite medir señales analógicas en forma digital, para ello el PIC cuenta con pines por donde le llegará la señal analógica, estos pines deben configurarse como entradas analógicas, el conversor A/D cuenta con un circuito que carga un condensador interno al PIC con la tensión analógica que le está llegando a la entrada analógica, luego la tensión almacenada en el condensador lo convierte en un número binario de 10 bits que representará la tensión almacenada en el condensador, este número binario se guarda en sus registros ADRESH y ADRESL de 8 bits cada uno pero estos actúan como un solo registro de 16 bits.