Autor Tema: colaboracion con pbp y 16f877  (Leído 3303 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Jmedina

  • PIC10
  • *
  • Mensajes: 30
colaboracion con pbp y 16f877
« en: 24 de Abril de 2006, 04:18:23 »
Saludos amigos, estoy trabajandoen un contador con el pic 16f877 pero cuando intento compilar el programa en pbp bota un error (protc.1;protc.2;protc.3 variables no definidas) cosa que no ocurria cuando las tenia como porta.1.2y3 cuando hice el contador con el 16f84 aqui les posteo una parte del programa.

 k var word
             digit var word
          maska var byte
          i var word
          leddis1 var portc.3
          leddis2 var portc.2
          leddis3 var portc.1
          trisc=%00000000
          trisb=%00000000
          leddis1=0
          leddis2=0
          leddis3=0
          portb=0
         

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: colaboracion con pbp y 16f877
« Respuesta #1 en: 24 de Abril de 2006, 11:10:23 »
Hola:

Imagino que tu editor es MicrocodeStudio, asegurate alli de seleccionar el pic correspondiente, de seguro estas seleccionando un pic que no tiene puerto C

Desconectado Jmedina

  • PIC10
  • *
  • Mensajes: 30
Re: colaboracion con pbp y 16f877
« Respuesta #2 en: 26 de Abril de 2006, 10:00:02 »
Hola:

Imagino que tu editor es MicrocodeStudio, asegurate alli de seleccionar el pic correspondiente, de seguro estas seleccionando un pic que no tiene puerto C


Amigo gracias por tu colaboracion. MI editor es proton+lite. Donde selecciono el pic?. En asembler para trabar con un registro en el programa, al inicio damos su equivalencia (ptob equ 05h) en pbp para el 16f877 con otros registros Ej Intcon o otro. como seria?

 

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: colaboracion con pbp y 16f877
« Respuesta #3 en: 26 de Abril de 2006, 12:02:55 »
Hola:

Vamos por partes, ese codigo que tu pusiste es para PBP, te lo digo porque veo la manera como declaras las variables, en pbp se usa esto:

i var word
leddis3 var portc.1

la variable seguido de VAR y el tipo de variable, si estas utilizando proton debes utilizar la sintaxis para proton, en ese lenguaje puedes declararlo asi:

Dim i as word
Symbol  leddis3  = PORTC.3     

y en la cabecera, en la primera linea del programa tienes que escribir que pic vas a utilizar, lo haces asi, por ejemplo:

Device 16f877a.

No te confundas con la sintaxis de PBP, si utilizas proton + pues utiliza su sintaxis...  :mrgreen:
« Última modificación: 26 de Abril de 2006, 12:06:32 por LordLafebre »

Desconectado Jmedina

  • PIC10
  • *
  • Mensajes: 30
Re: colaboracion con pbp y 16f877
« Respuesta #4 en: 27 de Abril de 2006, 10:01:43 »
Lafebre, la verdad soy nuevo en esto pero el programa que utilizo es el proton+lite y he compilado algunos programas para el 16f84 usando esa sintaxis pues la aprendi en un manual de pbp que consegui en internet y por ser principiante pues no se las diferencias del microcode, pbp o proton+.

De todas formas, por o que me digiste anteriormente estube revisando el programa y encontre el error, en la parte donde se escribe el pic a utilizar loestaba poniendo asi ('device 16f877), conla comilla y el compilador lo estaba tomando como un comentario aponas se la quite ¡¡Listo!!...  je je.. tambien me reconoce los otros registros del pic.

Ahora tengo otra duda, como configurar uno de los timer enmodo de captura para contar los impulsos en uno de los pines durante un segundo?

Gracias amigos por su colaboracion.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: colaboracion con pbp y 16f877
« Respuesta #5 en: 27 de Abril de 2006, 12:18:21 »
Hola:

Jmedina, no te va a dar errores si declaras con la sintaxis de PBP en algunos casos, pero siempre es mejor que utilices la sintaxis de Proton, fijate que cuando compiles en el cuadro de la parte de abajo te dira:

HINT: Not proton + sintax. Rcognised only for Bachward compatability. Use Dim instead!.

Con respecto a lo del timer, en la ayuda hay un ejemplo, suerte...!!!  :mrgreen:

Código: [Seleccionar]
' Program that demonstrates the use of the Timer1
' interrupt for a real-time clock.

Include "PROTON_4.INC"

' Define interrupt handler
ON_INTERRUPT Goto myint


Dim TICK as Byte SYSTEM ' make sure that the variable is in bank0 if they are to be used in the interrupt handler

Dim seconds as Byte ' Elapsed seconds
Dim minutes as Word ' Elapsed minutes

minutes = 0 ' Clear time
seconds = 0

T1CON = $01 ' Turn on Timer1, prescaler = 1
INTCON = $C0 ' Enable global interrupts, peripheral interrupts
PIE1 = $01 ' Enable TMR1 overflow interrupt

 
Goto main ' jump over the interrupt handler and sub
 
' Assembly language interrupt handler
Myint:                                                                     
Context Save

; Set the high register of Timer1 to cause an interrupt every
; 16384 counts (65536-16384=49152 or $C000). At 4MHz, prescale
; set to 1, this equates to a tick every 16384uS.  This works
; out to about 61 ticks per second, with a slight error.  The
; error could be reduced substantially by setting the TMR1L
; register and playing with different values for the prescaler
; and the ticks per second.
       
Movlw $C0 ; Prepare to set TMR1 high register
Movwf TMR1H ; Set TMR1H to C0h
Incf TICK,F ; INCREMENT TICK COUNT
  Bcf     PIR1, 0 ; Clear interrupt flag

Context Restore

' Subroutine to update the minutes and seconds variables
get_time:
  ' Update the time when needed. The TICK variable will
  ' overflow if you don't update within 4 seconds.  This could
  ' be done in the interrupt handler, but it's easier to do
  ' it in PicBasic, and you usually want the interrupt handler
  ' to be as short and fast as possible.
 
PIE1 = 0 ' Mask the interrupt while we're messing with TICK
seconds = seconds + (tick / 61) ' Add the accumulated seconds
tick = tick // 61 ' Retain the left-over ticks
PIE1 = $01 ' Interrupt on again
minutes = minutes + (seconds / 60) ' Add the accumulated minutes
seconds = seconds // 60 ' Retain the left-over seconds
Return ' Return to the main program
 
main:
' **************************************************************
' Begin program code here.  The minutes and seconds variables can
' be used in your code.  The time will be updated when you call the
' get_time routine. Disable interrupts while executing timing-critical
' commands, like serial communications.


Print $fe,1 ' Clear LCD

loops VAR WORD
loops = 0


loop:

loops = loops + 1
Print $fe,$C0,"Loops Counted: ", DEC5 loops


GoSub get_time ' Update minutes and seconds
Print $fe, 2, "Time: ",DEC5 minutes, ":", DEC2 seconds ' Display the elapsed time


GoTo loop ' Repeat main loop

Desconectado Jmedina

  • PIC10
  • *
  • Mensajes: 30
Re: colaboracion con pbp y 16f877
« Respuesta #6 en: 29 de Abril de 2006, 03:02:13 »
Ok entonces que programa utilizo para trabajar con esta sintaxis pues fue la que aprendi y como me enbarque con un proyecto en la u, por ahora no me da tiempo de ponerme a estudiar otra sintaxis.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: colaboracion con pbp y 16f877
« Respuesta #7 en: 29 de Abril de 2006, 03:20:53 »
Hola:

La sintaxis que tu estas utilizando es de Pic Basic Pro (PBP)...

Desconectado Jmedina

  • PIC10
  • *
  • Mensajes: 30
Re: colaboracion con pbp y 16f877
« Respuesta #8 en: 22 de Mayo de 2006, 10:54:48 »
Saludos Compadre.

Tengo un problema con pic6f877 hice un contador de 0 a 999 con display 7segmentos pero cuando pruebo el circuito, los pines que configure para habilitar los display solo mandan 1v y no es suficiente para exitar la base de los transistores, probe con el puerto A y luego con C y D y lo mismo, pero con el pto b donde mando los datos el voltage es de 4v aprox, no se que pueda estar pasando. Otra cosa, el pic tiene 2 entradas de voltaje (Vdd Y Vss)*2, ¿hay que mandar las dos Vss a tierra y las dos Vdd a 5v? o ¿solo con una es suficiente?. agradesco tu colaboracion.


 

anything