Ir ao conteúdo

Tradução ASM


pablors

Posts recomendados

Postado

Ola amigos,

Será que alguém consegue traduzir esse codigo ASM pra min???

Não precisa traduzir tudo , Basta um pouco para eu entender como me comunicar com o SAA1057.

Não sei programar em ASM, Só sei en Basic.

Um Abraço

Pablo.

Click no mostrar

Zapojeni: DAT 3 (OUT)

; DLEN 2 (OUT) TUNED 18 (OUT)

; CLB 1 (OUT) jumpery 6-13 (IN)

LIST P=PIC16F84

DAT EQU 4

DLEN EQU 3

CLB EQU 2

TUNED EQU 1

PORTA EQU 5

PORTB EQU 6

COUNT EQU 0Ch

WORKA EQU 0Dh

WORKB EQU 0Eh

CNT1 EQU 0Fh

CNT2 EQU 10h

CNT3 EQU 11h

TRISA EQU 85h

STATUS EQU 3

OPT EQU 81h

W EQU 0

f EQU 1

C EQU 0

Z EQU 2

CLRWDT

BCF PORTA,TUNED

BSF STATUS,5

CLRF TRISA

MOVLW B'01111111'

MOVWF OPT ;pull-ups and WDT on

BCF STATUS,5

START CLRWDT

CLRF PORTA

CLRF COUNT

MOVLW B'00100000'

MOVWF WORKA

MOVLW B'00111010'

MOVWF WORKB

SOUCET CLRWDT

MOVF PORTB,W

BCF STATUS,C

ADDWF WORKB,f

BTFSC STATUS,C

INCF WORKA

INCF COUNT

MOVLW 0Ah

SUBWF COUNT,W

BTFSS STATUS,Z

GOTO SOUCET

MOVLW 0xFF

MOVWF COUNT

ZNOVA CLRWDT

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS ;14 PULZU NA CLB

BCF PORTA,DAT

BSF PORTA,DLEN ;DLEN 1

CALL PULS ;0

BSF PORTA,DAT

CALL PULS ;1

CALL PULS ;2

BCF PORTA,DAT

CALL PULS ;3

BSF PORTA,DAT

CALL PULS ;4

CALL PULS ;5

CALL PULS ;6

BCF PORTA,DAT

CALL PULS ;7

BSF PORTA,DAT

CALL PULS ;8

BTFSS COUNT,7

BSF PORTA,DAT

BTFSC COUNT,7

BCF PORTA,DAT

CALL PULS ;9

BCF PORTA,DAT

CALL PULS ;10

CALL PULS ;11

CALL PULS ;12

CALL PULS ;13

BSF PORTA,DAT

CALL PULS ;14

BCF PORTA,DAT

CALL PULS ;15

BSF PORTA,DAT

CALL PULS ;16

BCF PORTA,DAT

BCF PORTA,DLEN

CALL PULS

NOP

NOP

NOP

BSF PORTA,DLEN

CALL PULS ;0

CALL PULS ;1

CALL PULS ;2

BSF PORTA,DAT

CALL PULS ;3

BCF PORTA,DAT

CALL PULS ;4

BTFSS WORKA,3

BCF PORTA,DAT

BTFSC WORKA,3

BSF PORTA,DAT

CALL PULS ;5

BTFSS WORKA,2

BCF PORTA,DAT

BTFSC WORKA,2

BSF PORTA,DAT

CALL PULS ;6

BTFSS WORKA,1

BCF PORTA,DAT

BTFSC WORKA,1

BSF PORTA,DAT

CALL PULS ;7

BTFSS WORKA,0

BCF PORTA,DAT

BTFSC WORKA,0

BSF PORTA,DAT

CALL PULS ;8

BTFSS WORKB,7

BCF PORTA,DAT

BTFSC WORKB,7

BSF PORTA,DAT

CALL PULS ;9

BTFSS WORKB,6

BCF PORTA,DAT

BTFSC WORKB,6

BSF PORTA,DAT

CALL PULS ;10

BTFSS WORKB,5

BCF PORTA,DAT

BTFSC WORKB,5

BSF PORTA,DAT

CALL PULS ;11

BTFSS WORKB,4

BCF PORTA,DAT

BTFSC WORKB,4

BSF PORTA,DAT

CALL PULS ;12

BTFSS WORKB,3

BCF PORTA,DAT

BTFSC WORKB,3

BSF PORTA,DAT

CALL PULS ;13

BTFSS WORKB,2

BCF PORTA,DAT

BTFSC WORKB,2

BSF PORTA,DAT

CALL PULS ;14

BTFSS WORKB,1

BCF PORTA,DAT

BTFSC WORKB,1

BSF PORTA,DAT

CALL PULS ;15

BCF PORTA,DAT

CALL PULS ;16

BCF PORTA,DLEN

CALL PULS

INCF COUNT

NOP

NOP

NOP

BTFSS COUNT,3

GOTO ZNOVA

BSF PORTA,DLEN ;DLEN 1

CALL PULS ;0

BSF PORTA,DAT

CALL PULS ;1

CALL PULS ;2

BCF PORTA,DAT

CALL PULS ;3

CALL PULS ;4

CALL PULS ;5

CALL PULS ;6

BSF PORTA,DAT

CALL PULS ;7

CALL PULS ;8

CALL PULS ;9

BCF PORTA,DAT

CALL PULS ;10

CALL PULS ;11

CALL PULS ;12

CALL PULS ;13

BSF PORTA,DAT

CALL PULS ;14

BCF PORTA,DAT

CALL PULS ;15

BSF PORTA,DAT

CALL PULS ;16

BCF PORTA,DAT

BCF PORTA,DLEN

CALL PULS

NOP

NOP

NOP

BSF PORTA,DLEN

CALL PULS ;0

CALL PULS ;1

CALL PULS ;2

BSF PORTA,DAT

CALL PULS ;3

BCF PORTA,DAT

CALL PULS ;4

BTFSS WORKA,3

BCF PORTA,DAT

BTFSC WORKA,3

BSF PORTA,DAT

CALL PULS ;5

BTFSS WORKA,2

BCF PORTA,DAT

BTFSC WORKA,2

BSF PORTA,DAT

CALL PULS ;6

BTFSS WORKA,1

BCF PORTA,DAT

BTFSC WORKA,1

BSF PORTA,DAT

CALL PULS ;7

BTFSS WORKA,0

BCF PORTA,DAT

BTFSC WORKA,0

BSF PORTA,DAT

CALL PULS ;8

BTFSS WORKB,7

BCF PORTA,DAT

BTFSC WORKB,7

BSF PORTA,DAT

CALL PULS ;9

BTFSS WORKB,6

BCF PORTA,DAT

BTFSC WORKB,6

BSF PORTA,DAT

CALL PULS ;10

BTFSS WORKB,5

BCF PORTA,DAT

BTFSC WORKB,5

BSF PORTA,DAT

CALL PULS ;11

BTFSS WORKB,4

BCF PORTA,DAT

BTFSC WORKB,4

BSF PORTA,DAT

CALL PULS ;12

BTFSS WORKB,3

BCF PORTA,DAT

BTFSC WORKB,3

BSF PORTA,DAT

CALL PULS ;13

BTFSS WORKB,2

BCF PORTA,DAT

BTFSC WORKB,2

BSF PORTA,DAT

CALL PULS ;14

BTFSS WORKB,1

BCF PORTA,DAT

BTFSC WORKB,1

BSF PORTA,DAT

CALL PULS ;15

BCF PORTA,DAT

CALL PULS ;16

BCF PORTA,DLEN

CALL PULS

BSF PORTA,TUNED

CLRF CNT1

CLRF CNT2

CLRF CNT3

CEKANI CLRWDT

INCF CNT1

BTFSS STATUS,Z

GOTO CEKANI2

INCF CNT2

BTFSC STATUS,Z

INCF CNT3

CEKANI2 BTFSS CNT3,5 ;CCCCCCCAAA 30 MIN.

GOTO CEKANI

MOVLW 0xFF

MOVWF COUNT

REPEAT CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS

CALL PULS ;14 PULZU NA CLB

BCF PORTA,DAT

BSF PORTA,DLEN ;DLEN 1

CALL PULS ;0

BSF PORTA,DAT

CALL PULS ;1

CALL PULS ;2

BCF PORTA,DAT

CALL PULS ;3

BCF PORTA,DAT

CALL PULS ;4

CALL PULS ;5

CALL PULS ;6

BSF PORTA,DAT

CALL PULS ;7

BSF PORTA,DAT

CALL PULS ;8

BTFSS COUNT,7

BSF PORTA,DAT

BTFSC COUNT,7

BCF PORTA,DAT

CALL PULS ;9

BCF PORTA,DAT

CALL PULS ;10

CALL PULS ;11

CALL PULS ;12

CALL PULS ;13

BSF PORTA,DAT

CALL PULS ;14

BCF PORTA,DAT

CALL PULS ;15

BSF PORTA,DAT

CALL PULS ;16

BCF PORTA,DAT

BCF PORTA,DLEN

CALL PULS

NOP

NOP

NOP

BSF PORTA,DLEN

CALL PULS ;0

CALL PULS ;1

CALL PULS ;2

BSF PORTA,DAT

CALL PULS ;3

BCF PORTA,DAT

CALL PULS ;4

BTFSS WORKA,3

BCF PORTA,DAT

BTFSC WORKA,3

BSF PORTA,DAT

CALL PULS ;5

BTFSS WORKA,2

BCF PORTA,DAT

BTFSC WORKA,2

BSF PORTA,DAT

CALL PULS ;6

BTFSS WORKA,1

BCF PORTA,DAT

BTFSC WORKA,1

BSF PORTA,DAT

CALL PULS ;7

BTFSS WORKA,0

BCF PORTA,DAT

BTFSC WORKA,0

BSF PORTA,DAT

CALL PULS ;8

BTFSS WORKB,7

BCF PORTA,DAT

BTFSC WORKB,7

BSF PORTA,DAT

CALL PULS ;9

BTFSS WORKB,6

BCF PORTA,DAT

BTFSC WORKB,6

BSF PORTA,DAT

CALL PULS ;10

BTFSS WORKB,5

BCF PORTA,DAT

BTFSC WORKB,5

BSF PORTA,DAT

CALL PULS ;11

BTFSS WORKB,4

BCF PORTA,DAT

BTFSC WORKB,4

BSF PORTA,DAT

CALL PULS ;12

BTFSS WORKB,3

BCF PORTA,DAT

BTFSC WORKB,3

BSF PORTA,DAT

CALL PULS ;13

BTFSS WORKB,2

BCF PORTA,DAT

BTFSC WORKB,2

BSF PORTA,DAT

CALL PULS ;14

BTFSS WORKB,1

BCF PORTA,DAT

BTFSC WORKB,1

BSF PORTA,DAT

CALL PULS ;15

BCF PORTA,DAT

CALL PULS ;16

BCF PORTA,DLEN

CALL PULS

NOP

NOP

NOP

INCF COUNT

BTFSS COUNT,3

GOTO REPEAT

CLRF CNT1

CLRF CNT2

CLRF CNT3

GOTO CEKANI

PULS BSF PORTA,CLB

BCF PORTA,CLB

RETURN

END

CONFIG B'11111111111111'

  • Membro VIP
Postado

Interpretar um código assembly é uma tarefa muito difícil até para quem o criou e depende do esquema elétrico. Sem os comentários nas linhas então, fica praticamente impossível.

Postado

Mas tipo,

o que quer dizer aqueles codigos tipo "BCF" "CALL PULS"

Na verdade o que eu preciso é me comunicar com o PLL SAA1057

E nesse Fonte ASM ten isso.

Um Abraço

Pablo.

Postado

A instrução BCF reseta o bit.

Por exemplo, BCF STATUS,5, reseta o bit 5 do registrador STATUS

A instrução CALL PULS desvia o programa para o ponto onde é encontrada a

palavra PULS, lá no fim do programa. Após o RETURN volta para próxima instrução após CALL.

O que está após ; é comentário.

Veja aqui o set de instruções:

http://ww1.microchip.com/downloads/en/DeviceDoc/31029a.pdf

Postado

Ola amigo, dei uma lida nessas intruçoes

sao muito boas, ja deu para ter uma ideia dos comandos.

Mais uma.

Será que alguem sabe como se comunicar com o SAA1057,

Postado

Olá SOSCHIP,

Ja vi que você intente bem dessas coisas

Mas eu é que sou meio Burro , ja li tudo varias vezes e ainda não consigui entender.

Se não for muito encomodo será que você pode me ajudar mais a Fundo

Preciso saber para que serve as entradas

DATA

DELEN

CLB

Aonde entra o sinal,

Pois preciso enviar atráves de um PIC Para o SAA1057 a frequencia a ser Sintetizada

esse codigo ASM que postei la en cima , conten éssas informaçoes mas eu não consigo entender nada de ASM.

sei apenas en BASIC.

Obrigado Pela Paciencia

Um Abraço

Pablo.

  • Membro VIP
Postado

Sinto muito, mas por falta de tempo só posso apontar o caminho, além do mais não programo PIC, só 8051 e AVR.

Sugiro que crie o esquema e peça ajuda aos amigos que programam PIC. Mas o primeiro passo deve ser seu desenhando e postando o esquema aqui... OK.

Postado

certo amigo,

Vou postar o esquema aqui,

Obrigado pela sua atenção

Mas pelo codigo ASM que postei la en cima não ten como saber o que o PIC esta enviando para o SAA pelas portas, PORTA4 , PORTB6 , PORTB4 e PORTB5

Um Abraço

Postado

pelo PORTB não é, apenas o PORTA está configurado como saida. É um código bem confuso. Você sabe em que Assembler ele foi escrito? esse código tem uma estetica bem 'diferente' da que eu uso. Mas deu para entender, ou melhor, eu acho que:

RA2 está enviando um tipo de sinal de clock...

RA4 está enviando dados, mas são sempre os mesmo(os dados enviados não se alteram).

De modo geral esse programa faz o seguinte, eu vou analisar esse codigo e ir escrevendo ok:


START
CLRWDT
CLRF PORTA
CLRF COUNT
MOVLW B'00100000'
MOVWF WORKA
MOVLW B'00111010'
MOVWF WORKB

no inicio limpa o WDT, o PORTA e um registro da RAM chamado COUNT, e move o valor 0x20 para outro registro da RAM (workA) e o valor 0x3A para outro registro.


SOUCET
CLRWDT
MOVF PORTB,W
BCF STATUS,C
ADDWF WORKB,f
BTFSC STATUS,C
INCF WORKA
INCF COUNT
MOVLW 0Ah
SUBWF COUNT,W
BTFSS STATUS,Z
GOTO SOUCET
MOVLW 0xFF
MOVWF COUNT

Essa parte é super confusa, o valor do PORTB é copiado para W e depois somado ao valor de WorkB, depois testa se houve CARRY, se houve incrementa o registro WORKA e o registro COUNT. Mas se NÃO house CARRY então ele incrementa apenas o COUNT. OK!!!1 entendi , o regsitro WORK é um registro de 16 bits, onde WORKA é o MSB (a parte alta).

Depois o valor 0x0A é subtraido do registro COUNT e o resultado fica em W. Então um novo teste ocorre: A subtração deu zero? se não ele retorna ao inicio deste algoritmo (SOUCET). Mas se deu Zero, o valor do registro COUNT ficará igual a 0xFF.


ZNOVA
CLRWDT
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS
CALL PULS ;14 PULZU NA CLB
BCF PORTA,DAT
BSF PORTA,DLEN ;DLEN 1
CALL PULS ;0
BSF PORTA,DAT
CALL PULS ;1
CALL PULS ;2
BCF PORTA,DAT
CALL PULS ;3
BSF PORTA,DAT
CALL PULS ;4
CALL PULS ;5
CALL PULS ;6
BCF PORTA,DAT
CALL PULS ;7
BSF PORTA,DAT
CALL PULS ;8
BTFSS COUNT,7
BSF PORTA,DAT
BTFSC COUNT,7
BCF PORTA,DAT
CALL PULS ;9
BCF PORTA,DAT
CALL PULS ;10
CALL PULS ;11
CALL PULS ;12
CALL PULS ;13
BSF PORTA,DAT
CALL PULS ;14
BCF PORTA,DAT
CALL PULS ;15
BSF PORTA,DAT
CALL PULS ;16
BCF PORTA,DAT
BCF PORTA,DLEN
CALL PULS
NOP
NOP
NOP

Esse algoritmo começa dando 14 'pulsos' no pino RA2 (teriamos que saber a frenquencia de clock para saber a duração dos pulsos).

Depois limpa o RA4 e Seta o RA3. Depois disso ele entra numa sequencia de Setar RA4, pulsar RA2, e limpar RA4, o mais estranho é que não ocorre numa frequencia lógica (pode ser um protocolo de comunicação que eu não conheço, alias acredito que seja). Termina limpando RA3 (talvez esse seja o bit de Enable 'DLENnable", resta saber o que signifca o DL...)

Mas por hoje chega... continuo outro dia... hehehe post em 'capitulos' :lol::lol:.

  • 4 semanas depois...
Postado

o código tem uma estética muito similar ao do Piklab (eu uso no ubuntu linux) mas não é totalmente compativel com o piklab... deve ser de um assembler novo....:lol: ou de uma versão mais antiga do piklab.

o mais estranho é a inexistencia de fusiveis de configuração...

************************

detalhe: eu rodo o MPLAB no linux, através do WINE... roda normalzinho...:lol:

Postado

Cacio, eu tive graves problemas com o PIKLAB

Fiz o programa em C e quando compilava, ele gerava um .hex que não era compatível com o PIC! O mesmo código feito no MIKROC funciona! E usando as mesmas bibliotecas!

Postado

existe um detalhe importante sobre o PIKLAB, ele por padrão gera o Hexadecimal no formato INH8X (tambem pode ser marcado como INHX16), que é usado pelos PIC da familia alta.

Tente mudar o formato para INHX8M (com M no lugar do X), esse é o formato para os pic da familia baixa e media.

va em settings>configure piklab. na ultima guia da esquerda (standalone file) tem uma caixa de seleção onde é possivel escolher o formato do hexadecimal

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!