Autor Tema: Transmisión de datos paralelo-serie hacia registro.  (Leído 2876 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado antimason

  • PIC12
  • **
  • Mensajes: 81
Transmisión de datos paralelo-serie hacia registro.
« en: 10 de Enero de 2009, 21:46:22 »
;Este programa saca por pin 1 del PIC 16F84A un dato de un byte hacia un registro
;de desplazamiento SERIE-PARALELO como por ejemplo el 74HC164, XTAL=4Mhz
;una vez visualizado el dato se desplaza desapareciendo y asi termina.


                           
              __CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

              LIST   P=16F84A
              INCLUDE <P16F84A.INC>

              CBLOCK  0x0C
              ENDC

EEPROM           EQU     0x1C
ALMACEN         EQU     0x20
CONTADOR      EQU     0x21
Dato                EQU     0x24

DI                   EQU     7
DO                  EQU     6
SDA                EQU     1              ;salida datos serie, pin 1 puerta A
SCL                 EQU     0             ;señal de reloj para el 74HC164, pin 0 puerta A
                 


                     ORG    0X00        ;Inicio del ensamblado desde 00
                    goto   INICIO          ;Salto a la primera instruccion
                    ORG    0X05        ;Ensamblar desde 05
 
      
INICIO        movlw  b'10101010'     ;dato a sacar por un registro de
                                     ;desplazamiento serie-paralelo 8 bits
              movwf  ALMACEN         ;registro donde se almacena el dato
              call   TX
              nop
              call   Retardo_5s
             
              movlw  b'00000000'
              movwf  ALMACEN
              call   TX
quieto        nop
              goto   quieto

             
                 

TX            movlw  .8              ;pone 8 en W
              movwf  CONTADOR        ;carga contador con 8


TXLP          bcf    EEPROM,DO       ;a 0 bit DO
              btfsc  ALMACEN,0       ;mira el bit 7 de ALMACEN y salta si es 0
              bsf    EEPROM,DO       ;a 1 bit DO
              call   BITOUT
              rrf    ALMACEN,F       ;rota a izquierda ALMACEN
              decfsz CONTADOR,F      ;decrementa contador si es 0 salta
              goto   TXLP
              return
         
 

BITOUT        BSF    STATUS,RP0      ;pagina 1     
              MOVLW  0X00
              MOVWF  TRISA           ;puerta A salida
              BCF    STATUS,RP0      ;pagina 0
 
              BTFSS  EEPROM,DO       ;mira el bit DO y salta si vale 1
              GOTO   BITLOW
              BSF    PORTA,SDA       ;pone a 1 SDA
              GOTO   CLK_OUT

 
BITLOW        BCF    PORTA,SDA       ;pone a 0 SDA


CLK_OUT       BSF    PORTA,SCL       ;pone a 1 SCL
              NOP
              NOP
              NOP
              NOP
              BCF    PORTA,SCL       ;pone a 0 SCL
              NOP

              call   Retardo_5s
              nop
              nop
              return
       

              INCLUDE <RETARDOS.INC> ;subrutinas de control de tiempos de retardo.
              END


Desconectado antimason

  • PIC12
  • **
  • Mensajes: 81
Re: Transmisión de datos paralelo-serie hacia registro.
« Respuesta #1 en: 11 de Enero de 2009, 09:13:36 »
Os puede ser útil para por ejemplo manejar una matriz de leds. :mrgreen:


 

anything