Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-12-2009
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Angry primer proyecto con Mikro pascal no compila

Hola espero que alguien me pueda responder , ayer instale la demo de mikropascal y quice crear un proyecto que prenda unos leds en el puerto A pero no se mucho y recien empiezo a ver algo de este lenguaje y es por eso que escribo ! , mi problema es que saque de algun lado un pdf que tenia como titulo "mi primer proyecto" pero al intentar compilar me decia que DDRA no esta declarada , el codigo que copie del pdf fue

Código Delphi [-]
program 1;

begin

 DDRA := 0xFF;

  while true do
  begin
   PORTA := 0X00;
   Delay_ms(1000);

   PORTA := 0xFF;
   Delay_ms(1000);
  end;
end.

si alguien me puede ayudar estare muy agradecido .
Responder Con Cita
  #2  
Antiguo 30-12-2009
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
No conozco este MicroPascal, pero si te puedo decir que el Pascal estandar es un lenguaje fuertemente tipado, es decir, no puedes usar una variable si antes no has declarado su tipo.

Cita:
Empezado por gaston260 Ver Mensaje
... al intentar compilar me decia que DDRA no esta declarada , el codigo que copie del pdf fue


Código Delphi [-]program 1;

begin

DDRA := 0xFF;

while true do
begin
PORTA := 0X00;
Delay_ms(1000);

PORTA := 0xFF;
Delay_ms(1000);
end;
end.




si alguien me puede ayudar estare muy agradecido .
En Pascal tendrías que poner antes de usarla algo como esto:
Código Delphi [-]
var
  DDRA: Integer;
begin
 DDRA := 0xFF;
...

Un saludo
Responder Con Cita
  #3  
Antiguo 31-12-2009
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Muchas gracias ! y como podria usar un solo pin del 16f84a en mikropascal ?
Responder Con Cita
  #4  
Antiguo 01-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Primero tienes que definir si un pin de entrada/salida se usará como entrada o como salida. Esto se hace cambiando los bits del registro TRISx (vale para cualquier tipo de PIC).

Por ejemplo:

Código Delphi [-]
TRISA := $FF; // Definir todos los pines del registro A (RA0 a RA7) como entradas

o se pueden setear bits por separado:

Código Delphi [-]
SetBit(TRISA, 3);  // Colocar el bit 3 en estado alto (entrada). En este caso el pin RA3 se configura como entrada.

ClearBit(TRISB, 5); // Colocar el bit 5 en estado bajo (el pin RB5 se comportará como una salida)

TRISA := $FF; // Colocar todos los bits en uno (todos los pines del registro A como entradas)

También se pueden setear múltiples bits usando la notación binaria. Ejemplo:

Código Delphi [-]
TRISA := %00001111;

En la hoja de datos del PIC que vas a usar podés ver los registros que posee y el número de entradas/salidas disponibles.

Una vez definido un pin como salida, a través de SETBIT o CLEARBIT se puede cambiar el estado de ese pin. Por ejemplo:

Código Delphi [-]
Setbit(PORTA,0); // Colocar el pin RA0 en estado alto
Clearbit(PORTA,5); // Colocar el pin RA5 en estado bajo

Si el pin está configurado como entrada, puedes leer el valor con TestBit. Ejemplo:

Código Delphi [-]
Estado := Testbit(PORTA,3); // Leer el estado del pin RA3

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 01-01-2010 a las 07:51:24.
Responder Con Cita
  #5  
Antiguo 01-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Muchas gracias lo voy a usar y comento mas luego ! , pero desde ya estoy muy agradecido ! , algun tutorial o manual en castellano sobre mikropascal abra ?
Responder Con Cita
  #6  
Antiguo 01-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Toda la documentación de Mikropascal está en inglés. No conozco documentación en español.

Hay algunos "puntos oscuros" como ciertos detalles en el manejo de cadenas, el ensamblador en línea (entre otros temas) que no están 100 % documentados. Igual revisando en el foro de Mikroelectronica encontrarás muchos "tips"
de utilidad.

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 01-01-2010 a las 17:14:08.
Responder Con Cita
  #7  
Antiguo 01-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Hola ! tengo otro problema ! como puedo hacer para poner en un nivel logico 1 dos patas simultanes del 16f84a ?

trato de hacerlo pero estoy vastante perdido !

gracias !
Responder Con Cita
  #8  
Antiguo 02-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Se puede cambiar el estado de más de un pin a la vez usando una máscara, cambiando los bits que desees. Por ejemplo:

Código Delphi [-]
PORTA := PORTA Or $2C;

Otro ejemplo, en este caso expresando el valor en binario:
Código Delphi [-]
PORTA := PORTA Or %00010010;

Esto coloca varios pines en estado alto.

Para invertir uno o más pines al mismo tiempo se puede usar XOR en lugar de OR.

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #9  
Antiguo 02-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Haaaaaaaaaaaaaaaaaaa !!!!! muchas gracias amigo ! esto de intentar ser autodidacta es dificil jajaja por suerte hay gente con ganas de enseñar !

Gracias !!!!
Responder Con Cita
  #10  
Antiguo 02-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Suerte con el aprendizaje y a no desanimarse.

Con respecto al PIC16F84, a esta altura me parece totalmente obsoleto. Si vas a usar un compilador de alto nivel como Mikropascal (que por más optimizado que sea el código generado, nunca se acercará al ensamblador "puro"), te recomiendo usar algo más moderno, como el PIC16F648A, que no es mucho más costoso pero tiene más prestaciones (incluyendo más memoria), lo que lo hace ideal como "entry level". ¿ Programar en ensamblador ? Hoy en día trato de evitarlo en la medida de lo posible, y más teniendo excelentes compiladores como el citado Mikropascal.

Aquí está la hoja de datos del PIC16F648A:

http://ww1.microchip.com/downloads/e...Doc/40044G.pdf

Como se puede apreciar, a pesar de ser un microcontrolador pequeño, tiene prestaciones que están disponibles normalmente en modelos más grandes. Tiene USART, tres temporizadores, PWM, dos comparadores, 16 pines de E/S.

Saludos de parte de otro autodidacta !!!
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 03-01-2010 a las 18:17:41.
Responder Con Cita
  #11  
Antiguo 04-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Gracias por tomarte el tiempo de editar la respuesta ! , y voy a tomar tus consejos aunque solo soy un jobista jajaja tal vez un dia aga algo interesante porque me apasiona y mas conociendo a delphi !
Responder Con Cita
  #12  
Antiguo 04-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
tengo un problema ahora ! mikropascal me dice 1:1 E-0 Linker error: 13: bad bit number el error se produce si saco

Código:
while true  do
  Begin *** End;
donde antes era

Código:
while true  do
Begin
  while TestBit(PORTA,3) = 1 Do  // pregunto si la pata 2 esta en nivel alto
                                 // si lo esta entonces
  Begin *** End;
la verdad me quede sin preguntas ni respuestas !! no entiendo nada de nada !
Responder Con Cita
  #13  
Antiguo 05-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
¿ Podrías postear el código fuente completo ?.

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #14  
Antiguo 06-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
perdon lo borre pero intento generar de nuevo el error con mikropascal pro 2009 y no lo hace !! voy a volver a instalar mikropascal 8.0.0.1 para ver si de nuevo me genera el error !

era algo asi el codigo

Código:
program probar1;

{ Declarations section }

begin

SetBit(TRISA, 3);
SetBit(TRISA, 2);

begin
while true do
      begin
           while TestBit(PORTB,3) = 1 Do
                 begin
                        PORTA := PORTA Or %00010010;
                 end;
      end;
end;

begin
while true do
      begin
           while TestBit(PORTB,2) = 1 do
                 begin
                        PORTA := PORTA Or %11101101;
                 end;
      end;
end;

end.
se que estoy abusando de los Begins pero era el codigo sin optimizar !

gracias !

Última edición por gaston260 fecha: 06-01-2010 a las 07:40:14.
Responder Con Cita
  #15  
Antiguo 06-01-2010
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Bue resulta que ni el mikropascal 8.0.0.1 me genera errores ni el pro tampoco !

el codigo es este

program probar1;

{ Declarations section }

begin

SetBit(TRISA, 3);
SetBit(TRISA, 2);

{ClearBit(TRISB, 7);
ClearBit(TRISB, 8);
ClearBit(TRISB, 9);
ClearBit(TRISB, 10);
ClearBit(TRISB, 11);
ClearBit(TRISB, 12);
//ClearBit(TRISB, 13);
}

TRISB := %00001111;

begin
while true do
begin
while TestBit(PORTA,3) = 0 Do
begin
PORTB := PORTB Or %10010010;
end;
//end;
//end;

//begin
//while true do
//begin
while TestBit(PORTA,2) = 0 do
begin
PORTB := PORTB Or %11101101;
end;
end;
end;

end.

Última edición por gaston260 fecha: 06-01-2010 a las 08:39:39. Razón: porque escrbi mal el codigo
Responder Con Cita
  #16  
Antiguo 08-01-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Entonces...¿ todo funciona ?

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
[Z80 Pascal] Proyecto de compilador Ñuño Martínez ASM y Microcontroladores 6 11-05-2010 15:37:47
Mikro Pascal 8051 JoseFco ASM y Microcontroladores 9 19-10-2008 01:43:50
primer programa y primer empleo josi La Taberna 36 17-07-2008 23:30:41
Comparativa entre Free Pascal 2.2.0 y Turbo Pascal 7.0 esocrates Varios 2 14-07-2008 15:56:24
manual de excepciones de object pascal para free pascal??? Garion OOP 3 27-05-2005 01:42:29


La franja horaria es GMT +2. Ahora son las 11:15:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi