Página 1 de 1

macro pic?

MensagemEnviado: 31 Ago 2009 23:36
por diogo_18sp
ola boa noite.
Ja programo pic faz um ano e tenho uma duvida oque e um macro?como ele funciona ? se possivel pudesse me mostrar um exemplo.
programa em linguagem assembler obrigado... a uso o pic 16f877a.

MensagemEnviado: 01 Set 2009 08:17
por scheleder
LIST p=12F675 ;CHIP EM USO
INCLUDE "P12F675.INC" ;INCLUE DEFINICOES DO PIC12F875
ERRORLEVEL 0,-302 ;SUPRIME ERROS DE BANO
__CONFIG 0x31C4 ;BIT DE CONFIGURACAO

;************************************************************
; MACROS
;************************************************************
; COMANDOS PARA ALTERACAO DE PAGINA DE MEMORIA
BANK0 MACRO ;MACRO PARA SELECIONAR BANCO 0
BCF STATUS,RP0
ENDM ;FIM DA MACRO BANK0
BANK1 MACRO ;MACRO PARA SELECIONAR BANCO 1
BSF STATUS,RP0
ENDM ;FIM DA MACRO BANK1
;************************************************************
; VETOR DE RESET
;************************************************************
ORG 0x00 ;END INIC DE PROCESSAMENTO
GOTO INICIO

Re: macro pic?

MensagemEnviado: 01 Set 2009 09:02
por fabim
diogo_18sp escreveu:ola boa noite.
Ja programo pic faz um ano e tenho uma duvida oque e um macro?como ele funciona ? se possivel pudesse me mostrar um exemplo.
programa em linguagem assembler obrigado... a uso o pic 16f877a.


Makros são definições para compilador que substitue uma string por diretiva ou comando.

no assembly conforme o amigo colocou

#define bank0 bcf STATUS,RP0
#define bank1 bsf STATUS,RP0

veja eu criei duas constantes, que são chamadas de makro.

Ao que o compilador enchergar a string "bank0" ou "bank1", ele preenche esta linha de programa com a diretiva passada.

um outro exemplo.

#define LED0_on bsf PORTB,7
#define LED0_off bcf PORTB,7

quando o montador encontrar a palavra "LED0_on" ele sabe que é para.
bsf portb,7
etc...

Deu uma clareada ?

Uma makro pode ser apenas uma diretiva ou uma associação de diretivas. outro exemplo.

clock macro
bsf portb,7
nop
nop
bcf portb,7
nop
nop
endm

em qualquer parte do programa que você escrever
clock;
o montador vai adicionar 6 linhas de comando, sendo

bsf portb,7
nop
nop
bcf portb,7
nop
nop

cabrito ?
não sei como se escreve capith ou cabitu ou sei lá, num so italiano

Abraços

Fabim

MensagemEnviado: 01 Set 2009 09:14
por ze
1 ano sofrendo com o asm... já tá quase na hora de aprender a programar de verdade. se não é masoquista, cogite aprender C e depois veja isto
http://www.asm51.eng.br/phpbb/viewtopic.php?t=7297
abç

MensagemEnviado: 01 Set 2009 12:12
por diogo_18sp
lellis escreveu:1 ano sofrendo com o asm... já tá quase na hora de aprender a programar de verdade. se não é masoquista, cogite aprender C e depois veja isto
http://www.asm51.eng.br/phpbb/viewtopic.php?t=7297
abç


entao caroamigo gosto muito de assembler pois como sou tecnico eletronico acho que assembler voce consegue ver a fundo o funcionamento do circuito.
entao quando colocar clock exemplo do amigo que citou acima eu chamo essa rotina que fara a execuçao das rotinas e isso mesmo?

MensagemEnviado: 01 Set 2009 12:16
por fabim
diogo_18sp escreveu:
lellis escreveu:1 ano sofrendo com o asm... já tá quase na hora de aprender a programar de verdade. se não é masoquista, cogite aprender C e depois veja isto
http://www.asm51.eng.br/phpbb/viewtopic.php?t=7297
abç


entao caroamigo gosto muito de assembler pois como sou tecnico eletronico acho que assembler voce consegue ver a fundo o funcionamento do circuito.
entao quando colocar clock exemplo do amigo que citou acima eu chamo essa rotina que fara a execuçao das rotinas e isso mesmo?


não primo, a macro,.....
é como se fosse uma tecla de atalho para escrever N comandos.
ele não chama a rotina,
Se você chamar 10X o "clock", por 10X o montador irá escrever tudo que esta dentro da definição de macro com nome CLOCK.

Abraços

MensagemEnviado: 01 Set 2009 12:24
por diogo_18sp
fabim escreveu:
diogo_18sp escreveu:
lellis escreveu:1 ano sofrendo com o asm... já tá quase na hora de aprender a programar de verdade. se não é masoquista, cogite aprender C e depois veja isto
http://www.asm51.eng.br/phpbb/viewtopic.php?t=7297
abç


entao caroamigo gosto muito de assembler pois como sou tecnico eletronico acho que assembler voce consegue ver a fundo o funcionamento do circuito.
entao quando colocar clock exemplo do amigo que citou acima eu chamo essa rotina que fara a execuçao das rotinas e isso mesmo?


não primo, a macro,.....
é como se fosse uma tecla de atalho para escrever N comandos.
ele não chama a rotina,
Se você chamar 10X o "clock", por 10X o montador irá escrever tudo que esta dentro da definição de macro com nome CLOCK.

Abraços


caro fabim agora acho que entendi a funçao da macro.obridado