Author Archives: admin

Casio Algebra FX 2.0. Códigos del teclado: Getkey

Programa para obtener los códigos del teclado de la calculadora.
Un bucle infinito lee el teclado. Si se pulsa la tecla ESC se sale del bucle.

Códigos del teclado de la ALGEBRA FX 2.0

While…WhileEnd. Se encuentran en el menú de programa ([SHIFT] [VARS]) bajo la pestaña [WHLE] (F3)
Break. Está bajo la pestaña [CTRL] (F4)

If…Then…IfEnd. Dos formas de expresarlo:

'La condición se separa por una linea
If X=47
Then Break
IfEnd

'La condición se separa por dos puntos (:)
if x≠0:Then
Locate 9,3,X
IfEnd

Locate columna, linea, algo_para_imprimir.
Se encuentra bajo la pestaña [I/O] (F5)
Columna: 1-21
Linea: 1-7

Está bajo la pestaña [LOGIC] (f5)
La comilla (‘) Está escondida. Botón [OPTN], La pestaña [SYBL] (F4) aparece tras dos [F6 (▷)]

Locate 7,1,"TECLAS"
Locate 1,3,"CODIGO:"
Locate 8,7,"ESC PARA SALIR"

While 1
Getkey→X
If X=47
Then Break
Else
if x≠0:Then
Locate 9,3,"  "
Locate 9,3,X
IfEnd
IfEnd
WhileEnd
ClrText
"TERMINADO"

Nota:
La tecla ESC tiene el código 47.

Casio Algebra FX 2.0. If…Then…Else…IfEnd

Programa que pide un número y responde si es mayor o menor que 5.

Para abrir el menú de programa:
Pulsar las teclas [SHIFT] + [VARS]

Para pedir un número:
“DAME UN NUMERO”. El texto tiene que ir entre comillas.
?→X El valor introducido se asigna a la variable X
El signo “?” está en el menú de programa en la posición de [F3]
La instrucciones If… están en la posición [F1] después de pulsar [F6 (▷)]

"DAME UN NUMERO"?→X
If X<5
Then "ES MENOR QUE 5"
Else "ES MAYOR QUE 5"
IfEnd

Función que devuelve un string en Turbo C++

#include <string.h>
#include <stdlib.h>

/*
	Función que devuelve un string con el contenido de 
	un array de unsigned char.
	Includes necesarios:
	<string.h> - para strcpy y strcat
	<stdlib.h> - para itoa
	
	Uso:
	unsigned char tmp[]; // array donde se va a guardar el string
	cprintf("Linea: %s\n\r",getStrLine(3,tmp));
	
	Funciones relacionadas con strings:
	strcpy - Para copiar
	itoa   - Convierte int a string
	strcat - concatena string
	

	Nota:
	La variable donde se va a guardar la cadena tiene que
	declararse fuera de la función y pasarse como parámetro.
	Que luego la devuelva no es necesario pero conveniente.
*/
unsigned char * getStrLine(int y, unsigned char * buffer) {
	char tmp[10]; 			// variable temporal para guardar el string
	
	strcpy(buffer,""); 		//El string se pone como cadena vacia.
	for (int i = 0; i < _w; i++) {
		itoa((int)map[i][y],tmp,10); //El unsigned char se fuerza a (int) y se convierte en string
		strcat(buffer,tmp);			 //se concatena el string
	}
	
	return buffer;
}

Lectura del teclado en Turbo C++

#include <conio.h>
#include <stdio.h>

#define KEY_ENTER 13
#define KEY_ESC 27
#define KEY_SPACE 32
#define KEY_UP 72
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_DOWN 80

int main(void) {
	int c;

	clrscr();
	cprintf("Pulsa las teclas del cursor\r\n");
	cprintf("Esc para salir\r\n");
	//getch();

	while (1) {
		c = getch();

		if (c==KEY_ESC) {
			return 0;
		}
		if (c == 0 ) {
			c = getch();
		}
		if (c == KEY_ENTER) {
			cprintf("Enter\n\r");
		} else if (c == KEY_LEFT) {
			cprintf ("LEFT\n\r");
		} else if (c == KEY_RIGHT) {
			cprintf ("RIGHT\n\r");
		} else if (c == KEY_UP) {
			cprintf ("UP\n\r");
		} else if (c == KEY_DOWN) {
			cprintf ("DOWN\n\r");
		} else if (c == KEY_SPACE) {
			cprintf ("Space\n\r");
		} else {
			cprintf("%d\n\r",c);
		}
	}

	return 0;

}

Jugando con el MSP432. LMP0 e interrupciones

El programa consiste en enviar un pulso por un pin al pulsar el botón sw1 del Launchpad. El MCU permanece en LPM0 todo el tiempo hasta que se pulsa el interruptor. El bucle principal envía el pulso y regresa a LPM0.

En el programa se compara la utilización de LPM0 frente a un bucle infinito. También se muestran dos maneras de entrar en LPM0

MAP_PCM_gotoLPM0();
MAP_PCM_setPowerState(PCM_LPM0_DCDC_VCORE0);

La manera de salir de LPM0 al ejecutar la interrupción es mediante la instrucción al inicio del programa:

MAP_Interrupt_disableSleepOnIsrExit();

Algunos valores de consumo:
Sin entrar en LPM0 1.88 mA
MAP_PCM_gotoLPM0() 1.70 mA
MAP_PCM_setPowerState(PCM_LPM0_DCDC_VCORE0) 1.65 mA

Continue reading