#include // Estas macros son para los botones a cada // boton, Make_Boton le asigna un n£mero ID // y es mucho mas sencillo utilizar un nombre // que un n£mero... #define B_In0 2 #define B_In1 3 #define B_In2 4 #define B_In3 5 #define B_In4 6 #define B_In5 7 #define B_In6 8 #define B_In7 9 #define B_In8 10 #define B_In9 11 #define B_In10 12 #define B_In11 13 #define B_In12 14 #define B_In13 15 #define B_In14 16 #define B_In15 17 // Selecci¢n de canales de entrada ( 19xx Datos internos ) #define B_Ch00_In 18 #define B_Ch01_In 19 #define B_Ch02_In 20 #define B_Ch03_In 21 #define B_Ch04_In 22 #define B_Ch19_In 23 #define B_Out0 24 #define B_Out1 25 #define B_Out2 26 #define B_Out3 27 #define B_Out4 28 #define B_Out5 29 #define B_Out6 30 #define B_Out7 31 #define B_Out8 32 #define B_Out9 33 #define B_Out10 34 #define B_Out11 35 #define B_Out12 36 #define B_Out13 37 #define B_Out14 38 #define B_Out15 39 // Selecci¢n de canales de entrada ( 19xx Datos internos ) #define B_Ch00_Out 40 #define B_Ch01_Out 41 #define B_Ch02_Out 42 #define B_Ch03_Out 43 #define B_Ch04_Out 44 #define B_Ch19_Out 45 #define B_AcercaDe 1 #define B_Fun 54 #define B_Sft 53 #define B_Not 52 #define B_Run 51 #define B_And 60 #define B_Or 59 #define B_Cnt 58 #define B_Tr 57 #define B_Lr 56 #define B_Hr 55 #define B_Ld 66 #define B_Out 65 #define B_Tim 64 #define B_Dm 63 #define B_Ch 62 #define B_Cont 61 #define B_7 72 #define B_8 71 #define B_9 70 #define B_Ext 69 #define B_Chg 68 #define B_Scrh 67 #define B_4 78 #define B_5 77 #define B_6 76 #define B_Play 75 #define B_Del 74 #define B_Mont 73 #define B_1 84 #define B_2 83 #define B_3 82 #define B_Rec 81 #define B_Ins 80 #define B_Up 79 #define B_0 89 #define B_Clr 88 #define B_Ver 87 #define B_Write 86 #define B_Down 85 #define B_DebugCode 90 #define B_ResetValores 91 #define B_Configurar 50 #define B_Reset 46 #define B_Salvar 47 #define B_Cargar 48 #define B_Salir 49 ///////////////// Una vez que estemos en el modo RUN #define R_In0 1 #define R_In1 2 #define R_In2 3 #define R_In3 4 #define R_In4 5 #define R_In5 6 #define R_In6 7 #define R_In7 8 #define R_In8 9 #define R_In9 10 #define R_In10 11 #define R_In11 12 #define R_In12 13 #define R_In13 14 #define R_In14 15 #define R_In15 16 // Selecci¢n de canales de entrada ( 19xx Datos internos ) #define R_Ch00_In 17 #define R_Ch01_In 18 #define R_Ch02_In 19 #define R_Ch03_In 20 #define R_Ch04_In 21 #define R_Ch19_In 22 // Selecci¢n de canales de entrada ( 19xx Datos internos ) #define R_Ch00_Out 23 #define R_Ch01_Out 24 #define R_Ch02_Out 25 #define R_Ch03_Out 26 #define R_Ch04_Out 27 #define R_Ch19_Out 28 #define R_Stop 29 #define R_Up 30 #define R_Down 31 // // N£mero de Entradas y Salidas // #define Numero_In 16 #define Numero_Out 16 #define Numero_Tim 48 #define Numero_Tmp 8 // // Aqui estan definido los nombres de todos los comandos // y su _ID correspondiente. El programa debe guiarse por // estos c¢digos... // #define ReadNop 0 // No Opera #define Ld 1 // Inicio de bloque #define Or 2 // Funcion Or #define And 3 // Funcion And #define _Out 4 // Inicia salida #define Tim 5 // Temporizador #define Cnt 6 // Contador // #define _Tr 7 // Rel‚ Temporal (No se considera FUNCION) #define Fun 99 // Las siguientes macros son las // funciones dentro de FUN #define End 101 // Final de programa // No he tenido ocaci¢n de comprobar el funcionamiento // de las dos siguientes instrucciones en un Automata. // Por lo que no comprendo bien su funcionamiento l¢gico. #define Il 102 // Instrucci¢n de condici¢n #define Ilc 103 // Instrucci¢n fin de condici¢n #define Sft 110 // Registro de desplazamiento #define Keep 111 // Switch biestable ( Rel‚ Latch ) #define DifU 113 // Activador en el flanco de subida #define DifD 114 // Activador en el flanco de bajada #define TimH 115 // Temporizador de alta velocidad #define Cmp 120 // Comparador #define Mov 121 // Move #define Mvn 122 // Move Not #define Add 130 // Add (Suma en BCD) #define Sub 131 // Subtract ( Resta en BCD ) #define Stc 140 // Introduce un 1 en el flag de acarreo #define Clc 141 // Borra el flag de acarreo // Macros para los parametros y parametros compuestos #define P_void 0 // Sin parametro activo #define P_Ld 1 // Fusi¢n de bloques #define P_Tr 2 // #define P_Hr 3 // Reles internos #define P_Cnt 4 // #define P_Tim 5 // Utiliza estado del temporizador #define P_Keep 6 // Utiliza estado del biestable ( Rel‚ Latch ) #define P_Not 7 // Negaci¢n del dato Entrada #define P_Not_Tr 8 // Negaci¢n del dato Rel‚ Temporal #define P_Not_Hr 9 // Negaci¢n del dato Rel‚ Interno #define P_Not_Cnt 10 // Negaci¢n del dato Contador #define P_Not_Tim 11 // Negaci¢n del dato Temporizador #define P_Keep_Hr 12 // Keep Guardando valores #define P_Tim_Data 13 // Dato TIM/TIMH/CNT (inutil en vú2.0) #define P_Out 14 // Carga una salida int Menu_Edicion(void) ; void Reset_Programa(void) ; void Resetea_Memoria(void) ; int InicializaMemoria(void) ; int CargaEntornoGrafico(void) ; void ReImprimeCanal_In(int Canal) ; void ReImprimeCanal_Out(int Canal) ; void Abandona_Programa(char *texto, long valor) ; typedef struct { unsigned int Bit : 1; // Bariable de tama¤o 1 bit } Puertas; typedef struct { Puertas In [Numero_In] [6]; // 16 Entradas x 6 canales.. Puertas Out [Numero_Out] [6]; // 16 Salidas x 6 canales.. Puertas Hr [Numero_Out] [10]; // 16 Reles internos x 9 canales.. Puertas Ri [Numero_Out][10]; // Reles internos volatiles....... Puertas Tr [Numero_Tmp] ; // 8 Reles temporales............... Puertas _Ld [200]; //200 Ld's........................... Puertas _Cnt [Numero_Tim] ; // 47 Biestable l¢gico con pulsaci¢n. Puertas _Tim [Numero_Tim] ; // 47 Logica temporizaci¢n........... // Puertas Bt [3]; // 3 Preestados l¢gicos de Tiempo... clock_t Contador_de_Tiempo[3]; // 3 Cron¢metros de inicio para Bt.. int Tim_Cnt [Numero_Tim] ; // 47 Comprobadores temporizaci¢n.... Puertas Pre_Ld [9999]; // Preestados l¢gicos a los LD's.... } MemoriaRam; typedef struct { unsigned char Comando; unsigned char Parametros; unsigned int Dato; unsigned int SubDato; } FirmWare; struct Colores { char Texto; char F_Texto; char VisorLCD; }; typedef struct { struct Colores Colores; Puertas PcOut; Puertas TimeFlow; Puertas Int8; } Configuracion; // extern int Fichero_bot(char Dinamicos_Estaticos);