Colapsar columna

Menu Usuario -

Hola, Visitante
avatar


Mas Activos -

nocturno
Mensajes: 2011
Meta
Mensajes: 276
djfreeman
Mensajes: 272
spiderman
Mensajes: 257
HJ.0x00
Mensajes: 224

Autor Tema: Por favor necesito ayuda para iniciar el PIC 12F629  (Leído 9674 veces)

Desconectado Guillermo Fernandez

  • Nuevo fichaje
  • *
  • Mensajes: 1
Por favor necesito ayuda para iniciar el PIC 12F629
« en: Agosto 23, 2018, 01:48 »
El problema que tengo es que a pesar de tener bien el código, compila bien pero al correrlo con el MPLAB SIM no escribe sobre la línea GP4. Si cambio el código para escoger otra línea del PIC, sucede lo mismo siempre va a fallar una de las líneas del PIC. La línea GP3 que es exclusivamente de entrada la voy a configurar como MCLRE y el resto de líneas las necesito 4 de ellas como entradas y la que sobra como salida.A pesar de que no he podido a;Proyecto: Control Remoto
;Nombre proyecto: CREMOTO.asm
;Autor: Guillermo Fernandez
;Fecha: 19/08/2018
;Micro: PIC12F629
;Clock interno 4 Mhz

            LIST P = 12F629      
   
            INCLUDE   "P12F629.INC"

#define         B4         GPIO,0
#define         B3         GPIO,1
#define         B2         GPIO,2
#define         B1         GPIO,5
#define         SAL         GPIO,4

         
loops         equ         20h
loops2         equ         21h
r0d            equ         22h
r0e            equ         23h
trans         equ         24h
conta         equ         25h
            
            org         000         ;Vector de reset
            bsf         STATUS,RP0   ;Banco 1
            call      3FFh      ;Get the Cal value
            movwf      OSCCAL      ;Calibrate
            bcf         STATUS,RP0   ;Banco 0
            goto      inicio      ;Va a iniciar el programa principal
            org         10h

delay1         movlw      .10      ;Es .166 Carga para 833 uS aproximadamente
startup         movwf      r0e         ;Llevar valor de carga al retardo
redo         nop
            nop
            decfsz      r0e         ;Decrementar retardo, saltar si cero
            goto      redo
            retlw      0         ;Retornar
   
retardo         movlw      d'2'      ;Es 100 Subrutina de retardo de 100 mS
            movwf      loops      ;El registro loops contiene el # de mS
top2         movlw      d'2'      ;Cambiar a 110
            movwf      loops2
top            nop
            nop
            nop
            nop
            nop
            nop
            decfsz      loops2      ;Pregunta si terminó 1 mS
            goto      top
            decfsz      loops      ;Pregunta si terminó el retardo
            goto      top2
            retlw      0
                              ;Rutina para enviar dato
enviar         movwf      trans      ;Lleva el contenido de w a transmisión
xmrt         movlw      8         ;Carga con número de bits
            movwf      r0d         ;El contador
            bcf         SAL         ;Coloca salida en bajo
            call      delay1      ;para generar bit de arranque
xnext         bcf         STATUS,C   ;Limpiar carry
            rrf         trans      ;Rotar registro de transmisión
            btfsc      STATUS,C   ;Preguntar por el carry
            bsf         SAL         ;Si es uno, colocar línea en alto
            call      delay1      ;Llamar retardo de 1 bit
            decfsz      r0d         ;Decrementar contador, saltar si es cero
            goto      xnext      ;Repetir hasta transmitir todo el dato
            bsf         SAL         ;Colocar l{inea de transmisión en alto
            call      delay1      ;Llamar retardo de 1 -bit de parada-
            retlw      0         ;Retornar
                     
inicio         clrf      GPIO
            movlw      B'00000111'   ;Set port as digital input
            movwf      CMCON      ;digital IO
            bsf         STATUS,RP0   ;Banco 1
            movlw      B'00101111'   ;GP1 and GP4 input, GP5 output
            movwf      TRISIO
            movlw      B'00000000'   ;Pull up off. Prescaler 1:2 TMR0
            movwf      OPTION_REG
            movlw      b'00000000'
            movwf      WPU
            movlw      B'00000000'
            movwf      IOC
            bcf         STATUS,RP0   ;Banco 0
            bcf         INTCON,GIE   ;Global interrupt on
            bcf         INTCON,GPIE   ;Periferical interrupt on
            nop
            nop
            nop
            nop
            nop
            clrf      conta      ;Inicia contador a cero

EXPLORA         btfsc      B1         ;Está oprimida la teccla B1?
            goto      TECLA1
            btfsc      B2         ;Está oprimida la tecla B2?
            goto      TECLA2
            btfsc      B3         ;Está oprimida la tecla B3?
            goto      TECLA3
            btfsc      B4         ;Está oprimida la tecla B4?
            goto      TECLA4      
            goto      inicio
            
ciclo         movlw      B'10101010'
            call      enviar
            goto      inicio

pulsa1         btfss      B1         ;Pregunta si el pulsador está oprimido
            goto      pulsa1      ;Si no lo está continua revisandolo
            call      retardo      ;Si está oprimido retarda 100 ms
            btfss      B1         ;Para comprobar
            goto      pulsa1      ;Si no lo está vuelve a revisar
            goto      ciclo      ;Si está oprimido lo envía


         
TECLA1         goto      pulsa1
            
TECLA2         goto      TECLA2
TECLA3         goto      TECLA3   
TECLA4         goto      TECLA4         
            endvanzar en el proyecto por ésta dificultad me permito mandar el código hasta donde lo tengo. Muchas gracias.