Está en la página 1de 3

Ejemplo de conversin Anlogo a Digital

U1
RV1

10k
+88.8
Volts

9
10
1

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

2
3
4
5
6
7

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

21
22
23
24
25
26
27
28
11
12
13
14
15
16
17
18

200
200
200
200
200
200
200
200

D1

D2

D3

D4

D5

D6

D7

D8

LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED

PIC16F873

; Conversin A/D a 8 bits, el resultado queda en el registro ADRESH y se muestra valor binario en LEDs
; ******** DEFINICION DE REGISTROS Y BITS UTILIZADOS
status equ
ptoa
equ
ptob
equ
ptoc
equ
pclath equ
intcon equ
pir1
equ
rcsta equ
txreg equ
rcreg equ
adresh equ
adcon0 equ
trisa
equ
trisb
equ
trisc
equ
txsta equ
spbrg equ
adresl equ
adcon1 equ

03
05
06
07
0ah
0bh
0ch
18h
19h
1ah
1eh
1fh
85h
86h
87h
98h
99h
9eh
9fh

rp0
rp1
irp
z
c
txif
go

5
6
7
2
0
4
2

equ
equ
equ
equ
equ
equ
equ

loops equ
loops2 equ
buffer equ

20h
21h
22h

; ************ Configuracin para el Proteus

list p=16f873
_CP_ALL
_CP_HALF
_CP_UPPER_256
_CP_OFF
_DEBUG_ON
_DEBUG_OFF
_WRT_ENABLE_ON
_WRT_ENABLE_OFF
_CPD_ON
_CPD_OFF
_LVP_ON
_LVP_OFF
_BODEN_ON
_BODEN_OFF
_PWRTE_OFF
_PWRTE_ON
_WDT_ON
_WDT_OFF
_LP_OSC
_XT_OSC
_HS_OSC
_RC_OSC

EQU
EQU
EQU

EQU

EQU

H'0FCF'
EQU H'1FDF'
EQU H'2FEF'
H'3FFF'
H'37FF'
EQU H'3FFF'
EQU H'3FFF'
EQU H'3DFF'
EQU H'3EFF'
EQU H'3FFF'
H'3FFF'
EQU H'3F7F'
EQU H'3FFF'
EQU H'3FBF'
EQU H'3FFF'
EQU H'3FF7'
EQU H'3FFF'
EQU H'3FFB'
H'3FFC'
EQU H'3FFD'
EQU H'3FFE'
EQU H'3FFF'

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON

; ***** EMPIEZA EL PROGRAMA


org
goto

00
inicio

retarms
top2
top

;subrutina de retardo en milisegundos


movwf loops
movlw d'110'
movwf loops2
nop
nop
nop
nop
nop
nop
decfsz loops2,1
goto top
decfsz loops,1
goto top2
return

;el numero de milisegundos llega


;cargado en el registro loops

;pregunta si termino 1 ms
;pregunta si termina el retardo

;Rutina de conversin A/D a 8 bits


conver nop
nop
nop
nop

;estas instrucciones nop sirven para


;darle al micro el tiempo de adquisicion
;requerido. En este caso es de 7 s aprox.

nop
nop
nop
nop
bsf
nop
nop
consu btfsc
goto
movf
movwf
return

adcon0,go

;inicia conversion

adcon0,go
consu
adresh,0
buffer

;espera que termine de convertir el dato


;guarda resultado de 8 bits en W y en buffer

; ************ PROGRAMA PRINCIPAL ***************


inicio

clrf
bsf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
bcf

status
status,rp0
b'11111111'
trisa
b'00000000'
trisb
b'11111111'
trisc
b'00000010'
adcon1
status,rp0

;poner status en cero para asegurar banco 0


;pasar al banco 1

movlw
movwf
call
movf
movwf

b'10000001'
adcon0
conver
buffer,0
ptob

;selecciona canal 0, reloj de conv. fosc/32


;convertidor encendido
;llama rutina de conversion A/D
;pasa el buffer a W

;puerto A entradas
;puerto B entradas
;puerto C entradas y pin TX salida
;selecciono Vref internos (+5 y GND) y 5 canales A/D
;8 bits de datos en ADRESH y 2 bits en ADRESL
;pasar al banco 0

movlw d'250'
call
retarms

;retardo entre conversiones de 4 caracteres


;este retardo equivale a 250 milisegundos
;el usuario puede escoger el tiempo que desee

goto

;Vuelve a empezar el ciclo para enviar otro paquete


;de datos

end

inicio