Ir ao conteúdo
  • Cadastre-se

Programação e uso do Stack


rafael.luc

Posts recomendados

Eu uso o PIC 16F que tem 8 níveis de 14 bits no stack apenas, ja me deparei stack overflow e tive que diminuir a quantidade de sub rotinas que no meu caso era causado por GOTO (eu uso basic).

Hoje monitorei o uso e estou usando 6 níveis, tem um programa principal e mais uma interrupção. O programa ao iniciar usa 3 posições ao entrar na interrupção mais 2 e mais 1 ao final por um deslocamento de bits, depois que saio da interrupção ainda tenho 4 posições para usar?

Também gostaria de discutir o que se deve ser evitado em programação para não ter stack overflow ou seja passar de 8 posições, GOTO não seria algo normal em ASM? Porque esse problema?

Link para o comentário
Compartilhar em outros sites

Fiz algumas simulações, so o fato de eu usar 1 delay já implica em 3 posições do Stack, mas enfim se nao forem ao mesmo tempo notei que não tem problema.

Aqui um exemplo de Debounc

O codico abaixo teve Stack overflow, mas essa nova versão do PSI, mostra o erro, coisa que o antigo não fazia.

loop:
If s_1 Then
WaitMs 1
contador = contador + 1
Gosub botao_1
Endif

If s_2 Then
contador = contador - 1
Gosub botao_2
Endif
Goto loop
End

botao_1:
If s_1 = 0 Then
Goto loop
Else
Goto botao_1
Endif

botao_2:
If s_2 = 0 Then
Goto loop
Else
Goto botao_2
Endif

Erro:

Line 17: Gosub call to a label with an incorrect scope: botao_2

Line 24: Goto branch to a label with an incorrect scope: loop

Line 31: Goto branch to a label with an incorrect scope: loop

Esse funciona perfeitamente


loop:
If s_1 Then
WaitMs 1
contador = contador + 1
Gosub botao_1
Endif

If s_2 Then
contador = contador - 1
Gosub botao_2
Endif
Goto loop
End

botao_1:
If s_1 = 0 Then
Return
Else
Goto botao_1
Endif

botao_2:
If s_2 = 0 Then
Return
Else
Goto botao_2
Endif

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!