Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
en C++ se haceEn C++ se que se puede.
int n = 7; /* o lo que se te ocurra */
int *arreglo = new int[n];
Naaa...normalmente el compilador optimiza el comportamiento y el "scope" de esa declaración, pero como bien decís, no está permitida en el ANSI C, y es algo como hacer:De todas formas, declarar infinitamente una variable dentro del while
for( int i=0; i < 10; i++ ) {
/* bla bla bla */
}
Esto es lo más sencillo:
const int n = 7;
Primero deberíamos saber qué compilador estás usando. Como te han dicho antes, si es un compilador moderno se debería poder activar las compatibilidades C99 o C11 que permiten la declaración de Arrays de longitud variable, que te permitirían declarar un array de esa manera, pero mucho cuidado con hacerlo dentro del bucle while(), ya que podría ocurrir un agotamiento de la memoria.El error dice: Expression must evaluate to a constant . Cómo puedo hacer que el arreglo acepte mi variable global?
/***************************************************************/
#include<16F876.h>
#fuses XT,NOWDT,NOLVP
#use delay (crystal=4MHz)
#byte SPBRG = 0x99
#byte RCSTA = 0x18
#byte TXREG = 0x19
#byte TXSTA = 0x98
#byte PIE1 = 0x8C
#byte PIR1 = 0x0C //bandera txif bit 4
#byte INTCON = 0x0B
int8 i;
void main(){
TXSTA &= ~(1<<2); //baud rate baja vel.
SPBRG = 5; //para baud rate de 9600 (en baja vel)
TXSTA &= ~(1<<4); //modo asincrono
RCSTA = 0x80; //habilita puerto tx como serial
PIE1 |= (1<<4); //HAB. INT. POR TX
TXSTA |= (1<<5); //habilita transmision
INTCON = 0xC0; //int. globales y peri.
while(1){
for(i=0; i<=9; i++){
if(PIR1 & (1<<4)){ //si txif =1
TXREG = i;
delay_ms(500);
}
}
} //while
} //main
/***************************************************************/
Eso no sirve de nada, si acaso, errores del compilador.En la segunda imagen se muestran los comentarios de la simulación de proteus.
Usando lenguaje ensamblador, seguro que te familiarizas con los registros.si, tienes razon, lo de lo innecesario que parece toda esa configuración de registros pero lo hago así a propósito para familiarizarme con la hoja de datos de los pics, ya que apenas estoy empezando el estudio de los microcontroladores.
¿Qué baudrate se supone que quieres usar?a pesar que ya me mostraste como hacer la configuración usando la directiva #use rs232... aún me queda la duda de por qué si seguí todos los pasos que muestra la hoja de datos, no me funciona.
Eso no viene en la hoja de datos porque es una directiva del compilador.estuve buscando lo de la interrupción por recepción RDA en toda la hoja de datos y no me aparece.
Polling (Wikipedia)Y si no es mucho pedir... ¿Qué es eso del polling?
// Configuración USART: (9600 Bps @ 4 MHz. 9615 Bps Reales 0.16% de error.)El baud rate que quiero usar es de 9600