Autor Tema: CONSULTA CODIGO PWM  (Leído 2662 veces)

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

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
CONSULTA CODIGO PWM
« en: 02 de Octubre de 2003, 23:24:00 »
buenas.. me baje este codigo de todopic..
pero hay unas lines y un comando que no entiendo..me harial el favor alguein de explicarme.
desde ya gracias.


;Listado del programa:

   ERRORLEVEL  0, -302

   LIST P=16F84A
   #INCLUDE<P16F84A.INC>
DIG    EQU    0CH
VROFF    EQU    0DH
VRON    EQU    0EH
CONT1    EQU    0FH
CONT2   EQU    10H
X    EQU    .250
Y    EQU    .12

;*************************************************************************
INICIO
   BSF    STATUS,RP0    ; PROGRAMACIÓN DEL SENTIDO DE PUERTOS
   CLRF    TRISB
   MOVLW    B"11100001"
   MOVWF    TRISA
   BCF    STATUS,RP0
   MOVLW    00H
   MOVWF    DIG
   BCF    PORTA,4
DIS_LOOP:
   CALL    DISPLAY    ; VISUALIZACIÓN DE DIGITO
   BTFSC    PORTA,0    ; LA TECLA ESTA OPRIMIDA?
   GOTO    RMOTOR
   CALL    RETAR       ; TIEMPOS DE ANTIREBOTE
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   CALL    RETAR
   INCF    DIG,1
   MOVLW    .11
   XORWF    DIG,0
   BNZ    RMOTOR
   CLRF    DIG
RMOTOR
   CALL    MOTOR
   GOTO    DIS_LOOP
;*************************************************************************
DISPLAY
   MOVF    DIG,0
   CALL    TABLA
   MOVWF    PORTB
   RETURN
;*************************************************************************
TABLA:             ; TABLA DE DATOS PARA DECODIFICACIÓN A SIETE SEGMENTOS
   ADDWF    PCL,1
   RETLW   0x3F
   RETLW    0x06
   RETLW    0x5B
   RETLW    0x4F
   RETLW    0x66
   RETLW    0x6D
   RETLW    0x7D
   RETLW    0x07
   RETLW    0x7F
   RETLW    0x6F
   RETLW    0x77
;**************************************************************************
MOTOR:             ; ACTIVA MOTOR CON TIEMPOS: Ton Y Toff
   MOVF    DIG,0
   SUBLW    .10
   MOVWF    VROFF
   CLRW
   XORWF    DIG,0
   BZ    OFFMOTOR         !!!!!!""#"!$#"$$%%$(no entiendo este comando )!!!!
   MOVF    DIG,0
   MOVWF    VRON
   BSF    PORTA,4    ; ENCIENDE EL MOTOR
MOTOR1:
   CALL    RETAR
   DECFSZ    VRON,1
   GOTO    MOTOR1
OFFMOTOR
   BCF    PORTA,4    ; APAGA MOTOR
   MOVF    DIG,0
   XORLW    .10
   BZ    MOTOR3
MOTOR2
   CALL    RETAR
   DECFSZ    VROFF,1
   GOTO    MOTOR2
MOTOR3
   RETURN
;***************************************************************************
RETAR
   MOVLW    X
   MOVWF    CONT1
CICLO1
   MOVLW    Y
   MOVWF    CONT2
CICLO2
   DECFSZ    CONT2,1
   GOTO    CICLO2
   DECFSZ    CONT1,1
   GOTO    CICLO1
   RETURN
;****************************************************************************
   END

gabriel

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CONSULTA CODIGO PWM
« Respuesta #1 en: 03 de Octubre de 2003, 00:50:00 »
Supongo que debe de ser BNZ ya que también aparece más arriba.

De todas formas sea BZ o BNZ ninguna de las dos es una instrucción del PIC 16F84A.

Un saludo

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: CONSULTA CODIGO PWM
« Respuesta #2 en: 03 de Octubre de 2003, 04:37:00 »
No es un error... está bien tal cual, BZ; pero lo que si es cierto es que ambos nemónicos (BNZ y BZ) no son válidos para un 16F84A.

Las sentencias BZ y BNZ son saltos a las etiquetas que les siguen (OFFMOTOR, por ejemplo). El salto, que a veces lo llaman "crear ramas", se produce dependiendo del resultado obtenido en la sentencia anterior. En este código, por ejemplo, depende del resultado de la operación XOR.

BZ Etiqueta1
   ; salta a la etiqueta1 si el flag Z está a 1.

BNZ Etqueta2
   ;salta a la etiqueta2 si el flag Z está a 0.


De todas formas...  este código tiene pinta de haber sido preparado para un PIC16F877...

Saludetes
Elena



Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: CONSULTA CODIGO PWM
« Respuesta #3 en: 03 de Octubre de 2003, 09:51:00 »
Hola, esta correcto lo que dice Elena, seria muy similar a realizar un BTFSS status,z
y efectivamente, el MPLAB acepta esas instrucciones

carguen el programa, lo compila y funciona...
y el salto consume 3 ciclos de reloj  (btfxx + goto ).... y si no realiza el salto, son 2 ciclos de reloj
Suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CONSULTA CODIGO PWM
« Respuesta #4 en: 03 de Octubre de 2003, 10:22:00 »
Hay algo que no cuadra.

Esas dos instrucciones no son ninguna de las 35 instrucciones que poseen tanto el PIC 16F84 con los PIC 16F87x (ambos tienen las mismas instrucciones e igual número).

Voy a pegarme un "garbeo" por Microchip haber si averiguo a que PICs pertenecen.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CONSULTA CODIGO PWM
« Respuesta #5 en: 03 de Octubre de 2003, 10:27:00 »
Las tienen los PIC18Fxxx

Quizá también esten en otros PIC

Un saludo

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
RE: CONSULTA CODIGO PWM
« Respuesta #6 en: 03 de Octubre de 2003, 11:46:00 »
muchas gracias  a todos, voy a ver si me arreglo

saludos
gabriel

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: CONSULTA CODIGO PWM
« Respuesta #7 en: 03 de Octubre de 2003, 15:43:00 »
Miren esta nota:
http://www.microchip.com/download/tools/picmicro/code/mpasm/30400f.pdf
o bien se van a la ayuda del mplab IDE y buscan por ejemplo BZ.

Saludos!
Saludos desde Huelva (ESPAÑA)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CONSULTA CODIGO PWM
« Respuesta #8 en: 06 de Octubre de 2003, 11:22:00 »
Vale, gracias Cuca, ahora ya lo tengo claro, resulta que son instrucciones especiales que no aparecen en el grupo de las 35 (Pic16F84 - PIC 16F87x). Son las siguientes:

12- Bit/ 14- Bit Core Special Instruction Mnemonics

ADDCF f, d
ADDDCF f, d
B k
BC k
BDC k
BNC k
BNDC k
BNZ k
BZ k
CLRC
CLRDC
CLRZ
LCALL k
LGOTO k
MOVFW f
NEGF f, d
SETC
SETDC
SETZ
SKPC
SKPDC
SKPNC
SKPNDC
SKPNZ
SKPZ
SUBCF f, d
SUBDCF f, d
TSTF f