Ir ao conteúdo
  • Cadastre-se

Microprocessadores em assembly


Posts recomendados

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            ;

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...