Ir ao conteúdo

Posts recomendados

Postado

Preciso usar uma matriz de 10x10 em CCS C Compiler, mas na hora de executar o Compilador está pedindo + memória !  

Alguém sabe como resolver isso ? 

Meu código ficou da seguinte forma abaixo: 

#include <16F877A.h>
#include <stdio.h>
#include <stdlib.h>
#use delay(clock = 20MHz)
#use fast_io(b)

unsigned int8 a, b, c, d, e;

int *mat[10][10] = {    {0, 16, 32, 48, 64, 80, 96, 112, 128, 144}
                        {1, 17, 33, 49, 65, 81, 97, 113, 129, 145}
                        {2, 18, 34, 50, 66, 82, 98, 114, 130, 146}
                        {3, 19, 35, 51, 67, 83, 99, 115, 131, 147}
                        {4, 20, 36, 52, 68, 84, 100, 116, 132, 148}
                        {5, 21, 37, 53, 69, 85, 101, 117, 133, 149}
                        {6, 22, 38, 54, 70, 86, 102, 118, 134, 150}
                        {7, 23, 39, 55, 71, 87, 103, 119, 135, 151}
                        {8, 24, 40, 56, 72, 88, 104, 120, 136, 152}
                        /*{9, 25, 41, 57, 73, 89, 105, 121, 137, 153, 169}
                        };*/

void main(void){
       
   
   while(TRUE){
                 
      
   }
}

 

esquemático_modulo_ADS1256.PNG

esquemático_modulo_ADS1256.PNG

Question_1.7z Question_1.7z

  • Membro VIP
Postado

int é 16 bits ou seja, cada dado ocupa 2 bytes. Teste com char. Outras coisas: está colocando a matriz na pobre ram do mc. Não sei o que vai fazer com ela na ram mas caso seja apenas algo como tabela se cossenos, coloque na flash. Consulte a sintaxe no help do seu compilador. Geralmente é algo como

const char mat[10][10] = { ...

ou

flash char mat[10][10] = { ...

Por fim, tem melhor opção pra compilador pic p.ex.

https://embarcados.com.br/mplab-xpress/

 

 Olá amigo. Se ver esta menção a dica que dou é: crie um novo tópico com suas inquietações específicas e especificadas com fotos, esquemas, desenhos e etc. Há chance maior de ser ajudado ok?

21 horas atrás, SILVIO ALENCAR disse:

gostaria de conversar com pessoas com experiencia

 

  • Solução
Postado

@1hsouza1

2 horas atrás, 1hsouza1 disse:

Preciso usar uma matriz de 10x10 em CCS C Compiler, mas na hora de executar o Compilador está pedindo + memória !

Pelo o que eu pesquisei é isso mesmo, você declarou uma vetor de 10x10 de ponteiros.

2 horas atrás, 1hsouza1 disse:

int *mat[10][10]

E isso excederia a quantidade máxima de memória do controlador. faça as contas 10*10*8=800 Bytes (cada ponteiro geralmente tem 8 bytes em c) e isso excede a quantidade máxima de memória do controlador,

que é de apenas 368 bytes.

 

Uma maneira de contornar isso seria declarando como constante para os valores da matriz serem escritos na memória flash do mc ao invés da memória RAM.

em C seria assim

 #include <16F877A.h>
#include <stdio.h>
#include <stdlib.h>
#use delay(clock = 20MHz)
#use fast_io(b)

unsigned int8 a, b, c, d, e;

const unsigned char mat[10][10] = {
    {0, 16, 32, 48, 64, 80, 96, 112, 128, 144},
    {1, 17, 33, 49, 65, 81, 97, 113, 129, 145},
    {2, 18, 34, 50, 66, 82, 98, 114, 130, 146},
    {3, 19, 35, 51, 67, 83, 99, 115, 131, 147},
    {4, 20, 36, 52, 68, 84, 100, 116, 132, 148},
    {5, 21, 37, 53, 69, 85, 101, 117, 133, 149},
    {6, 22, 38, 54, 70, 86, 102, 118, 134, 150},
    {7, 23, 39, 55, 71, 87, 103, 119, 135, 151},
    {8, 24, 40, 56, 72, 88, 104, 120, 136, 152},
    {9, 25, 41, 57, 73, 89, 105, 121, 137, 153}
};

void main(void){
       
   
   while(TRUE){
                 
      
   }
} 

Exemplo online!

Mas isso depende do compilador, Verifique na documentação qual a palavra correta para declarar constantes.

Postado

@aphawk segue abaixo a resolução:

#include <16F877A.h>

#include <math.h>

#use delay(clock = 20M)

#define size 10

#include <lcd.c>



const unsigned char matriz[size][size] = {

    {0, 16, 32, 48, 64, 80, 96, 112, 128, 144},

    {1, 17, 33, 49, 65, 81, 97, 113, 129, 145},

    {2, 18, 34, 50, 66, 82, 98, 114, 130, 146},

    {3, 19, 35, 51, 67, 83, 99, 115, 131, 147},

    {4, 20, 36, 52, 68, 84, 100, 116, 132, 148},

    {5, 21, 37, 53, 69, 85, 101, 117, 133, 149},

    {6, 22, 38, 54, 70, 86, 102, 118, 134, 150},

    {7, 23, 39, 55, 71, 87, 103, 119, 135, 151},

    {8, 24, 40, 56, 72, 88, 104, 120, 136, 152},

    {9, 25, 41, 57, 73, 89, 105, 121, 137, 153}   

};



int a, b, c, d, e, f, g, decimal;

unsigned int8 aux, dezena, unidade;



void main(void){

   

    for(int i = 0; i < size; i++){

      for(int j = 0; j < size; j++){

         output_c(matriz[i][j]);

         delay_ms(100);

      }

    }

    delay_ms(500);

    

    lcd_init();

    

   while(TRUE){      

      

      a = input(PIN_B0);

      b = input(PIN_B1);

      c = input(PIN_B2);

      d = input(PIN_B3);

      e = input(PIN_B4);

      f = input(PIN_B5);

      g = input(PIN_B6);

      

      decimal = (a<<6)|(b<<5)|(c<<4)|(d<<3)|(e<<2)|(f<<1)|(g<<0);

      

      printf(lcd_putc,"\fBINARIO = %u%u%u%u%u%u%u \nDECIMAL = %u"a, b, c, d, e, f, g, decimal);

      delay_ms(100);

      

      aux = decimal / 10;

      dezena = (int)floor(aux);

      

      aux = decimal - (10 * dezena);

      unidade = (int)floor(aux);

      

      output_c(matriz[dezena][unidade]);

      delay_ms(100);

      

   }



}

 

 

2.gif

"Eu sei daria para usar multiplexador ou um vetor com 10 valores e outra forma, mas o meu objetivo era outro método porque na web nunca encontrei resoluções com matrizes, então resolvi dessa forma para compartilhar conhecimento."

Talvez o interessados futuramente possa aplicar ou usar em algo bem útil.

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...