Autor Tema: alguien puede revisar este codigo  (Leído 3794 veces)

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

Desconectado hayn

  • PIC10
  • *
  • Mensajes: 39
alguien puede revisar este codigo
« en: 03 de Marzo de 2008, 22:29:47 »
aparece un mensaje (302) y no se ni que significa ni como arreglarlo, cuando lo simulo paso a paso no entra en apagar

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: alguien puede revisar este codigo
« Respuesta #1 en: 03 de Marzo de 2008, 23:28:36 »
Hola hayn..
respecto al mensaje (302) es solo un mensaje de advertencia no de error, la compilacion la realiza, solo te avisa que no es el banco 0. podes eliminar ese aviso poniendo despues de declarar el micro lo siguiente ""ERRORLEVEL -302      ;suppress "not in bank 0" message"
El programa funciona bien, cuando lo simules tenes que hacer que Z sea 0 para que salte a apagado.
Código: [Seleccionar]
;------------------------------------------------;
;   practica del libro con pic 16f8743a para el  ;
;   parpadeo de 2 leds Pag#49                    ;
;------------------------------------------------;

                  LIST           P=16F873
                  RADIX          HEX
                  INCLUDE        P16F873.INC
                  ERRORLEVEL -302      ;suppress "not in bank 0" message
                  ORG            0x00
                  goto           INICIO
                  ORG            0x05

INICIO            bsf            STATUS,RP0
                  bcf            STATUS,RP1
                  clrf           TRISB
                  movlw          b'00000110'
                  movwf          ADCON1
                  movlw          b'00000110'
                  movwf          TRISA
                  bcf            STATUS,RP0
                  clrf           PORTB
                  clrf           PORTA
 
BUCLE             movf           PORTA,W
                  btfss          STATUS,Z
                  goto           APAGAR
                  goto           ENCENDER

ENCENDER          movlw          0xFF
                  movwf          PORTB
                  goto           BUCLE

APAGAR            clrf           PORTB
                  goto           BUCLE
                 

                  END
Saludos...

Desconectado hayn

  • PIC10
  • *
  • Mensajes: 39
Re: alguien puede revisar este codigo
« Respuesta #2 en: 04 de Marzo de 2008, 10:16:00 »
hola picnic,gracias por responder pero como hago que z sea cero, perdona mi ignorancia pero es que soy muy nuevo en esto y tengo 5 meses tratando de hacer parpadear esos 2 leds y no he podido.

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: alguien puede revisar este codigo
« Respuesta #3 en: 04 de Marzo de 2008, 11:13:04 »
Me imagino que en RA1 y RA2
Código: [Seleccionar]
movlw          b'00000110';
movwf          TRISA
que los tienes configurado como entradas debes tener unos switches o unos pulsadores y en el puerto B tienes conectados los LEDs, tienes que colocar cero o tierra en esos pines y así Z tiene cero y por consiguiente deberías conseguir apagar el (los) LED(s).

Montalo en proteus.

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 936
Re: alguien puede revisar este codigo
« Respuesta #4 en: 04 de Marzo de 2008, 14:38:16 »
hola picnic,gracias por responder pero como hago que z sea cero, perdona mi ignorancia pero es que soy muy nuevo en esto y tengo 5 meses tratando de hacer parpadear esos 2 leds y no he podido.

Todo Pic tiene un Resitro llamado STATUS , este consta de varios "Flags", entre ellos hay uno llamado "Z", este flag se pone a valor lógico alto cuando en el PIC se realiza alguna operación cuyo resultado sea 0. Por ejemplo si multiplicas un valor 1 con un valor 0 el resultado será 0, si luego verificas el estado de Z en el STATUS , verás que és un uno.
En el código que pusiste hay una línea que verifica el estado del registro Z en el STATUS, esta línea dice
Código: Microchip Assembler
  1. btfss          STATUS,Z
SI te fijas en el datasheet del PIC, en la sección de Set de Instrucciones, podrás ver que "btfss" verifica el estado lógico de un bit dentro de un registro, si elvalor es alto se salta la siguiente instrucción, si es bajo, continúa sin saltar, en este caso verifica el estado del bit Z en el registro STATUS.
Para saber que estado tiene el bit Z, debes fijarte que sucedió justo antes de esa instrucción, lo que nos lleva a la línea que dice:
Código: Microchip Assembler
  1. BUCLE             movf           PORTA,W

Esto significa que se cargó el contenido del Puerto A en W, si todo el puerto A está a cero, el bit Z del STATUS se puso a 1, si algún bit del PORTA está a uno, el bit Z del STATUS estará en cero.

Espero te sirva la aclaración.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: alguien puede revisar este codigo
« Respuesta #5 en: 04 de Marzo de 2008, 19:29:45 »
Creo que lo que esta pidiendo Hayn es como simularlo...
En el MPLAB SIM tenes una herramienta que se llama WATCH, con la cual podes ver el estado de los registros que desees mientras simulas el programa, y a su vez, puedes modificarlos para ver como se ejecutan las rutinas.
En tu caso modifica el registro PORTA para que cuando verifique el flag Z se realice el salto para "apagado".
Espero que me haya explicado claramente...  ..aunque no creo.. :D :D :D
SAludos

Desconectado hayn

  • PIC10
  • *
  • Mensajes: 39
Re: alguien puede revisar este codigo
« Respuesta #6 en: 06 de Marzo de 2008, 15:02:36 »
muchas gracias a todos por su valiosa ayuda, picnic ese WATCH a que te refieres es el WATCH DOG o cual, puedes ser un poco mas especifico que apenas estoy intentando aprender a simularlos codigos y en el manual que tengo solo aparese el watch dog  y STOP WATCH gracias.

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: alguien puede revisar este codigo
« Respuesta #7 en: 06 de Marzo de 2008, 20:15:33 »
No, a lo que me refiero es una herramienta del "mplab ide", en la que te permite ver los registros, atravez de una ventana.
Lo encontras en la barra de arriba en "view", el anteultimo es el "watch".
Suerte!

Desconectado hayn

  • PIC10
  • *
  • Mensajes: 39
Re: alguien puede revisar este codigo
« Respuesta #8 en: 11 de Marzo de 2008, 23:39:56 »
por favor alguien puede indicarme como se inserta correctamente este codigo en la plantilla del mplab ide


**********************************************************************
;   This file is a basic code template for object module code         *
;   generation on the PICmicro PIC16F873A. This file contains the     *
;   basic code building blocks to build upon.  As a project minimum   *
;   the 16F873A.lkr file will also be required for this file to       *
;   correctly build. The .lkr files are located in the MPLAB          * 
;   directory.                                                        *
;                                                                     *
;   If interrupts are not used all code presented between the         *
;   code section "INT_VECTOR and code section "MAIN" can be removed.  *
;   In addition the variable assignments for 'w_temp' and             *
;   'status_temp' can be removed.                                     *                         
;                                                                     *
;   If interrupts are used, as in this template file, the 16F873A.lkr *
;   file will need to be modified as follows: Remove the lines        *
;     CODEPAGE   NAME=vectors  START=0x0      END=0x4      PROTECTED  *
;   and                                                               *
;     SECTION    NAME=STARTUP  ROM=vectors                            *
;   and change the start address of the page0 section from 0x5 to 0x0 *                                                               *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler and linker (Document DS33014).          *
;                                                                     *
;   Refer to the respective PICmicro data sheet for additional        *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:       xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required:                                                  *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************


   list      p=16f873a   ; list directive to define processor
   #include   <p16f873a.inc>   ; processor specific variable definitions
   
   __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.






;***** VARIABLE DEFINITIONS (examples)

; example of using Shared Uninitialized Data Section
INT_VAR      UDATA_SHR   0x71   

pclath_temp   RES   1      ; variable used for context saving


; creating copies of interupt context saving variables in bank1
INT_VAR1   UDATA_SHR   0xF1


; example of using Uninitialized Data Section
TEMP_VAR   UDATA_SHR   0x20      ; explicit address specified is not required
temp_count   RES   1      ; temporary variable (example)


;**********************************************************************
RESET_VECTOR   CODE   0x000      ; processor reset vector
   nop            ; nop required for icd
   movlw   high  start      ; load upper byte of 'start' label
   movwf   PCLATH         ; initialize PCLATH
   goto   start         ; go to beginning of program





MAIN              bsf            STATUS,RP0
                  bcf            STATUS,RP1
                  clrf           TRISB
                  movlw          b'00000110'
                  movwf          ADCON1
                  movlw          b'00000110'
                  movwf          TRISA
                  bcf            STATUS,RP0
                  clrf           PORTB
                  clrf           PORTA
 
BUCLE             movf           PORTA,W
                  btfss          STATUS,Z
                  goto           APAGAR
                  goto           ENCENDER

ENCENDER          movlw          0xFF
                  movwf          PORTB
                  goto           BUCLE

APAGAR            clrf           PORTB
                  goto           BUCLE
                 

start

   nop            ; code starts here (example)

; remaining code goes here






   END                       ; directive 'end of program'


Desconectado hayn

  • PIC10
  • *
  • Mensajes: 39
Re: alguien puede revisar este codigo
« Respuesta #9 en: 15 de Marzo de 2008, 20:29:07 »
gracias señores ya corregui el problema, gracias a todos

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: alguien puede revisar este codigo
« Respuesta #10 en: 20 de Marzo de 2008, 19:31:43 »
De nada  ;-)
saludos...