Ir ao conteúdo
  • Cadastre-se

Analise de codigo


jorgeletronico

Posts recomendados

Amigos gostaria q olhassem meu codigo e opinassem se ele funcionara,trata se de um propeller clock.Segue o codigo em basic

Define CONF_WORD = 0x3f71

Define CLOCK_FREQUENCY = 4

AllDigital

Dim cont As Byte

Dim contus As Byte

Dim contds As Byte

Dim contum As Byte

Dim contdm As Byte

Dim contuh As Byte

Dim contdh As Byte

Dim ch1 As Byte

Dim ch2 As Byte

Dim chr As Byte

Dim var As Byte

Dim mask As Byte

Dim i As Byte

Dim j As Byte

Dim var1 As Byte

Dim mask1 As Byte

TRISA.1 = 1

TRISA.0 = 0

TRISB = 0

PORTB = 0

cont = 0

contus = 0

contds = 0

contum = 0

contdm = 0

contuh = 1

contdh = 2

var = 0

var1 = 5

i = 1

j = 0

'configuração da interrupcao

'Habilita todas as interrupções não mascaradas

T1CON.TMR1CS = 0 'usar o clock interno

T1CON.T1CKPS0 = 1 'Prescaler 1:8

T1CON.T1CKPS1 = 1

TMR1H = 0x0b

TMR1L = 0xdc

T1CON.TMR1ON = 1 'habilita a contagem do TIMER1

PIE1.TMR1IE = 1 'habilita a interrupção do TIMER1

INTCON.PEIE = 1 'habilita todas as interrupções não mascaradas

Enable

loop1:

var = 0

var = contdh * 5

Call mostra(mask)

WaitMs 1

var = 0

var = contuh * 5

Call mostra(mask)

WaitMs 1

Call dois_p(mask1)

var = 0

var = contdm * 5

Call mostra(mask)

WaitMs 1

var = 0

var = contum * 5

Call mostra(mask)

WaitMs 1

Call dois_p(mask1)

var = 0

var = contds * 5

Call mostra(mask)

WaitMs 1

var = 0

var = contus * 5

Call mostra(mask)

WaitMs 1

Goto loop1

End

Proc dois_p(arg1 As Byte)

For j = 0 To 5

arg1 = LookUp(0xff, 0xc9, 0xc9, 0xff, 0xff), var1

PORTB = arg1

WaitUs 100

var1 = var1 + 1

Next j

End Proc

Proc mostra(arg As Byte)

For i = 1 To 5

arg = LookUp(0xde, 0x80, 0xfe, 0xff, 0xde, 0xbc, 0xba, 0xb6, 0xce, 0xbd, 0xbe, 0xae, 0x96, 0xb9, 0xf3, 0xeb, 0xdb, 0x80, 0xfb, 0x8d, 0xae, 0xae, 0xae, 0xb1, 0xe1, 0xd6, 0xb6, 0xb6, 0xf9, 0xbf, 0xb8, 0xb7, 0xaf, 0x9f, 0xc9, 0xb6, 0xb6, 0xb6, 0xc9, 0xcf, 0xb6, 0xb6, 0xb5, 0xc3), var

PORTB = arg

WaitUs 100

var = var + 1

Next i

End Proc

On Interrupt 'Rotina de tratamento de interrupção

Save System 'salva o contexto, use sempre

'seguem As instruções a serem executadas na interrupção

cont = cont + 1

If cont = 2 Then '1 segundo

Toggle PORTA.1

contus = contus + 1 'incrementa contador da unidade de segundo

cont = 0

Endif

If contus = 10 Then

contds = contds + 1

contus = 0

cont = 0

Endif

If contds = 6 Then

contum = contum + 1

contds = 0

cont = 0

Endif

If contum = 10 Then

contdm = contdm + 1

contum = 0

cont = 0

Endif

If contdm = 6 Then

contuh = contuh + 1

contdm = 0

cont = 0

Endif

If contuh = 10 Then

contdh = contdh + 1

contuh = 0

cont = 0

Endif

If contdh = 2 And contum = 4 Then

contuh = 0

contdh = 0

cont = 0

Endif

PIR1.TMR1IF = 0

Resume

End

Return

Link para o comentário
Compartilhar em outros sites

Jorge,

Pelo que vi em seu codigo, esta usando interrupções certo?

Porém não vi você setar o bit INTCON.GIE que habilita todas as interrupções, lembro te que se não ativares esse bit, a interrupção nunca ira ocorrer, mesmo que o bit PEIE esteja setado.

qualquer equivoco meu me corrija por favor!

um abraço.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!