Ir ao conteúdo
  • Cadastre-se
Welington Giovani

Microprocessadores em assembly

Recommended Posts

pessoal, estou tendo dificuldades em efetuar as seguintes operações  utilizando o codigo abaixo, por favor me ajudem

 

a.) alterar o programa para acionamento pela porta.3 e acionando as saidas
portb.0 e portb.7

 

b.) alterar o programa para que se use duas entradas porta.1 e porta.2 e
ao se acionar a entrada 1 a saida porb.0 acione(PERMANECENDO ASSIM ATE OCORRER OUTRO PULSO DE DESACIONAMENTO), e a entrada 2  ative a saida portb.4 (PERMANECENDO ASIM ATÉ OCORRER OUTRO PULSO DE DESACIONAMENTO), porém so pode ocorrer o acionameno da saida caso o nivelde outra SAIDA esteja desativado.

 

 

#INCLUDE <P16F628A.INC>       
    __CONFIG  _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC


 

#DEFINE    BANK0    BCF STATUS,RP0    ;SETA BANK 0 DE MEMÓRIA
#DEFINE    BANK1    BSF STATUS,RP0    ;SETA BANK 1 DE MAMÓRIA

 

    CBLOCK    0x20    ;ENDEREÇO INICIAL DA MEMÓRIA DE
                   
    

    ENDC            ;FIM DO BLOCO DE MEMÓRIA        


 

#DEFINE    BOTAO    PORTA.3,0 ; 0 -> PRESSIONADO
                            ; 1 -> LIBERADO

 

#DEFINE    LED    PORTB.0,1    ;PORTA DO LED
                    ; 0 -> APAGADO
                    ; 1 -> ACESO
                PORTB.7, 1; 

 

    ORG    0x00        ;ENDEREÇO INICIAL DE PROCESSAMENTO
    GOTO    INICIO
    
 

    ORG    0x04        ;ENDEREÇO INICIAL DA INTERRUPÇÃO
    RETFIE            ;RETORNA DA INTERRUPÇÃO


INICIO
    CLRF    PORTA        ;LIMPA O PORTA
    CLRF    PORTB        ;LIMPA O PORTB

    BANK1
               
    MOVLW    B'00000001'
    MOVWF    TRISA        ;DEFINE RA0 COMO ENTRADA E DEMAIS
                        ;COMO SAÍDAS
    MOVLW    B'00000000'
    MOVWF    TRISB        ;DEFINE TODO O PORTB COMO SAÍDA
    
    MOVLW    B'10000000'
    MOVWF    OPTION_REG    ;PRESCALER 1:2 NO TMR0
                        ;PULL-UPS DESABILITADOS
                        ;AS DEMAIS CONFG. SÃO IRRELEVANTES
    MOVLW    B'00000000'
    MOVWF    INTCON        ;TODAS AS INTERRUPÇÕES DESLIGADAS
    BANK0                ;RETORNA PARA O BANCO 0
    MOVLW    B'00000111'
    MOVWF    CMCON        ;DEFINE O MODO DE OPERAÇÃO DO COMPARADOR ANALÓGICO

 


MAIN

    BTFSC    BOTAO        ;O BOTÃO ESTÁ PRESSIONADO?
    GOTO    BOTAO_LIB    ;NÃO, ENTÃO TRATA BOTÃO LIBERADO
    GOTO    BOTAO_PRES    ;SIM, ENTÃO TRATA BOTÃO PRESSIONADO

BOTAO_LIB
    BCF LED                      ;APAGA LED
    GOTO     MAIN        ;RETORNA AO LOOP PRINCIPAL

BOTAO_PRES
    BSF    LED                ;LIGA LED
     GOTO     MAIN        ;RETORNA AO LOOP PRINCIPAL

 

    END            ;

Compartilhar este post


Link para o post
Compartilhar em outros sites
55 minutos atrás, Welington Giovani disse:

use duas entradas porta.1 e porta.2 e
ao se acionar a entrada 1 a saida porb.0 acione(PERMANECENDO ASSIM ATE OCORRER OUTRO PULSO DE DESACIONAMENTO), e a entrada 2  ative a saida portb.4 (PERMANECENDO ASIM ATÉ OCORRER OUTRO PULSO DE DESACIONAMENTO), porém so pode ocorrer o acionameno da saida caso o nivelde outra SAIDA esteja desativado.

#define outraSAIDA RA0
#define entrada1 RA1 //supondo que 1 pulso aciona, outro desaciona
#define entrada2 RA2

for(;;)
{
if (!outraSAIDA)//porém so pode ocorrer o acionameno da saida caso o nivelde outra SAIDA esteja desativado.
	{
	if (entrada1) {RB0^=1;while (entrada1);} //ao se acionar a entrada 1 a saida porb.0 acione(PERMANECENDO ASSIM ATE OCORRER OUTRO PULSO DE DESACIONAMENTO),
	if (entrada2) {RB4^=1;;while (entrada2);}//e a entrada 2  ative a saida portb.4 (PERMANECENDO ASIM ATÉ OCORRER OUTRO PULSO DE DESACIONAMENTO), 
	}
}

Isso talvez te humilhe 1 pouco mas não deve te ajudar muito. Além do+ não sei se interpretei direito. Serve pra algum benchmarking mental entre asm e c. Num futuro (não muito distante), cogite c

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vtrx ,

 

KKKKK boa pergunta .....

 

Vou te falar... já trabalhei com vários microcontroladores de arquiteturas diferentes, mas todos com modelos lineares de memórias.... esse sistema de BANCOS nos Pics é uma coisa que não me entra na cabeça de jeito nenhum.... se dependesse de C ou de Assembler de Pic eu morreria de fome....

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites
34 minutos atrás, aphawk disse:

Assembler de Pic

tamo junto na inanição.

34 minutos atrás, aphawk disse:

sistema de BANCOS nos Pics

É só pro asm. Em c não precisa

55 minutos atrás, vtrx disse:

Se a resposta valesse

Ajude o garoto se achar que deve

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×