Autor Tema: Que significa este codigo ?  (Leído 2524 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Que significa este codigo ?
« en: 26 de Noviembre de 2011, 17:15:34 »
Hola:

Este codigo venia en la version inglesa de Elektor.

Código: ASM
  1. list      p=16F84A                              ; list directive to define processor
  2.                 #include <p16F84A.inc>                          ; processor specific variable definitions
  3.  
  4.                 __CONFIG   _CP_OFF & _WDT_OFF& _PWRTE_OFF & _HS_OSC
  5.  
  6.  
  7. ;***** HARDWARE CONNECTIONS:
  8.  
  9.         RA0 = DataOut (input) - RA1 = I/O clock (output) - RA2 = CS\ (output)
  10.         PORTB = ADC output monitor (8 LED, active low)
  11.  
  12. ;***** VARIABLE DEFINITIONS:
  13.  
  14.         COUNT   EQU     0x0C                                    ; variable used for delay
  15.         RESULT  EQU     0x0D                                    ; conversion result byte
  16.  
  17. ;***** PROGRAM:
  18.  
  19.         ORG     0x000                                           ; (01) processor reset vector
  20.         goto    INIT                                            ; (02) go to beginning of program
  21.  
  22. INIT    bsf     STATUS,5                                        ; (03) go to bank1
  23.         movlw   00h                                             ; (04) 00h -> W
  24.         movwf   TRISB                                           ; (05) PORTB = output
  25.         movlw   01h                                             ; (06) 01h -> W
  26.         movwf   TRISA                                           ; (07) RA0 = input, other PORTA pins are output
  27.         bcf     STATUS,5                                        ; (08) back to bank0           
  28.  
  29. MAIN    bcf     PORTA,2                                         ; (09) CS\ low -> MSB available @ DataOut
  30.         call    SHIFTIN                                         ; (10) get DB7 (MSB)
  31.         call    IOCLOCK                                         ; (11)
  32.         call    SHIFTIN                                         ; (12) get DB6
  33.         call    IOCLOCK                                         ; (13)
  34.         call    SHIFTIN                                         ; (14) get DB5
  35.         call    IOCLOCK                                         ; (15)
  36.         call    SHIFTIN                                         ; (16) get DB4
  37.         call    IOCLOCK                                         ; (17)
  38.         call    SHIFTIN                                         ; (18) get DB3
  39.         call    IOCLOCK                                         ; (19)
  40.         call    SHIFTIN                                         ; (20) get DB2
  41.         call    IOCLOCK                                         ; (21)
  42.         call    SHIFTIN                                         ; (22) get DB1
  43.         call    IOCLOCK                                         ; (23)
  44.         call    SHIFTIN                                         ; (24) get DB0 (LSB)
  45.         call    IOCLOCK                                         ; (25)                 
  46.         bsf     PORTA,2                                         ; (26) CS\ high -> TLC549 starts next conversion        
  47.         comf    RESULT,W                                        ; (27) complement result & result -> W (see text)
  48.         movwf   PORTB                                           ; (28) result -> PORTB (see text)      
  49.         call    DELAY                                           ; (29) wait at least 17us (TLC549 datasheet)
  50.         goto    MAIN                                            ; (30) endless loop
  51.  
  52. SHIFTIN rrf     PORTA,f                                         ; (31) DataOut -> Carry
  53.         rlf     RESULT,f                                        ; (32) shift carry (= DataOut) into result byte
  54.         return                                                  ; (33)
  55.                  
  56. IOCLOCK bsf     PORTA,1                                         ; (34) I/O clock high
  57.         call    DELAY                                           ; (35)
  58.         bcf     PORTA,1                                         ; (36) I/O clock low
  59.         call    DELAY                                           ; (37)
  60.         return                                                  ; (38)
  61.  
  62. DELAY   decfsz  COUNT,f                                         ; (39)
  63.         goto    DELAY                                           ; (40)         
  64.         return                                                  ; (41)
  65.  
  66.         end                                                     ; (42)


Lo que no entiendo es esta parte del codigo:


;***** HARDWARE CONNECTIONS:

   RA0 = DataOut (input) - RA1 = I/O clock (output) - RA2 = CS\ (output)
   PORTB = ADC output monitor (8 LED, active low)

Son directivas ó instrucciones de assembler ?




Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Que significa este codigo ?
« Respuesta #1 en: 26 de Noviembre de 2011, 17:27:38 »
Para mi son comentarios que no vienen al caso.
Es una rutina de comunicacion SPI a un ADC de 8 bits y muestreo por puerto B, seguramente a 8 leds.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Que significa este codigo ?
« Respuesta #2 en: 26 de Noviembre de 2011, 17:29:02 »
Totalmente de acuerdo!  :mrgreen:
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Que significa este codigo ?
« Respuesta #3 en: 26 de Noviembre de 2011, 17:43:35 »
Para mi son comentarios que no vienen al caso.
Es una rutina de comunicacion SPI a un ADC de 8 bits y muestreo por puerto B, seguramente a 8 leds.

pero si son comentarios por que no van con el punto y coma?.
me refiero a esta parte del codigo:

RA0 = DataOut (input) - RA1 = I/O clock (output) - RA2 = CS\ (output)
PORTB = ADC output monitor (8 LED, active low)


no lleva el punto y coma por lo que ya no son comentarios no?
« Última modificación: 26 de Noviembre de 2011, 17:51:49 por aitorsp »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Que significa este codigo ?
« Respuesta #4 en: 26 de Noviembre de 2011, 17:55:16 »
 :roll: Puede que se hayan olvidado, pero esta bastante claro que son comentarios indicando que función tiene cada pin  :undecided:
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Que significa este codigo ?
« Respuesta #5 en: 26 de Noviembre de 2011, 18:04:12 »
lo dice claro:

;***** HARDWARE CONNECTIONS:
RA0 = DataOut (input) - RA1 = I/O clock (output) - RA2 = CS\ (output)   
PORTB = ADC output monitor (8 LED, active low)

te indica donde tienes que conectar, RA0 = salida....

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Que significa este codigo ?
« Respuesta #6 en: 26 de Noviembre de 2011, 18:09:25 »
lo dice claro:

;***** HARDWARE CONNECTIONS:
RA0 = DataOut (input) - RA1 = I/O clock (output) - RA2 = CS\ (output)   
PORTB = ADC output monitor (8 LED, active low)

te indica donde tienes que conectar, RA0 = salida....

Ok, seguramente se les habra olvidado los puntos y coma como dice Suky

muchas gracias

Aitor

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Que significa este codigo ?
« Respuesta #7 en: 27 de Noviembre de 2011, 01:23:46 »
Puede que se hayan olvidado
jeje, pensamiento lateral! De acuerdo que son comentarios.
@fabianjsm is on twitter