Autor Tema: debugg con pickit 3 y el 16f877a  (Leído 667 veces)

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

Desconectado jluisruelas

  • PIC10
  • *
  • Mensajes: 35
debugg con pickit 3 y el 16f877a
« en: 30 de Marzo de 2014, 04:33:52 »
amigos, soy nuevo en esto, tengo una duda que me esta volviendo loco y es que no se por que mi programa al ejecutar unas rutinas de tiempo este se reinicia, quiero hacer el debugg, pero no se como hacerlo la verdad y no se ingles, :oops: les pongo el codigo del porgrama
      LIST P=16F877A
      #INCLUDE <P16F877A.INC>
      __CONFIG _CP_ALL & _CPD_ON & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

DATO   EQU 0X21
VAR      EQU 0X20
DATO1   EQU 0X22
DATO2   EQU 0X23
DATO3   EQU 0X24
DATO4   EQU 0X25
DATO5   EQU 0X26
DATO6   EQU 0X27
DATO7   EQU 0X28
DATO8   EQU 0X29
DATO9   EQU 0X2A
DATOA   EQU 0X2B
DIR      EQU 0X2C
C1      EQU 0X2D
ESTADO   EQU 0X2E
INST   EQU 0X2F
AUX      EQU 0X30
AUX1   EQU 0X31
AUX2   EQU 0X32
AUX3   EQU 0X33
AUX4   EQU 0X34
BAND   EQU 0X35
C2      EQU 0X36
PUERTO   EQU 0X37
PIN      EQU 0X38
      ORG 0X00
      GOTO MAIN
MAIN   ORG 0X05
      CLRF STATUS
      CLRF PORTA
        BCF STATUS,RP1      ;*******INICIA EN EL BANCO 1
        BSF STATUS,RP0      ;***************************
      MOVLW 0X06
      MOVWF ADCON1
      MOVLW B'11010000'
      MOVWF TRISA
      MOVLW B'00000000'
      MOVWF TRISB
      MOVLW B'11011111'
      MOVWF OPTION_REG
      MOVLW B'10101111'
      MOVWF TRISC      
      BCF TXSTA,BRGH ;pone bit BRGH=0 (velocidad baja)
      MOVLW .19 ;valor para configurar 9600 Bauds
      MOVWF SPBRG ;configura 9600 Bauds
      BCF TXSTA,SYNC ;limpia bit SYNC (modo asíncrono)
      BSF TXSTA,TXEN ;pone bit TXEN=1 (habilita transmisión)
      BCF STATUS,RP0 ;*********REGRESA AL BANCO 0
      CLRF PORTB
      BSF RCSTA,SPEN ;pone bit SPEN=1 (habilita puerto serie)
      BSF RCSTA,CREN ;Habilita recepción
      CLRWDT
      CLRF DIR
      MOVLW 0X21
      MOVWF FSR
      MOVLW 0X02
      MOVLW 0X20
      MOVWF EEADR
      CALL LEE
      XORWF PORTB
      CLRWDT
      MOVLW 0X21
      MOVWF EEADR
      CALL LEE
      ANDLW B'11001011'
      XORWF PORTC
      MOVLW 0X22
      MOVWF EEADR
      CALL LEE
      ANDLW B'11000001'
      XORWF PORTD
      MOVLW 0X23
      MOVWF EEADR
      XORWF PORTE
      BANKSEL PORTA
      BSF PORTA,5
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      BCF PORTA,5
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      BSF PORTA,5
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      BCF PORTA,5
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
INICIO   CALL RECIBE1      
;*******************************************************
      MOVLW "&"
      SUBWF DATO,W
      BTFSS STATUS,Z
      GOTO INICIO
;*******COMPARA PARA FOCO1 DE COCINA*********************
      CLRWDT
      MOVF DATO1,W      ;OBTIENE EL PUERTO
      ANDLW 0X0F
      MOVWF PUERTO
      BTFSS DATO2,6      ;OBTIENE EL PIN
      GOTO LED
      MOVF DATO2,W
      ANDLW 0X0F
      MOVWF PIN
      SWAPF PIN,F
      GOTO LED1
LED      MOVF DATO2,W
      ANDLW 0X0F
      MOVWF PIN         ;**************
LED1   MOVLW "P"         ;PREGUNTA SI ES UN PULSO
      SUBWF DATO3,W
      BTFSS STATUS,Z
      GOTO FOCO
      MOVF PUERTO,W      ;SI ES PULSO, LO EJECUTA
      MOVWF FSR
      MOVF PIN,W
      IORWF INDF
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      CALL TIEMPO
      MOVF PIN,W
      XORWF INDF
      CLRWDT
      GOTO INICIO
FOCO   MOVLW "O"         ;PREGUNTA SI SE DESEA ENCENDER
      SUBWF DATO4,W
      BTFSS STATUS,Z
      GOTO FOCO1
      MOVF PUERTO,W      ;SI ES SI ENCIENDE EL APARATO
      MOVWF FSR
      MOVF PIN,W
      IORWF INDF
      CALL GUARDA1
      GOTO INICIO
FOCO1   MOVF PUERTO,W
      MOVWF FSR
      MOVF PIN,W
      XORLW 0XFF
      ANDWF INDF
      CALL GUARDA1
      GOTO INICIO
;*******************************************************

;*******GUARDA CONTRASEÑA EN LA MEMORIA****
GUARDA
      CLRWDT
      MOVLW 0X22
      MOVWF FSR
      CLRF DIR
      BCF STATUS,RP0   ;SE VA AL BANCO 2
      BSF STATUS,RP1   ;****************
      CLRF EEADR
CIC      NOP
      BCF STATUS,RP0   ;SE VA AL BANCO 2
      BSF STATUS,RP1   ;****************
      MOVF INDF,W
      MOVWF EEDATA
      CALL ESCRIBE
      INCF EEADR,F
      BCF STATUS,RP1
      INCF FSR,F
      INCF DIR,F
      MOVLW 0X26
      SUBWF FSR,W
      BTFSS STATUS,Z
      GOTO CIC
      BSF PORTC,4
      CALL TIEMPO
      BCF PORTC,4
      CALL TIEMPO
      BSF PORTC,4
      CALL TIEMPO
      BCF PORTC,4
      CALL TIEMPO
      BSF PORTC,4
      CALL TIEMPO
      BCF PORTC,4
      CALL TIEMPO   
      MOVLW "O"
      MOVWF DATO
      CALL ENVIA
      RETURN
;**************************************
;******************************************
;*******ENVIA******************************
ENVIA
      CLRWDT
      BSF STATUS,RP0 ;banco 1
ESP    BTFSS TXSTA,TRMT ;checa si el buffer de transmisión
      GOTO ESP ;si está ocupado espera
      BCF STATUS,RP0 ;regresa al banco 0
      MOVF DATO,W ;rescata dato a enviar
      MOVWF TXREG ;lo envía
      RETURN
;******************************************
;******************************************
GUARDA1
      CLRWDT
      BCF STATUS,RP0   ;SE VA AL BANCO 2
      BSF STATUS,RP1   ;****************
      MOVLW 0X20
      MOVWF EEADR
      MOVF PORTB,W
      MOVWF EEDATA
      CALL ESCRIBE
      MOVLW 0X21
      MOVWF EEADR
      BANKSEL PORTC
      MOVF PORTC,W
      BCF STATUS,RP0   ;SE VA AL BANCO 2
      BSF STATUS,RP1   ;****************
      MOVWF EEDATA
      CALL ESCRIBE
      MOVLW 0X22
      MOVWF EEADR
      BANKSEL PORTB
      NOP
      RETURN
;******************************************
;*******RUTINA DE COMPARACION**************
COMPARA
      CLRWDT
      CLRW
      CALL LEE
      MOVWF AUX
      MOVLW 0X01
      CALL LEE
      MOVWF AUX1
      MOVLW 0X02
      CALL LEE
      MOVWF AUX2
      MOVLW 0X03
      CALL LEE
      MOVWF AUX3
      MOVLW 0X04
      CALL LEE
      MOVWF AUX4

      RETURN
;*************************************************
;*******LEE EN LA EEPROM***************************
LEE
      CLRWDT
        BSF STATUS,RP1  ;SE VA AL BANCO 2
        BCF STATUS,RP0  ;***************
       MOVWF EEADR
        BSF STATUS,RP0  ;SE VA AL BANCO 3
        BCF EECON1,EEPGD
        BSF EECON1,RD
        NOP
        NOP
        BCF STATUS,RP0      ;REGRESA AL BANCO 2
        MOVF EEDATA,W
        BCF STATUS,RP1      ;REGRESA AL BANCO 0
      NOP
      RETURN
;**************************************************
;*******ESCRIBE EN LA EEPROM***********************
ESCRIBE
      CLRWDT
      NOP
      BSF STATUS,RP0  ; SE VA AL BANCO 3
        BSF STATUS,RP1  ;*****************
      BSF EECON1,WREN
      MOVLW 0X55
      MOVWF EECON2
      MOVLW 0XAA
      MOVWF EECON2
      BSF EECON1,WR
EQ1      BTFSC EECON1,WR
      GOTO EQ1
      BCF EECON1,WR
        BCF STATUS,RP0  ;REGRESA AL BANCO 2
        NOP
      RETURN
      
;**************************************************
TIEMPO
      CLRF TMR0
      CLRF C1
      CLRF C2
Q1      BCF INTCON,T0IF
Q2      BTFSS INTCON,T0IF
      GOTO Q2
      INCF C1,F
      CLRWDT
      MOVLW .255
      SUBWF C1,W
      BTFSS STATUS,Z
      GOTO Q1
      CLRF C1
      INCF C2,F
      CLRWDT
      MOVLW .16
      SUBWF C2,W
      BTFSS STATUS,Z
      GOTO Q1
      RETURN

;**************************************************

RECIBE1
      
RECIBE1
E4      CLRWDT
      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E4 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO ;lo almacena en dato
E5      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E5 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO1 ;lo almacena en dato
E6      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E6 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO2 ;lo almacena en dato
E7      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E7 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO3 ;lo almacena en dato
E8      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E8 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO4 ;lo almacena en dato
E9      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E9 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO5 ;lo almacena en dato
E10      BTFSS PIR1,RCIF ;checa el buffer de recepción
      GOTO E10 ;si no hay dato listo espera
      MOVF RCREG,W ;si hay dato, lo lee
      MOVWF DATO6 ;lo almacena en dato
      RETURN
      END

Desconectado jluisruelas

  • PIC10
  • *
  • Mensajes: 35
Re: debugg con pickit 3 y el 16f877a
« Respuesta #1 en: 31 de Marzo de 2014, 02:26:33 »
alguna ayudita?


 

anything