TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: pendexgabo 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
-
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
-
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
-
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
-
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.
-
Las tienen los PIC18Fxxx
Quizá también esten en otros PIC
Un saludo
-
muchas gracias a todos, voy a ver si me arreglo
saludos
gabriel
-
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!
-
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