Ir ao conteúdo
  • Cadastre-se

Programar pic em Assembler!


douglas.anjos

Posts recomendados

valeu Jorgeletronico e Mulder_fox.

Jorge_eletronico, me expliq melhor o q quis dizer (e nao configuração de fuses?)

Mulder_fox, está sim com dois underline, mais qual é o certo dois ou um?

Vou postar o fonte como está agora.

Felipe_eletrinic não estou corrigindo o fonte q você me passou, pois nem tenho conhecimento o bastante, só estou querendo aprender, eu até acho legal dar aqueles erros na hora de compilar, dai eu procuro onde está o 'problema' e aprendo. Não sei se realmente esse erros podem atrapalhar na hora que eu for usar o MCU mais é sempre bom gravar sem eles, estou certo ou não?

Obrigados a todos pela ajuda!!

Link para o comentário
Compartilhar em outros sites

Aqui Jorge, onde estudei fica longe de onde moro, é em outra cidade, mais por acaso encontrei com ele e ficou dele me mandar Falou, assim q conseguir postarei o mais breve. Não me esqueci, mais você vai gostar d + ficou fino, funcionou redondinho, foi uns dos projetos mais destacados da feira. É claro depois do meu q é um vaso eletrônico, da descarga assim q a pessoa sai do banheiro.

Tenho maquete montadinha, é claro que ficou pra min heheh.

Link para o comentário
Compartilhar em outros sites

#INCLUDE "P12F675.INC" ;SELECIONA MCU

__CONFIG_MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;Oscilador interno DESABILITA MASTER RESET E WATCHDOG TIMER

#DEFINE LED GPIO,2 ;DEFINE QUE LED SERA GP2

#DEFINE BOTAO GPIO,1 ;DEFINE QUE BOTAO SERA GP1

ORG 0X00 ;AQUI É O ENDEREÇO ONDE O PROGRAMA COMEÇA

GOTO INICIO ;DESVIA PARA O INICIO

INICIO:

BANKSEL OSCCAL ;SELECIONA PARA O BANCO ONDE ESTA O REGISTRADOR

CALL 3FFH ;CALIBRA OSCILADOR PARA 4MHz

MOVWF OSCCAL ;MANDA A CONFIGURAÇÃO PARA OSCCAL

BANKSEL GPIO ;SELECIONA O BANCO ONDE ESTA GPIO

CLRF GPIO ;LIMPA REG. GPIO (COLOCA TUDO EM '0')

BANKSEL ANSEL

CLRF ANSEL ;LIMPRA REG. ANSEL

BANKSEL CMCON ;SELECIONA REG. DO COMPARADOR

MOVLW 07H ;CARREGA w COM 7 EM HEXA (111 EM BINARIO)

MOVWF CMCON ;MOVE 7 PARA CMCON E DESLIGA COMPARADOR

BANKSEL TRISIO ;SELECIONA TRISIO.

MOVLW 02H ;CARREGA W COM 02 EM HEXA (01 EM BINARIO)

MOVWF TRISIO ;CONFIGURA i/o DE MODO QUE GP2 = SAIDA GP1 = ENTRADA

BCF STATUS,RP0 ;VOLTA AO BANCO 0

LOOP:

BTFSC BOTAO ; TESTA O VALOR BOTAO

GOTO LED_APAGA ; É 1 ENTÃO VAI PRA LED_APAGA

BSF LED ; É ZERO ENTÃO LIGA LED

GOTO LOOP

LED_APAGA:

BCF LED ;DESLIGA LED

GOTO LOOP ;E VOLTA AO LOOP

END ;FIM DO CODIGO

Link para o comentário
Compartilhar em outros sites

Mudei igual o exemplo q muder_fox postou, aquele error saiu mais agora apareceu esse ai:

Error[122] C:\0PIC\LED1\PIC1.ASM 3 : Illegal opcode (MCRLE_OFF_)

o que que vocês acham q pode ser, ou posso tentar gravar assim mesmo?

Olhei no datasheet, pelo q entendi parece q MCLRE é uma configuração de um pino do MCU para fazer algum reset, estou certo ou não?

Link para o comentário
Compartilhar em outros sites

Senhores....

No MPLAB vs 5.xx é possivel fazer a simulação passo a passo e observar o conteúdo dos registros, o que facilita muito o desenvolvimento em assembler, porém não traz algumas bibliotecas de definição tipo a "16F628A.inc", existindo apenas a "16F628.inc". Na versão 8.XX não consegui localizar essa facilidade (simular passo a passo). Pergunta: Existe alguma maneira ou algum outro programa para fazer essa simulação?

Atenciosamente

IAS

Link para o comentário
Compartilhar em outros sites

Valeu era isso mesmo q eu tava querendo saber.

Acho q agora de certo, mais ainda continua dando 'message[302]',

Tem algum problema?

Olha como ficou:

Building PIC1.HEX...

Compiling PIC1.ASM:

Command line: "C:\ARQUIV~1\MPLAB\MPASMWIN.EXE /aINHX8M /e+ /l+ /x- /w0 /c- /p12F675 /q C:\0PIC\LED1\PIC1.ASM"

Message[302] C:\0PIC\LED1\PIC1.ASM 14 : Register in operand not in bank 0. Ensure that bank bits are correct.

Message[302] C:\0PIC\LED1\PIC1.ASM 18 : Register in operand not in bank 0. Ensure that bank bits are correct.

Message[302] C:\0PIC\LED1\PIC1.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.

Build completed successfully.

se vocês disserem q deu certo vocês me ensinam a simular no micro primeiro,

pra depois montar o circuito.

Link para o comentário
Compartilhar em outros sites

A mensagem "Build completed successfully" (que me soa como música :D) indica que o projeto foi montado com sucesso.

A mensagem "Register in operand not in bank 0. Ensure that bank bits are correct." é um aviso para que se verifique se o banco de memória de programa onde se encontra o registrador está selecionado corretamente.

Ela aparece tanto se o banco estiver selecionado corretamente ou não.

Para simular eu utilizo o MPLAB SIM.

Nele não é possível ver LEDs acendendo e outras firulas.

Se você já criou o projeto no MPLAB SIM, vá para Simulando o projeto.

(Versão do MPLAB IDE: 8.30)

Criando o projeto

1) Clique em "Project" >> "Project Wizard">> "Avançar"

2) Na janela "Step one" que se abre, selecione o modelo do Microcontrolador e clique em "Avançar"

3) Na janela "Step two" que se abre, não mude nada, somente clique em "Avançar"

4) Na janela "Step Three", clique em "Browse" e selecione onde quer que o projeto seja salvo, dê um nome ao projeto, (o caminho completo não pode ter mais do que 32 caracteres), clique em salvar e clique em "Avançar".

5) Na janela "Step Four", selecione o arquivo .asm do seu projeto, clique em "Add" e clique em "Avançar;

6) Clique em "Concluir"

7) Clique em "Project">>"Buil All"

8) Na janela que aparece, escolha "Absolute"

Se der certo aparecerá a mensagem "Build completed successfully" .

Simulando o projeto

Clique em "Debugger">>"Select Tool">>"MPLAB SIM".

Verá que aparecerá a barra de ferramentas com botões de play, pause, etc...

Se o arquivo .asm não estiver aberto, abra ele em "File">>"Open".

Você verá uma seta verde que indica qual linha do programa será executada a seguir.

Antes de reproduzir o programa, temos que selecionar a frequência de clock em "Debugger">> "Settings..." Digite o valor no campo "Processor Frequency".

Nesta mesma janela, na aba "Animation/Real Time Updates", você pode selecionar a velocidade de execução do programa para o botão "Animate". Clique em "Enable Real Time Watch Updates" e arraste o cursor tudo para a esquerda.

Agora você já pode começar a brincar (eu adorei isto na minha primeira vez :D )

Clique no botão "Animate" da barra do simulador (duas setas verdes").

Verá cada linha sendo executada.

Aqui você pode examinar se o programa está correto.

Se a velocidade estiver muito alta, diminua em "Debugger">> "Settings...">> "Animation/Real Time Updates">> "Animate Step Times".

Você pode acompanhar o estado dos bit de cada registrador, incluindo os PORTs.

Para isto, clique em "View">> "Watch"

Selecione o SRF ou GFR que deseja e clique no botão ao lado.

Se você encolher a janela com o arquivo .asm, você poderá obervar na janela do "Watch" a mudança de estado dos bits de cada registrador.

Por enquanto é só.

Depois continuo descrevendo como estimular bits dos registradores, simulando o aperto de um botão, por exemplo.

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