Ir ao conteúdo
  • Cadastre-se

PatoAssado

Membro Pleno
  • Posts

    21
  • Cadastrado em

  • Última visita

Reputação

1
  1. nao use 8 portas... use 6, faca os 2 displays alternarem na saida do pic bem rápido que eles ficam acesos(piscando estão rápido q parecem q estão acesos) aqui segue um esqueminha pra você tipo assim vei CBLOCK 0x20 ;Endereço inicial da memória flag1 display_alterna ENDC #DEFINE porta_unidade_dezena FLAG1,0 #DEFINE gate_transistor_unidade PORTx,0 #DEFINE gate_transistor_dezena PORTx,1 display_muda DECFSZ display_alterna ;contador para alternar entre unidade e dezena RETURN MOVLW d'10' MOVWF display_alterna ;contador para alternar entre unidade e dezena BTFSC porta_unidade_dezena ;bit que checa se esta acionado display da unidade ou dezena goto $+5 ;esta acionado dezena, vai acionar unidade BSF porta_unidade_dezena ;esta acionado unidade então vai acionar dezena BCF gate_transistor_unidade ;limpa bit que aciona o gate da unidade BSF gate_transistor_dezena ;seta bit que aciona o gate da dezena RETURN BCF porta_unidade_dezena ;esta na acionado dezena então vai acionar unidade BCF gate_transistor_dezena ;limpa bit que aciona o gate da dezena BSF gate_transistor_unidade ;seta bit que acina o gate da unidade RETURN
  2. eu nao sabia que ele movia o endereco do registrador e nao o valor em todosoutros lugares do codigo ele funciona perfeitamente movendo o valor , porque so ali que nao? pra mim nao faz sentido uma funcao nao pde ser uma cosntante ou nao? porque q eu entenda movlw (move literal para w) movwf (move w para funcao) vou la corrigir.. se nao funciona nao funciona ne... vlwz.. é... olhando aqui realmente, acho que so ali estou movendo um registrador para w, faz mais sentido agora =D
  3. estou com mais dificuldades... que coisa doida.. nao compreendo... estou tentando mover um valor para um registrador mas quando movo um valor aparece outro totalmente diferente dentro dele... assembly fede poxa... fiz um programa mo cabrero e agora nenhuma parte dele parece funcionar como deveria... de uma olhada na imagem
  4. valeu amigo, uma imagem diz todo, dei uma olhada por ae vou tentar por um resistor pra puxa pra cima a tensão como estão falndo por ae e testar dps
  5. valeu velho, consegui vario0s problemas q fui aprendendo xDD nao tava incluindo o documento com os enderecos `pic16f628a.INC(eu nao lembrava que tinha) ai dps eu tava escrevendo o codigo errado mesmo =PP so nao consegui fazer funcionar essa tal da ra4 vou posta o codigo pra ficar de exemplo no forum pra quem quiser usar pic16f628a com oscilador interno e timer0 int ai quem quiser so pegar e modificar o resto valeu list p=16F628A ; list directive to define processor #include <p16F628A.inc> ; processor specific variable definitions errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT ; '__CONFIG' directive is used to embed configuration word within .asm file. ; The lables following the directive are located in the respective .inc file. ; See data sheet for additional information on configuration word settings. ;***** VARIABLE DEFINITIONS (examples) CBLOCK 0x20 contador1 contador2 contador3 flags ENDC #DEFINE flag_led flags,0 ; example of using Shared Uninitialized Data Section ;********************************************************************** org 0 ; processor reset vector goto main ; go to beginning of program org 4 ; interrupt vector location CALL interrupcao retfie ; return from interrupt interrupcao btfsc INTCON,T0IF ;TESTA SE OCORREU TIMER 0 OVERFLOW INTERRUPT goto $+2 ;SE OCORREU VAI PARA ROTINA DO TIMER0 return ;SE NAO OCORREU NAO DEVIA NEM ESTAR AQUI, VERIFICAR SE HA ALGUMA INTERRUPCAO call timer_interrupcao return timer_interrupcao clrf INTCON ;limpa flags de int nop movlw b'00000110' ;coloca 6 no timer0 movwf TMR0 bsf STATUS,RP0 nop movlw b'11000010' ;rb pull up disabled, internal clock, prescaler no timer0, 1/8 movwf OPTION_REG bsf INTCON, T0IE ;liga timer0 int BSF INTCON, GIE ;liga interrupcoes bcf STATUS,RP0 nop decfsz contador1 return movlw b'00100010' movwf contador1 decfsz contador2 return movlw b'01010010' movwf contador2 btfsc flag_led goto $+3 bsf flag_led return bcf flag_led return main bsf STATUS,RP0 nop CLRF PCON nop BSF PCON, 3 nop nop nop nop nop MOVLW b'11000010' ;rb pull up disabled, prescaler no timer0 e timer0 rate 1:8 movwf OPTION_REG nop bcf STATUS,RP0 nop movlw b'00000111' ;desliga comparadores movwf CMCON movlw b'00000000' ;desliga iinterrupcoes movwf INTCON clrf PORTA ;limpa nop clrf PORTB bsf STATUS,RP0 nop movlw b'00100000' ;seta todo saida menos port5 que nao tem saida movwf TRISA nop movlw b'00000000' ;seta todas saidas movwf TRISB nop bcf STATUS,RP0 nop clrf PORTA nop movlw b'11011111' ;precisa configurar 1 saida ainda movwf PORTA ;liga saidas do portA nop clrf PORTB nop movlw b'11111111' movwf PORTB ;liga saidas do portB clrf TMR0 clrf INTCON movlw b'00000110' ;coloca 6 no timer0 movwf TMR0 bsf STATUS,RP0 movlw b'01000010' ;rb pull up disabled, internal clock, prescaler no timer0, 1/8 movwf OPTION_REG bcf STATUS,RP0 bsf INTCON, T0IE ;liga timer0 int BSF INTCON, GIE ;liga interrupcoes movlw b'00110010' movwf contador1 movlw b'00110010' movwf contador2 movlw b'11011110' movwf contador3 bcf flag_led ; remaining code goes here goto programa ; loop forever, remove this instruction, for test only programa ;fica piscando portb com o tempo definido dentro do tmr0 interrupt btfsc flag_led goto $+4 movlw b'00000000' movwf PORTB goto programa movlw b'11111111' movwf PORTB goto programa ; initialize eeprom locations END ; directive 'end of program'
  6. seguinte, estou ha um tempo aprendendo a programar pic em assmbly sem ajuda li de cabo a rabo datasheet varias vezes, e chega uma hora que nao ha mais o que fazer, eu gostaria então de pedir que vc6 compartilhassem um pouco de sabedoria e me ajudassem a entender, PORQUE NAO FUNCIONA!!!!???? ja tentei de tudo, mudar varias vezes as configuracoes e em vez de chegar mais perto parece que estou cada vez mais longe, eu tinha ate conseguido fazer um led piscar, mas ao tentar adicionar comandos simples (que ja estava usando e funcionando) parou de vez ja testei varios pics e todos se comportam igual cod protect off todas as vezes ok ja vi um erro, option_reg é bank1 ou 3 mas o real problema eu acho que seria configurar o mplab para compilar direito e gerar o .hex certo, porque eu estou gravando com sucesso(ate da para abrir e conferir o .hex com o pickit2 se esta gravado no pic, e esta) porque o que acontece e o seguinte: apesar disso: NAO FUNCIONA!!!! =/ se alguem poder me me ajudar, ou pelo menos ter a paciencia de ler fico grato

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