Curso de programación de PIC en PICBasic Pro

disculpen,,,,,,,,,,

pero la verdad necesito su ayuda y se me hixo facil...
Saludos.
Sube en un zip tu código o pegalo aquí, seleccionalo y envuelvelo con el botón que tiene un #
Para determinar si es error de código, software, o sistema operativo.
 
mira aqui esta el archivo



la verdad no ntndi eso de nvolverlo
 

Adjuntos

  • error.rar
    1.1 MB · Visitas: 80
Última edición:
mira aqui esta el archivo



la verdad no ntndi eso de nvolverlo
Envolver el código, es pegarlo donde escribes, lo seleccionas y presionas el botón que tiene un #
Con eso se vera como esto.
Código:
@ device xt_osc  ; oscilador externo XT
define osc 4     ; especifica que se va a utilizar uno de 4 Mhz
x var byte       ; crea la variable x y asigna un espacio de memoria
                 ; de o a 255
LED1 var portb.0   ; asigna el nombre de led1 a RB0 del pic 16f877A
LED2 VAR portb.1   ; asigna el nombre de led2 a RB1

programa:          ; inicio de la linea de programa 

high led1:low led2   ;enciende led1 y apaga led 2
pause 700           ; esperar 0.7 seg
low led1:high led2  ;apaga led1 y enciende led2 
pause 700          ; espera 0.7 seg
goto programa       ; ir a programa
end                ; fin del programa
Ese es tu código envuelto con la etiqueta
Código:
OK. Con tan solo compilar tu código sin modificar ni mover nada, se compila sin errores.
Ahora, ¿que PIC estas usando? por ahora con el código que tienes no es importante
para compilarlo porque no estas usando registros especiales de un PIC determinado.
En los graficos que adjuntaste se ve que tienes seleccionado un PIC16F628A
Y en el código se comenta que se usara un PIC16F877A.
Es importante que siempre selecciones que tipo de microcontrolador usaras.
Adjunto tu código compilado, con los fuses requeridos para el 16F877A
más la configuración del puerto B
Solo que yo use MicroCode Studio Plus v3.0 y PBP 2.60
Ahora estoy usando ya el MicroCode Studio v5.0 y PBP3 y hay muchas mejoras.

Suerte y hasta luego.
 

Adjuntos

  • Sin error.rar
    2.3 KB · Visitas: 77
graxias primero pruebo y te afirmo cual es mi problema



gracias tu programa si me logro funcionar pero cuando yo los programo en microcode no me funcionan ,creen qeu sea el software.....



gracias por todo ......................
 
Última edición:
Que bueno, mira para llevarlo a la parte física debes configurar los fuses y especificar que tipo de oscilador vas a usar, hay un circuito similar en la pagina de ucontrol con el cual te puedes guiar para las conexiones, por otro lado creo que podrías cambiar la 74ls04 por un ULN2803 y para el master clear una resistencia de 10k a vcc, al pic recuerda colocale una base para que puedas programarlo luego, bueno de momento es lo que veo, espero tus aportes y avances...mucho éxito en el proyecto


hola Reyvilla.
he estado siguiendo este hilo desde que el inspector gadget empezó y me pareció excelente esta matriz, a mi me funciona todo bien incluso le agregue las minúsculas pero no he podido corregirle la titiladera al momento de simularlo, sera que al probarlo físicamente seguirá titilando? adicionalmente quiero hacerle funcionar la octava fila para poder colocar por ejemplo texto subrayado pero no he podido pues lo que hace es que me pasa la información de la 1ª fila a la 8ª y sube todo el texto cortando las letras en la parte superior tú que harías para solucionar este pequeño error.
Gracias por estar pendiente de nuestras dudas
 
Última edición:
hola Reyvilla.
he estado siguiendo este hilo desde que el inspector gadget empezo y me parecio excelente esta matriz, a mi me funciona todo bien incluso le agregue las minusculas pero no he podido corregirle la titiladera al momento de simularlo, sera que al probarlo fisicamente seguira titilando?

No sabría decirte con certeza pero estaría un 70% seguro de que si, pero con pequeñas modificaciones en el código puede corregirse y por otra parte hay otro gran aporte esta vez de parte del compañero "tecniloco80" el cual se encuentra aquí:

https://www.forosdeelectronica.com/posts/636711/

Y esta bien bueno, no titila y puedes cambiar el mensaje como quieras a través de una interface serial.
 
hola gracias quiero comunicar un pic 16f876a con un celular Nokia1100 que segun lei tiene formato FBUS y que esta bien explicado en estos links:

Programa generador las tramas FBUS

http://www.embedtronics.com/nokia/fbus.html

http://www.carlosvolt.com.ar/

Todo esto es bárbaro pero quiero hacerlo en pic basic pro o lenguaje basic , el mismo tiene el serout pero no alcanza los bits/s requeridos ? ¿como mando estas tramas en basic?



hola gracias quiero comunicar un pic 16f876a con un celular Nokia1100 que segun lei tiene formato FBUS y que esta bien explicado en estos links:

https://www.forosdeelectronica.com/f18/programa-generador-tramas-fbus-978/index4.html

http://www.embedtronics.com/nokia/fbus.html

http://www.carlosvolt.com.ar/

Todo esto es bárbaro pero quiero hacerlo en pic basic pro o lenguaje basic , el mismo tiene el serout pero no alcanza los bits/s requeridos ? ¿como mando estas tramas en basic?
 
Última edición:
a mi el primer y ultimo link me aparecen rotos, ademas de que esa pregunta ya la habia visto en otro lado.... :unsure:

y una pregunta ¿como conseguiste esa reliquia (nokia 1100)?
y una mas... :D porque no pones algun avance de codigo y una simulacion en proteus, para que muestres algo de interes por tu proyecto, digo ademas de solo poner unos links...
 
Última edición:
No sabría decirte con certeza pero estaría un 70% seguro de que si, pero con pequeñas modificaciones en el código puede corregirse y por otra parte hay otro gran aporte esta vez de parte del compañero "tecniloco80" el cual se encuentra aquí:

https://www.forosdeelectronica.com/posts/636711/

Y esta bien bueno, no titila y puedes cambiar el mensaje como quieras a través de una interface serial.

Gracias por el dato reyvilla(y), exelente aporte de tecniloco80, pero no veo que se haya profundizado en el tema. Creen que se puede llevar a la realidad asi como esta:unsure:? o solo es una aplicacion para analizar la comunicacion serial. gracias muchachos
 
Megatecpower...

en lugar de

serout portc.7,N9600,["1E 00 0C 01 00 07 00 01 00 08 60 01 63 00 11 0E" ]

podrias poner....

serout portc.7,N9600,[$1E,$00,$0C,$01,$00,$07,$00,$01,$00,$08,$60,$01,$63,$00,$11,$0E ]

asi se manda la trama a la que te refieres...
 
Gracias por el dato reyvilla(y), exelente aporte de tecniloco80, pero no veo que se haya profundizado en el tema. Creen que se puede llevar a la realidad asi como esta:unsure:? o solo es una aplicacion para analizar la comunicacion serial. gracias muchachos

No lo he revisado, pero puedes preguntarle al amigo tecniloco80, ya que el es el creador y lo realizo en fisico, a ver si le falta algo o si se puede armar como esta en el esquema.
 
gracias reyvilla, pero analizando la simulacion se vee que el barrido lo hace en una forma diferente...mm al parecer no lo hace por filas, complicada esta parte para llevarla a la realidad con optimo resultado... por lo pronto sigo armando la matriz de mi interes, ya termine el armado del panel de leds y toca seguir con la placa de control.
 
hola que tal

no se si me podrían ayudar, estoy haciendo un programa sencillo de un ejemplo de un libro que solo recibe un voltaje de 0 a 5 V a través de conversor A/D del pic desde un potenciometro con un pic16f877a, pero cuando hago la conversión de los 255 segmentos a 5 volts a través de la variable p2 me aparecen solo enteros y no no me aparecen con punto decimal, quisiera ver 2.9 V o 4.5 V osea ocupar una variable de punto flotante pero por lo que he investigado picbasic no maneja punto flotante, no se si me podría ayudar diciendome que tengo que implementar en el codigo para poder visualizar puntos decimales, dejo el código del conversor A/D, gracias saludos.

DEFINE OSC 4 ; especifica que es de 4MHz

DEFINE LCD_DREG PORTB ;bit de datos del LCD empezando
DEFINE LCD_DBIT 0 ;por B.0, B.1, B.2 y B.3
DEFINE LCD_RSREG PORTB ;bit de registro del LCD conectar
DEFINE LCD_RSBIT 5 ;en el puerto B.5
DEFINE LCD_EREG PORTB ;bit de Enable conectar en el
DEFINE LCD_EBIT 4 ;puerto B.4
p1 VAR BYTE ;variable para almacenar potenciómetro 1
p2 VAR BYTE

ADCON1 =%100 ;configura PortA 0,1, 3 en conversores A/D

Inicio:

PAUSE 300

ADCON0 =%1000001 ;activar canal 0 a Fosc/8
GOSUB medir
p1= ADRESH

p2=(p1*5)/255

lcdout $fe,$80,"Voltaje:" ;limpiar LCD y sacar texto
LCDOUT $fe,$c1,#p2

GOTO inicio

medir: ;subrutina para leer el conversor A/D
PAUSEUS 50 ;pausa para setear el canal
ADCON0.2 = 1 ;iniciar conversión
PAUSEUS 50 ;pausa para la conversión

RETURN
 
estoy haciendo un programa sencillo de un ejemplo de un libro que solo recibe un voltaje de 0 a 5 V a través de conversor A/D del pic desde un potenciometro

Te recomiendo que le saques provecho a ese libro y lo utilices como papel sanitario... :LOL:

prueba este codigo es a dos digitos.... y modifica los puertos que corresponda a tu LCD puesto que yo los cambie para simularlo....

Código:
DEFINE OSC 4 ; especifica que es de 4MHz

DEFINE LCD_DREG PORTB 'LCD data port 
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4 
DEFINE LCD_RSREG PORTB 'LCD register select port 
DEFINE LCD_RSBIT 4 'LCD register select bit 
DEFINE LCD_EREG PORTB 'LCD enable port 
DEFINE LCD_EBIT 5 'LCD enable bit 
DEFINE LCD_RWREG PORTB 'LCD read/write port 
DEFINE LCD_RWBIT 6 'LCD read/write bit 
DEFINE LCD_BITS 4 'LCD bus size 4 or 8 
DEFINE LCD_LINES 2 'Number lines on LCD 
DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
DEFINE LCD_DATAUS 50 'Data delay time in us 


p1 VAR word ;variable para almacenar potenciómetro 1
p2 var word
p3 var word
ADCON1 =%100 ;configura PortA 0,1, 3 en conversores A/D

Inicio:

ADCIn 0,p1 'se captura valor en conversor
p2=(p1*5)/255 ' se hace regla de 3
p3=(((p1*5)//255) *100)/255 ' se utiliza el residuo y se multiplica por 100 y se vuelve a dividir entre 255

lcdout $fe,$80,"Voltaje:" ;limpiar LCD y sacar texto
LCDOUT $fe,$c1,# p2, "." , # p3," " 

GOTO inicio
 
Última edición:
hola lubeck gracias por la ayuda, ya probe el codigo que me pasaste y ya me muestra el valor con punto decimal, no se si me puedas explicar esta parte del código

p1=20
p2=(p1*5)/255
p3=(((p1*5)//255) *100)/255

es que apenas empiezo a programar en pic, entiendo lo de los 255 segmentos pero no se porque se le da a p1 el valor de 20 y luego porque se multiplica p1 por 5, luego veo que pones doble "//", no se si me puedas explicar estas lineas del codigo que pusiste, perdona la molestia, gracias saludos y nuevamente gracias.
 
es que apenas empiezo a programar en pic, entiendo lo de los 255 segmentos pero no se porque se le da a p1 el valor de 20 y luego porque se multiplica p1 por 5, luego veo que pones doble "//", no se si me puedas explicar estas lineas del codigo que pusiste, perdona la molestia, gracias saludos y nuevamente gracias.

con respecto al p1=20, no sirve para nada... lo utilice para hacer la simulacion... despues edite mi mensaje y lo borre.... pero al parecer lo alcanzaste a ver..:D

el // es una instruccion de residuo tambien llamado mod o modulus... y su resultado es lo que no se puede dividir...

ejemplo 250 mod 255 =250 porque esos 250 no pudieron ser divididos entre 255
o digamos 256 mod 255 =1 porque de los 256 nada mas 1 no pudo ser divido , busa informcion del wiki...

entonces si digamos que el conversor da un p1=20

multiplicas 20*5 y lo divides entre 255 y en p2 pones el entero que es 0

ahora del resultado anterior ves con el modulus que no pudo ser dividido...

20*5//255 y fueron 100 esos 100 lo multiplicas por otros 100 para que puedan ser divididos entre 255 y lo divides y lo colocas en p3 y te da 39 que son los decimales... ;)
 
Última edición:
hola lubeck

gracias por la explicación ya me quedo mas claro el codigo y gracias por la ayuda, saludos.

oki...

luego porque se multiplica p1 por 5

nada mas me falto aclarar lo del 5 creo...

es una regla de tres, si 255(que es un byte) es a 5v entonces x es a?

se multiplica (x*5v)/255 te da "el voltaje en un rango de 0 a 255"

Saludos y suerte

pd. lo de la regla de tres tambien buscalo en el wiki o matematicas basicas...
 
Última edición:
lubeck, tengo en mente hacer un simon say para ver si logro sacarle provecho al comando ramdon de PBP, el problema que veo de momento es que para ese comando la variable debe ser word, y el valor que almacena va desde 0 hasta 65535, lo cual es mucho, intente utilizando algo así:

RANDOM, VARIABLE/4 'Ya que solo necesito un numero aleatorio del 1 al 4

Pero no me funciono, como se podría hacer para lograr trabajar el random con una cantidad de números
especificos?
Tendrás alguna idea?
 
Atrás
Arriba