Array de Inteiros no Keil

Projetos, dúvidas sobre microcontroladores 8051 e AVR

Array de Inteiros no Keil

Mensagempor mateus.martignon » Seg Mar 08, 2010 4:54 pm

Ola pessoal,
to com um problema muito estranho ao utilizar vetor de inteiros.
Ao tentar utilizar um vetor do tamanho que seja, meu programa simplesmente não fucniona.
exemplo:
-----------------------------------------------------------------------------------------------
#include <REG8253.H>

void main(void)
{
int teste[3]={1,2,3};

P2=teste[0];

while(1)
{
}

}
-----------------------------------------------------------------------------------------------
Mais simples que o programa acima impossível e mesmo assim ele não roda. Se eu fizer de acordo com o segundo exemplo ele funciona perfeitamente:
-----------------------------------------------------------------------------------------------
#include <REG8253.H>

void main(void)
{
int teste=1;

P2=teste;

while(1)
{
}

}
-----------------------------------------------------------------------------------------------

Isso é mto estranho, porque quando utilizava o CCS para trabalhar com PIC nunca tive esse tipo de encrenca. Estou utilizando no caso o compilador Keil uVision3 e gravando em um AT89S8253.
Alguém faz idéia do que pode estar errado.

O mais estranho disso tudo é que o programa roda perfeitamente na simulação do Proteus. Até aí tudo bem...poderia ser o chip estragado mesmo, mas não pode ser porque ele roda outros programas se eu não utilizar os vetores. Basta eu declarar um array que o programa para de funcionar.
Mateus Martignon S. Mendes
Engenheiro Elétrico/Eletrônico
(67) 9287-6169
mateus.martignon@gmail.com
mateus.martignon
 
Mensagens: 9
Data de registro: Sex Fev 26, 2010 7:12 pm

Re: Array de Inteiros no Keil

Mensagempor mateus.martignon » Seg Mar 08, 2010 4:56 pm

Pessoal fiz alguns teste e vo postar aqui mais algumas informações sobre o problema..
Troquei o microcontrolador e a situação continua a mesma.
Tentei fazer uma modificação no programa e me parece que o problema é na inicialização do vetor pois implementando o programa abaixo, o mesmo funciona sem problemas.
-------------------------------------------------------
#include <REG8253.H>

void main(void)
{
int teste[3];

teste[0]=1;

P2=teste[0];

while(1)
{
}

}
-------------------------------------------------------

Agora o que eu não entendo é o porque disso. Sempre declarei um vetor já inicializando ele com valores e nunca tive problema, inclusive funciona na simulação do Proteus. Agora porque esta merd* nao funciona quando gravo no chip fisico??
Mateus Martignon S. Mendes
Engenheiro Elétrico/Eletrônico
(67) 9287-6169
mateus.martignon@gmail.com
mateus.martignon
 
Mensagens: 9
Data de registro: Sex Fev 26, 2010 7:12 pm

Re: Array de Inteiros no Keil

Mensagempor Fabio Tutor » Seg Mar 08, 2010 10:20 pm

Experimente colocar essa matriz como global.
Fabio Perkowitsch Mulero
Treinamentos Técnicos

http://www.microgenios.com.br
http://www.portalwebaula.com.br
http://www.microgenios.com

Email: fabio.tutor@microgenios.com.br

Fone|Fax: (11) 5084-4518 | (11) 3384-5598
Fabio Tutor
 
Mensagens: 40
Data de registro: Qua Dez 02, 2009 3:22 pm

Re: Array de Inteiros no Keil

Mensagempor gabrielrpaz » Ter Mar 09, 2010 10:34 am

Olá Mateus.

Que versão do Keil você está utilizando?

Aqui na empresa utlilizamos a o uVision 3 V3.33 e não ocorre este problema, fiz alguns testes aqui ele aceita perfeitamente inicialização de variável local (vetor ou matriz) sem nenhum problema. Acredito que você esteja utilizando uma versão muito antiga.

O microcontrolador usado não importa a arquitetura básica 8051 é sempre a mesma.

Lembre-se de declarar a variável sempre como a primeira coisa dentro da função.

Outro detalhe, para entender melhor o erro entre no site da Keil e na busca coloque o código do erro, por exemplo C243, aparecerá o descritivo do mesmo.

Um abraço.

Gabriel
Gabriel Rosa Paz
Microgenios - www.microgenios.com.br
gabrielrpaz
 
Mensagens: 34
Data de registro: Sex Nov 27, 2009 4:52 pm
Localização: Rua Eça de Queiroz, 704 - cjto. 1

Re: Array de Inteiros no Keil

Mensagempor mateus.martignon » Ter Mar 09, 2010 11:52 am

Oi Gabriel,

Estou utilizando o uVison3 V3.6.
O mais estranho como comentei é que o código gerado roda perfeitamente na simulação do Proteus. Como pode ser um negócio desse, rsrs. roda no simulador e no chip físico não.
O código compila sem erros. e ao terminar de gravar o chip o mesmo fica num estado parecido com o reset,
todas IO´s ficam em nível alto. É como se travasse o uC.

Segue abaixo a reprodução do arquivo .lst gerado

-----------------------------------------------------------------------------------------------------------------------------
C51 COMPILER V8.12 POST 03/08/2010 23:54:33 PAGE 1


C51 COMPILER V8.12, COMPILATION OF MODULE POST
OBJECT MODULE PLACED IN post.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE post.c BROWSE DEBUG OBJECTEXTEND CODE

line level source

1 #include <reg8253.h>
2
3 void main(void)
4 {
5 1 int a[3]={1,2,3};
6 1
7 1 while(1)
8 1 {
9 2 P2=a[0];
10 2 }
11 1
12 1
13 1 }
C51 COMPILER V8.12 POST 03/08/2010 23:54:33 PAGE 2

ASSEMBLY LISTING OF GENERATED OBJECT CODE


; FUNCTION main (BEGIN)
; SOURCE LINE # 3
; SOURCE LINE # 4
; SOURCE LINE # 5
0000 7800 R MOV R0,#LOW a
0002 7C00 R MOV R4,#HIGH a
0004 7D00 MOV R5,#00H
0006 7BFF MOV R3,#0FFH
0008 7A00 R MOV R2,#HIGH _?ix1000
000A 7900 R MOV R1,#LOW _?ix1000
000C 7E00 MOV R6,#00H
000E 7F06 MOV R7,#06H
0010 120000 E LCALL ?C?COPY
0013 ?C0001:
; SOURCE LINE # 7
; SOURCE LINE # 8
; SOURCE LINE # 9
0013 8500A0 R MOV P2,a+07H
; SOURCE LINE # 10
0016 80FB SJMP ?C0001
; FUNCTION main (END)



MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 24 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

-----------------------------------------------------------------------------------------------------------------------------
Mateus Martignon S. Mendes
Engenheiro Elétrico/Eletrônico
(67) 9287-6169
mateus.martignon@gmail.com
mateus.martignon
 
Mensagens: 9
Data de registro: Sex Fev 26, 2010 7:12 pm

Re: Array de Inteiros no Keil

Mensagempor mateus.martignon » Qui Mar 11, 2010 11:49 am

Gabriel,

Gerei 05 arquivo .hex a partir do meu compilador, será que tu poderia fazer a enorme gentileza de testa-los pra mim. Caso eles não funcionem terei certeza que o problema é com meu compilador. Caso eles funcionem o problema é com meu gravador (acho dificil). Mas se for prometo que compro um ae da microgenios. (rsrsr)

Ou tu pode também me enviar o .hex que voce gerou para que eu possa testar aqui.

Segue o link com os aqruivos .hex , projetos do keil além do esquematico que utilizei.

http://uploaddearquivos.com.br/download/Testes.rar

Mas seria necessáiro grava-los no chip , pois no simulador aqui também funcionionou perfeitamente.
Se puder fazer essa gentileza ficaria muito agradecido.
Mateus Martignon S. Mendes
Engenheiro Elétrico/Eletrônico
(67) 9287-6169
mateus.martignon@gmail.com
mateus.martignon
 
Mensagens: 9
Data de registro: Sex Fev 26, 2010 7:12 pm


Retornar para 8051 e AVR

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante

cron