Curso de programación de PIC en PICBasic Pro

osea, ¿sacar señal de reloj del cristal del micro e introducirla en un pin del mismo y procesarla de tal forma que se pueda obtener una base de tiempos de un segundo mas precisa?
saludosss

estuve tratando de buscar donde lo vi.... pero no lo encuentro...

la teoria es que se utiliza el timer0 y su respectiva interrupcion, pero el puerto RA4 se configura para utilizar el TOCK1 o sea un reloj de entrada y me parece que el pulso de reloj lo hacia el oscilador de 32.768Hz... o algo asi..

si lo encuentro lo posteo...:D

mira creo que si estoy bien en la teoria....

https://www.forosdeelectronica.com/f24/reloj-despertador-pic-cristal-32-768khz-22387/
 
Última edición:
que bueno. veo que al parecer esta programado en pic basic, le voy a hechar un vistazo aver que puedo sacar de ahi... gracias amigo :)
 
esta programado en pic basic

parece estar en basic del Pic simulator IDE, toma en cuenta que estaba equivacado en que se usa el timer0 y el RB4, se usa el Tmr1 y el RB7/RB6, para pulsar(no se como se diga) el timer, y si estaba bien en que se usa la interrupcion para incrementar el tiempo....

pues hasta ahi te dejo encaminado... :D
 
Última edición:
parece estar en basic del Pic simulator IDE, toma en cuenta que estaba equivacado en que se usa el timer0 y el RB4, se usa el Tmr1 y el RB7/RB6, para pulsar(no se como se diga) el timer, y si estaba bien en que se usa la interrupcion para incrementar el tiempo....
pues hasta ahi te dejo encaminado... :D

si, parece que para los botones se usan las interrupciones por rb4 a rb7 y el aumento de la cuenta se haria mediante el timer1 si no me equivoco.
 
bueno amigo lubeck, consegui hacer que el contador avance en funcion de una interrupcion utilizando el tmr0 para producir una interrupcion cada 50ms y asi repetirla 20 veces para obtener 1 segundo. lamentablemente no logro la precision que quiero... :cry: atrasa 1 seg por minuto... :cry: aca dejo el codigo esta vez sin botones. aver si me pueden dar una manito porfas. y me dicen en que estoy metiendo la pata... :confused:
saludosss


Código:
@ DEVICE MCLR_OFF, XT_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSC 4
  cuenta var byte
  numero2 var word
  numero var word
  unid var byte
  dece var byte
  cent var byte
  mile var byte
  contar var porta.3
  encera var porta.2
  pausa var porta.1
  
  trisb=0
  cmcon=7
  cuenta=0
  numero=0
  numero2=0
     
  OPTION_REG = %0000111   ' Configuración del Registro OPTION 
        INTCON = %10100000    ' Configuración del Registro INTCON           
        ON INTERRUPT GOTO interrup 
  display: 
  unid=numero dig 0
  dece=numero dig 1
  cent=numero2 dig 0
  mile=numero2 dig 1 
  portb=224+mile
  pause 5
  portb=208+cent
  pause 5
  portb=176+dece
  pause 5
  portb=112+unid
  pause 5
  goto display
  
  ;************** Handler de interrupciones para incrementar contador *************** 
DISABLE                 ;deshabilita interrupciones durante el proceso 
interrup: 
 cuenta = cuenta + 1          ;cuenta las interrupciones del TMR0 
 TMR0=61       ;resta 61 al contador de 256 del TMR0 
 
        IF cuenta < 20 THEN reset      ;20 cuentas
        cuenta = 0 
        numero = numero + 1 
        IF numero >= 60 THEN 
            numero = 0 
            numero2 = numero2 + 1 
           IF numero2 >= 99 THEN 
            numero2 = 0  
            ENDIF 
            ENDIF
 reset:  
      INTCON.2 = 0           ;resetea la bandera de interrupción del TMR0 
 
      RESUME 
      END
 
Última edición:
si no me equivoco, no creo que lo logres sin el cristal de 32.768Hz, a menos que con el tmr0 logres exactamente esa frecuencia... ademas de que el codigo que ocupas para la interrupcion tambien "consume" un tiempo determinado aunque sean nanosegundos que hace que varie el tiempo...

por eso la razon de hacerlo con el cristal en rb6 y rb7, este es el que va desencadenando el conteo del tmr1, y no importa como hagas el codigo o que cristal uses en el micro, ese tiempo en tmr1 nunca va a variar....

otra manera es que compres un ds1307 que tambien lleva un crisital de 32.768Hz...
 
buenas tardes soy nuevo en esto estoy haciendo un pequeño proyecto en basic y tengo par de problemas entre aqui porque me lo han recomendado muchos y de los post que he visto me ayudado vastante... bueno el proyectico que estoy haciendo es que trato de recibir 4 señales analogicas para llevarlas a presentarse un una lcd 16x2 pero alli comienza mi problema porque ni detecta la señal de entrada y en la lcd me salen unos cuadritos negros en la primera fila e leido que tiene que ver con la configuracion del pic pero ya me he leido sopotocientos manuales de lcd y a/d y nada alguna orientacion sobre el caso... bueno las señales las recibo de la siguiente manera 2 vienen de unos transformadores y las otras dos de un sensor de corriente de la famiia allegro el asc712.. lo que estoy tratando de hacer practicamente es un voltimetro y un amperimetro con la misma lcd cada linea para cada 2 variables. gracias aqui anexo como tengo en este momento la configuracion de la lcd y los accon

'****************************************************
Device=16F877A
XTAL= 4
'****************************************************
' configuarción de los puertos y los regitros
'****************************************************
TRISA =%00000011
TRISC =%00000000
TRISD =%00000000
ADCON1 =%10000001
ADCON0 =%01000101

'*******************************************************
' declaraciones
'*******************************************************
DelayUS 2000
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTB.3
Declare LCD_ENPIN PORTB.2
Declare LCD_INTERFACE4
Declare LCD_LINES2
Declare LCD_TYPE0
Declare ADIN_TAD8_fosc
Declare ADIN_STIME100
Declare ADIN_RES8
'****************************************************
' definicion de las variables
'****************************************************
Dim valor1 As Word
Dim valor2 As Word
Dim valor3 As Word
Dim valor4 As Word
Dim acumulaa As Word
Dim acumulab As Word
Dim acumulac As Word
Dim acumulad As Word
Dim medir As Byte
Dim voltaje1 As Float
Dim voltaje2 As Float
Dim intensidad1 As Float
Dim intensidad2 As Float
 
Hola amigos , quiero empezar a aprender a programar pic , y por lo que se ,el pic basic pro , es el mas fácil para empezar .
_me gustaría saber ¿ Que necesito para poder cargar el programa que haga en lenguaje basic pro ? Porque yo compre este un Programador De Pic Y Memorias Eeprom. Buscar en Mercadolibre: MLA-129318691-programador-de-pic-y-memorias-eeprom-soporta-microwire-_JM ¿Este programador me sirve ?

espero que me puedan orientar .saludos :D
 
Pablo1

Cuando te dije que miraras en este thread, te aclare que empezaras por la página 1!!!.

Estan llenas de ejemplos las 75 páginas previas y tu preguntas cosas que ya han sido respondidas.


Saludos, JuanKa.-
 
mira... ya esta super explicado durante el tema eso, pero entiendo un poco que son un monton de mensajes y terminaras confundiéndote mas... ahi te va.

¿ Que necesito para poder cargar el programa que haga en lenguaje basic pro ?
para que sea facil minimo necesitas
-el microcode studio plus -es un editor para facilitar hacer el programa
-el picbasic pro- es el que compila y genera un archivo con extencion .Hex
-el winpic 800- es el que carga en tu pic con el programador el archivo Hex que compilaste
-tu programador JDM

¿Este programador me sirve ?
si. si te sirve...

fijate que programas tiene en el CD que trae, si tiene el winpic, icprog o algun otro...

Edito:
:LOL: bueno lo mejor es lo que te dice juanka... :D
 
Lubeck

Si quiere escribir el programa en Pic Basic Pro y directamente cargarlo al PIC como dice en su mensaje, no tiene la menor idea que debe ENSAMBLARLO (pasarlo a ASM y a HEX) antes de usar el Programador!!.

Le dije que viniera aqui por que lo habian "moderado".


Saludos, JuanKa.-
 
ok, si me di cuenta.... lo que se hizo simpatico es que pense exactamente lo mismo que escribiste antes de de que se grabara el mensaje que estaba escribiendo....

a ver si capta el amigo...

Saludos Juanka!
 
Gracias JuanKa y lubeck por sus respuestas , voy a leer detenidamente 75 páginas previas para ir aprendiendo .
Estoy contento porque el programador JDM que compre , me va a servir ...jejejejejeje
Respondiendo a tu pregunta ,si el programador me vino con varios programitas (winpic, icprog , PonyProg) yo uso el ponyprog para grabar las memorias eeprom de televisores .(Me dedico a reparar televisores ).
bueno voy a leer detenidamente 75 páginas previas . En cualquier momento lo estaré molestando de nuevo con preguntas jejejeje .
A.. disculpen si hice preguntas que ya estaban respondidas a lo largo del Curso programacion de pic en bsic pro . lo que pasa que estaba en el cyber y estaba medio con poco tiempo .espero que no se hayan ofendidos , no lo hice de vago de no querer leer ....saludos
 
ok, si me di cuenta.... lo que se hizo simpatico es que pense exactamente lo mismo que escribiste antes de de que se grabara el mensaje que estaba escribiendo....

a ver si capta el amigo...

Saludos Juanka!

Hola Lubeck, te tenia una pregunta, no sabes donde pueda conseguir algun manual que me diga como manejar una CMUCAM para conectarla a un Pic en lenguaje picbasic? descargue un libro y medio logre traducir algunas partes y dan unos ejemplos, no se si tu tienes alguna experiencia en este tema y me ayudes.

Esta es una porción de un ejemplo del libro:



Ejemplo en picbasic:

Código:
‘CMU tracking program
‘By J. Iovine
define osc 16
recdata var byte[10]
x var byte
confid var byte
trisb = 0
portb = 0
pause 1500
serout port.1,6,[“CMU Prg.”]
serout portb.2,2,[“RS”, 13]
pause 1250
‘Reset CMU camera
serout portb.2,2,[“RS”, 13]
262 Chapter Fourteen
gosub display
‘Turn green CMU LED on
serout portb.2,2,[“L1 1”,13]
gosub display
portb.3 = 1
‘Turn on auto lighting adjust & fluorescent band filter ***
serout portb.2,2,[“CR 45 7 18 44”, 13]
gosub display
serout portb.1,6,[“A L”] ‘Auto lighting adjustment
pause 20000 ‘Hold 20 seconds
‘Turn off auto lighting adjust
serout portb.2,2,[“CR 18 44 19 32”, 13]
gosub display
‘Turn green CMU LED off
serout portb.2,2,[“L1 2”,13]
gosub display

portb.3 = 0
‘Set poll mode1
packet
serout portb.2,2,[“PM 1”, 13]
pause 100
‘Set raw data
serout portb.2,2,[“RM 3”, 13]
for x = 0 to 10 ‘Blink red LED to tell user to ready target
portb.3 = 1
pause 250
portb.3 = 0
pause 250
next x
portb.6 = 1 ‘Track LED on
‘Track window command looks at center of CMU window
‘Grabs data and sends it to track color function
‘Track:
serout portb.2,2,[“TW”, 13]
pause 2000
portb.6 = 0 ‘Track LED off
main:
Color Robotic Vision System 263
portb.3 = 1
‘Send commandtrack
color (with no arguments)
‘Will track last color grabbed by TW command
serout portb.2,2,[“TC”, 13]
‘Gather the m statistics packet from TW command
serin2 portb.0,84,[str recdata\10]
confid = recdata[9]
if recdata[2] > 50 and confid > 20 then left ‘MMX
if recdata[2] < 40 and confid > 20 then right ‘MMX
if recdata[8] < 175 and confid > 25 then fwd ‘PIX
if recdata[8] > 200 and confid > 25 then bwd ‘PIX
serout portb.1,6,[254,1,“S”] ‘Stop
portb.3 = 0
pulsout portb.4, 668 ‘Right servo stop
pulsout portb.5, 676 ‘Left servo stop
pause 18
portb.3 = 1
goto main
left:
serout portb.1,6,[254,1,“L”, #recdata[2]]
for x= 1 to 7
pulsout portb.4, 696 ‘Right servo forward
pulsout portb.5, 676 ‘Left servo stop
pause 20
next x
goto main:
right:
serout portb.1,6,[254,1,“R”,#recdata[2]]
for x= 1 to 7
pulsout portb.4, 668 ‘Right servo stop
pulsout portb.5, 648 ‘Left servo forward
pause 20
next x
goto main:
fwd:
serout portb.1,6,[254,1,“F”,#recdata[8]]
for x= 1 to 7
pulsout portb.4, 696 ‘Right servo forward
pulsout portb.5, 648 ‘Left servo forward
pause 20
next
264 Chapter Fourteen
goto main:
bwd:
serout portb.1,6,[254,1,“B”,#recdata[8]]
for x= 1 to 7
pulsout portb.4, 640 ‘Right servo backward
pulsout portb.5, 704 ‘Left servo backward
pause 20
next x
goto main:
display:
serin2 portb.0,84,20,main,[str recdata\3]
for x = 0 to 3
serout2 portb.1,16468,[“ ”,recdata[x]]
next x
pause 1500
serout2 portb.1,16468,[254,1]
return
 
Última edición por un moderador:
Atrás
Arriba