;Programa de conversion A/D y muestra de resultados en 4 displays

List p=16f877


adcon0    equ  0x1F
adcon1    equ  0x9F
adresl    equ  0x9E      ;aqui se guarda el valor de la conversin
status    equ  0x03
porta     equ  0x05      ;puerto de toma de dato de conversin (RA0/AN0: 2)
trisa     equ  0x85 
portc     equ  0x07      ;puerto hacia el 74LS47 (15,16,17,18)
trisc     equ  0x87
portd     equ  0x08      ;puerto que sale a los transistores 2N2222 (19,20,21,22)
trisd     equ  0x88
numero    equ  0xA0      ;esta en el banco1
bit       equ  0xA1      ;esta en el banco1
unidades  equ  0x21      
decenas   equ  0x22
centenas  equ  0x23
unmil     equ  0x24
temp1     equ  0x26

          org 0
          goto inicio

inicio    org 5
          bsf       status, 5
          movlw     0x01
          movwf     trisa          ;vamos a usar el primer ADC         
          movlw     0x00
          movwf     trisc
          movwf     trisd
          movlw     0x82
          movwf     adcon1         ;Just: R    10000010 (DDDAAAAA)
     
          bcf       status, 5
          movlw     0x01
          movwf     adcon0         ;Fosc/2, CH0  00000001

ciclo     NOP
          NOP
proceso   bsf       adcon0, 2      ;arranca la conversion
          btfsc     adcon0, 2
          goto      proceso
          bsf       status, 5      ;banco1
          movlw     0x00
          movwf     numero
          molw      0x01           
conteo    btfsc     adresl, 0
          addwf     numero, 1      ;suma 1
          addlw     0x01
          btfsc     adresl, 1
          addwf     numero, 1      ;suma 2
          addlw     0x02
          btfsc     adresl, 2
          addwf     numero, 1      ;suma 4
          addwf     0x04















          bcf       status, 5
          movlw     unidades
          movwf     portc          ;se mueve unidades al puerto c
          movlw     0x01 
          movwf     portd
          call      tiempo
          clrf      portd

          movlw     decenas
          movwf     portc          ;se mueve decenas al puerto c
          movlw     0x02
          movwf     portd
          call      tiempo
          clrf      portd

          movlw     centenas
          movwf     portc          ;se mueve centenas al port c
          movlw     0x04
          movwf     portd
          call      tiempo
          clrf      portd

          movlw     unmil
          movwf     portc          ;se mueve unmil al port c
          movwf     0x08
          movwf     portd
          call      tiempo
          clrf      portd
          goto      ciclo

tiempo    movlw  0xff
          movwf  temp1
loop      decfsz temp1, 1
          goto   loop
          return

       end
