Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!
Esto me parecio interesante:

Código:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, Buttons, ExtCtrls, Pic16f84;
esa unidad como ¿la conseguiste o creaste para añadirla a Delphi?

Gracias.
Responder Con Cita
  #2  
Antiguo 21-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Cita:
Empezado por FGarcia Ver Mensaje
Hola!
Esto me parecio interesante:

Código:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, Buttons, ExtCtrls, Pic16f84;
esa unidad como ¿la conseguiste o creaste para añadirla a Delphi?

Gracias.
la hice yo. En realidad me hice todo, pondré el programa completo por trocitos para no llenar el hilo con codigo.
Responder Con Cita
  #3  
Antiguo 21-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:16:49.
Responder Con Cita
  #4  
Antiguo 22-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:17:01.
Responder Con Cita
  #5  
Antiguo 22-04-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 0
Dedalo Va por buen camino
Este es el fichero PIC16F84.pas. Es el que cambio en el compilador al cambiar de procesador. Tengo varios, segun el procesador para el que vaya a compilar.


Código Delphi [-]
unit Pic16F84;
interface
uses SysUtils;
type
 Tpic = Record
  MemPrograma:array[0..1023] of Word;
  MemDatos:array[0..63] of Word;
  Id:array[0..3] of Word;
  Configuracion:Word;
  MemProgramaOk:Boolean;
  MemDatosOk:Boolean;
  ConfiguracionOk:Boolean;
 end;
const
 LoadConfiguration  = 0;
 Desconocido1   = 1;
 LoadProgramMemory  = 2;
 LoadDataMemory   = 3;
 ReadProgramMemory  = 4;
 ReadDataMemory   = 5;
 IncrementAddress  = 6;
 Desconocido7   = 7;
 BeginEraseProgramming = 8;
 BeginProgrammingOnly = 24;
 BulkEraseProgram  = 9;
 BulkEraseData   = 11;
function ConvierteToken(Token:String):Integer;
function DecodificaInstruccion(Opcode:Word):String;
function ParametrosInstruccion(Instruccion:String):Integer;
implementation
function ConvierteToken(Token:String):Integer;
begin
// Tokens propios del procesador
 if UpperCase(Token)=  'CLRW'   then Result := $0100
 else if UpperCase(Token)= 'CLRWDT' then Result := $0064
 else if UpperCase(Token)= 'NOP'    then Result := $0000
 else if UpperCase(Token)= 'RETURN' then Result := $0008
 else if UpperCase(Token)= 'RETFIE' then Result := $0009
 else if UpperCase(Token)= 'SLEEP'  then Result := $0063
 else if UpperCase(Token)= 'OPTION' then Result := $0062
 else if UpperCase(Token)= 'TRIS'   then Result := $0060
 else if UpperCase(Token)= 'MOVWF'  then Result := $0080
 else if UpperCase(Token)= 'CLRF'   then Result := $0180
 else if UpperCase(Token)= 'ADDLW'  then Result := $3E00
 else if UpperCase(Token)= 'ANDLW'  then Result := $3900
 else if UpperCase(Token)= 'IORLW'  then Result := $3800
 else if UpperCase(Token)= 'MOVLW'  then Result := $3000
 else if UpperCase(Token)= 'RETLW'  then Result := $3400
 else if UpperCase(Token)= 'XORLW'  then Result := $3A00
 else if UpperCase(Token)= 'SUBLW'  then Result := $3C00
 else if UpperCase(Token)= 'CALL'   then Result := $2000
 else if UpperCase(Token)= 'GOTO'   then Result := $2800
 else if UpperCase(Token)= 'ADDWF'  then Result := $0700
 else if UpperCase(Token)= 'ANDWF'  then Result := $0500
 else if UpperCase(Token)= 'COMF'   then Result := $0900
 else if UpperCase(Token)= 'DECF'   then Result := $0300
 else if UpperCase(Token)= 'DECFSZ' then Result := $0B00
 else if UpperCase(Token)= 'INCF'   then Result := $0A00
 else if UpperCase(Token)= 'INCFSZ' then Result := $0F00
 else if UpperCase(Token)= 'IORWF'  then Result := $0400
 else if UpperCase(Token)= 'MOVF'   then Result := $0800
 else if UpperCase(Token)= 'RLF'    then Result := $0D00
 else if UpperCase(Token)= 'RRF'    then Result := $0C00
 else if UpperCase(Token)= 'SUBWF'  then Result := $0200
 else if UpperCase(Token)= 'SWAPF'  then Result := $0E00
 else if UpperCase(Token)= 'XORWF'  then Result := $0600
 else if UpperCase(Token)= 'BCF'    then Result := $1000
 else if UpperCase(Token)= 'BSF'    then Result := $1400
 else if UpperCase(Token)= 'BTFSC'  then Result := $1800
 else if UpperCase(Token)= 'BTFSS'  then Result := $1C00
// Tokens del compilador (iguales para cualquier procesador)
 else if UpperCase(Token)= 'EQU'    then Result := -2
 else if UpperCase(Token)= 'ORG'    then Result := -3
 else if UpperCase(Token)= 'DB'     then Result := -4
 else if UpperCase(Token)= 'END'    then Result := -5
 else Result:=-1;
end;
function DecodificaInstruccion(Opcode:Word):String;
var
 d,f,b,k,kl:String;
begin
 Result:='???';
 f:='$'+IntToHex(Opcode and $7F,2);
 if (Opcode and $80)=0 then d:='W' else d:='F';
 b:='$'+IntToHex((Opcode shr 7) and $7,1);
 k:='$'+IntToHex(Opcode and $ff,2);
 Kl:='$'+IntToHex(Opcode and $7ff,2);
 case Opcode shr 7 of
  $01      :Result:='MOVWF '+ f;
  $02      :Result:='CLRW';
  $03      :Result:='CLRF '+ f;
  $04,$05  :Result:='SUBWF '+ f+','+d;
  $06,$07  :Result:='DECF '+ f+','+d;
  $08,$09  :Result:='IORWF '+ f+','+d;
  $0A,$0B  :Result:='ANDWF '+ f+','+d;
  $0C,$0D  :Result:='XORWF '+ f+','+d;
  $0E,$0F  :Result:='ADDWF '+ f+','+d;
  $10,$11  :Result:='MOVF '+ f+','+d;
  $12,$13  :Result:='COMF '+ f+','+d;
  $14,$15  :Result:='INCF '+ f+','+d;
  $16,$17  :Result:='DECFSZ '+ f+','+d;
  $18,$19  :Result:='RRF '+ f+','+d;
  $1A,$1B  :Result:='RLF '+ f+','+d;
  $1C,$1D  :Result:='SWAPF '+ f+','+d;
  $1E,$1F  :Result:='INCFSZ '+ f+','+d;
  $20..$27 :Result:='BCF '+ f+','+b;
  $28..$2F :Result:='BSF '+ f+','+b;
  $30..$37 :Result:='BTFSC '+ f+','+b;
  $38..$3F :Result:='BTFSS '+ f+','+b;
  $40..$4F :Result:='CALL '+ kl;
  $50..$5F :Result:='GOTO '+ kl;
  $60..$67 :Result:='MOVLW '+ k;
  $68..$6F :Result:='RETLW '+ k;
  $70,$71  :Result:='IORLW '+ k;
  $72,$73  :Result:='ANDLW '+ k;
  $74,$75  :Result:='XORLW '+ k;
  $76,$77  :Result:='???';
  $78..$7B :Result:='SUBLW '+ k;
  $7C..$7F :Result:='ADDLW '+ k;
  $00:
  begin
   if (Opcode and $3FF8)=$060 then
          begin
    Result:='TRIS '+IntToHex(Opcode and 7,2);
    Exit;
   end;
       case Opcode of
    $000,$020,$040,$060:Result:='NOP';
    $064:Result:='CLRWDT';
    $009:Result:='RETFIE';
    $008:Result:='RETURN';
    $063:Result:='SLEEP';
    $062:Result:='OPTION';
   end;
  end;
 end;
end;
function ParametrosInstruccion(Instruccion:String):Integer;
begin
 case ConvierteToken(Instruccion) of
  $0100,$0064,$0000,$0008,$0009,$0063,$0062: Result:=0; // Sin Operandos
  $0060: Result:=1;     // 0 <= f <= 7
  $0080,$0180: Result:=2;     // 0 <= f <= 127
  $3E00,$3900,$3800,$3000,$3400,$3A00,$3C00: Result:=3; // 0 <= k <= 255
  $2000,$2800: Result:=4;     // 0 <= k <= 2047
  $0700,$0500,$0900,$0300,$0B00,$0A00,$0F00,$0400,$0800,
  $0D00,$0C00,$0200,$0E00,$0600: Result:=5;  // 0 <= f <= 127 y W ó F
  $1000,$1400,$1800,$1C00: Result:=6;   // 0<= f <= 128 / 0 <= b <= 7
  else Result:=-1;
 end;
end;
end.
Responder Con Cita
  #6  
Antiguo 23-04-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Gracias por la informacion Dedalo. Lo voy a estudiar para continuar aprendiendo.
Responder Con Cita
  #7  
Antiguo 23-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:17:22.
Responder Con Cita
  #8  
Antiguo 13-10-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
"Tolomeo se mudo al Polo Norte"

Última edición por JoseFco fecha: 24-12-2008 a las 12:22:48.
Responder Con Cita
Respuesta



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
Bitmap buffer fitolanga Gráficos 4 21-04-2007 15:58:29
Rececpción de buffer incerrecta ?¿ Gagiel Internet 3 05-03-2007 11:07:38
Leer buffer de teclado dieleo Varios 0 12-02-2007 19:23:19
Texto del buffer del sistema calogero Varios 1 07-02-2007 18:22:16
Problema con Double Buffer guillonet C++ Builder 0 29-08-2006 19:26:22


La franja horaria es GMT +2. Ahora son las 12:42:17.


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