XT-26  Código del proyecto desarrollado en Sistemas Digitales II (SDII)
Antonio Julián Alférez Zamora & Sonsoles López Pernas
m5272lib.h
Ir a la documentación de este archivo.
1 //------------------------------------------------------------------------------
2 // m5272lib.h
3 //
4 // Definición de tipos y declaración de funciones para la plataforma de
5 // desarrollo ENT2004CF
6 //
7 // Actualizada por: Javier Guillén Álvarez
8 //------------------------------------------------------------------------------
9 
10 #ifndef __M5272LIB_H__
11 #define __M5272LIB_H__
12 
13 //------------------------------------------------------------------
14 // DEFINICIÓN DE TIPOS
15 //------------------------------------------------------------------
16 typedef enum {TRUE=1, FALSE=0} BOOL; // Tipo binario TRUE=1, FALSE=0
17 
18 typedef enum {IMPAR=1, PAR=0} PAR_IMPAR; // Para distinguir interrupciones pares(0) e impares(1)
19 
20 typedef signed char BYTE; // Tipo de una variable que ocupa 1 byte con signo
21 typedef unsigned char UBYTE; // Tipo de una variable que ocupa 1 byte sin signo
22 typedef signed short int WORD; // Tipo de una variable que ocupa 2 bytes con signo
23 typedef unsigned short int UWORD; // Tipo de una variable que ocupa 2 bytes sin signo
24 typedef signed long int LONG; // Tipo de una variable que ocupa 4 bytes con signo
25 typedef unsigned long int ULONG; // Tipo de una variable que ocupa 4 bytes sin signo
26 typedef unsigned int UINT; // Tipo de una variable que ocupa 4 bytes sin signo
27 
28 typedef unsigned int size_t; // Tipo de una variable que define el tamaño de una zona de memoria
29 
30 
31 //------------------------------------------------------------------
32 // DEFINICIÓN DE MACROS
33 //------------------------------------------------------------------
34 #define INLINE
35 #define SIN_SIGNO 1 // Flag para las funciones outNum y outNumDec
36 #define MAYUSC 2 // Flag para las funciones outNum y outNumDec
37 
38 #define RET_1S 1000000 // Constante para un retardo de 1seg. aprox. en retardo()
39 #define RET_15MS 15000 // Constante para un retardo de 15ms aprox. en retardo()
40 #define RET_3MS 3000 // Constante para un retardo de 3ms aprox. en retardo()
41 
42 // Permite acceder al contenido de la dirección de memoria 'dir'
43 #define ACCESO_A_MEMORIA_LONG(dir) (*(ULONG *)(dir))
44 
45 // Instrucción BSET en ensamblador para poner a 1 un bit de un byte de memoria
46 #define bsetb(bit,mem) __asm__ __volatile__ ("bset.b %0,%1"::"n"(bit),"m"(mem))
47 
48 // Instrucción BCLR en ensamblador para poner a 0 un bit de un byte de memoria
49 #define bclrb(bit,mem) __asm__ __volatile__ ("bclr.b %0,%1"::"n"(bit),"m"(mem))
50 
51 // Instrucción BSET en ensamblador para poner a 1 un bit de 4 bytes de memoria
52 #define bsetl(bit,mem) __asm__ __volatile__ ("moveal %1,%%a0\n\t" "move.l (%%a0),%%d0\n\t" "bset.l %0,%%d0\n\t" "move.l %%d0,(%%a0)\n\t"::"n"(bit),"m"(mem):"d0", "memory", "a0")
53 
54 // Instrucción BCLR en ensamblador para poner a 0 un bit de 4 bytes de memoria
55 #define bclrl(bit,mem) __asm__ __volatile__ ("moveal %1,%%a0\n\t" "move.l (%%a0),%%d0\n\t" "bclr.l %0,%%d0\n\t" "move.l %%d0,(%%a0)\n\t"::"n"(bit),"m"(mem):"d0", "memory", "a0")
56 
57 // Desahabilita las interrupciones
58 #define cli() __asm__ __volatile__ ( "move.w %%sr, %%d0 \n\t ori.l #0x0700,%%d0 \n\t move.w %%d0, %%sr \n\t" : : : "d0", "memory")
59 
60 // Finaliza la ejecución en curso
61 #define exit(status) _exit(status)
62 
63 // Habilita las interrupciones
64 #define sti() asm volatile ( "move.w %%sr, %%d0 \n\t andi.l #0xF8FF,%%d0 \n\t move.w %%d0, %%sr \n\t" : : : "d0", "memory")
65 
66 //------------------------------------------------------------------
67 // DECLARACIÓN DE FUNCIONES IMPLEMENTADAS EN m5272lib.c
68 //------------------------------------------------------------------
69 // Finaliza la ejecución en curso
70 INLINE void _exit(int status);
71 
72 // Lee tecla del teclado del PC sin eco
73 INLINE char inch(void);
74 
75 // Lee tecla con eco en el terminal
76 INLINE char inche(void);
77 
78 // Escribe el carácter ch
79 INLINE void outch(char ch);
80 
81 // Imprime en el terminal el valor de 'num' en la base indicada
82 void outNum(UINT base, long num, UBYTE opciones);
83 
84 // Imprime en el terminal el número 'n' con 'dec' cifras decimales
85 void outNumDec(UINT base, double n, UINT dec, UBYTE opciones);
86 
87 // Escribe la cadena ASCIIZ que empieza en start
88 INLINE void output(char *start);
89 
90 // Introduce aprox. el retardo expresado en microsegundos
91 INLINE void retardo(UINT microsegundos);
92 
93 // Devuelve longitud de cadena
94 INLINE LONG _strlen(char *st);
95 
96 // Copia una zona de memoria
97 INLINE void * memcpy ( void * dest, const void * src, size_t num );
98 
99 // Sets the first num bytes pointed by buffer to the value specified by c parameter.
100 INLINE void * memset ( void * buffer, int c, size_t num );
101 
102 void _prep_TOUT0(void);
103 void _prep_TOUT1(void);
104 void _prep_TOUT2(void);
105 void _prep_TOUT3(void);
106 void _prep_TIN0(void);
107 void _prep_INT3(void);
108 void _prep_INT2(void);
109 void _prep_INT1(void);
110 
111 void __init(void);
112 void bucleMain(void);
113 
114 void rutina_int1(void);
115 void rutina_int2(void);
116 void rutina_int3(void);
117 void rutina_int4(void);
118 
119 void rutina_tout0(void);
120 void rutina_tout1(void);
121 void rutina_tout2(void);
122 void rutina_tout3(void);
123 
124 
125 #endif
signed short int WORD
Definition: m5272lib.h:22
void outNumDec(UINT base, double n, UINT dec, UBYTE opciones)
Definition: m5272lib.c:141
unsigned int UINT
Definition: m5272lib.h:26
void rutina_int3(void)
Definition: XT-26.c:73
void _prep_TOUT0(void)
unsigned long int ULONG
Definition: m5272lib.h:25
void _prep_TOUT2(void)
INLINE void _exit(int status)
Definition: m5272lib.c:22
void rutina_int4(void)
Definition: XT-26.c:74
BOOL
Definition: m5272lib.h:16
signed long int LONG
Definition: m5272lib.h:24
void _prep_TIN0(void)
INLINE void retardo(UINT microsegundos)
Definition: m5272lib.c:190
INLINE char inche(void)
Definition: m5272lib.c:57
INLINE LONG _strlen(char *st)
Definition: m5272lib.c:204
INLINE void outch(char ch)
Definition: m5272lib.c:73
PAR_IMPAR
Definition: m5272lib.h:18
void bucleMain(void)
Programa principal.
Definition: XT-26.c:645
unsigned char UBYTE
Definition: m5272lib.h:21
Definition: m5272lib.h:18
Definition: m5272lib.h:18
INLINE void * memcpy(void *dest, const void *src, size_t num)
Definition: m5272lib.c:220
void _prep_TOUT3(void)
Definition: m5272lib.h:16
void rutina_tout3(void)
Definition: XT-26.c:77
void rutina_int2(void)
Definition: XT-26.c:72
#define INLINE
Definition: m5272lib.h:34
char c
Definition: interfaz.c:16
void __init(void)
Rutina de inicio.
Definition: XT-26.c:129
void _prep_INT2(void)
void _prep_INT1(void)
void rutina_tout2(void)
Definition: XT-26.c:76
void rutina_tout1(void)
Definition: XT-26.c:75
void _prep_TOUT1(void)
INLINE void output(char *start)
Definition: m5272lib.c:170
unsigned short int UWORD
Definition: m5272lib.h:23
signed char BYTE
Definition: m5272lib.h:20
unsigned int size_t
Definition: m5272lib.h:28
Definition: m5272lib.h:16
void rutina_int1(void)
Definición de rutinas de atención a la interrupción
Definition: XT-26.c:71
void _prep_INT3(void)
INLINE void * memset(void *buffer, int c, size_t num)
Definition: m5272lib.c:236
void rutina_tout0(void)
Rutina de atención a la interrupción de 4000 Hz.
Definition: XT-26.c:198
INLINE char inch(void)
Definition: m5272lib.c:38
void outNum(UINT base, long num, UBYTE opciones)
Definition: m5272lib.c:102