Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

MrGui1100

Membros Juniores
  • Total de itens

    1
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Há um tópico parecido aqui no site, mas não solucionou a dúvida. Possuo o conhecimento de como programar interrupções, no entanto, o máximo de delay que elas permitem são 65536us. Como faço para fazer interrupções maiores que esse valor? Esta programação abaixo permite 20.000us (ou 20ms), seu objetivo é incrementar em 1 o acumulador e depois de 20ms, ocorrer uma interrupção: ORG 0000H LJMP 100H ORG 0BH CLR TR0 RETI ORG 100H INICIO: MOV IE ,#82H MOV IP ,#02H MOV TMOD,#01H MOV TH0 ,#HIGH(65535-20000) MOV TL0 ,#LOW (65535-20000) SETB TR0 MOV A ,#00H LOOP: INC A LJMP LOOP END Como faço para aumentar este valor SEM TRAVAR num loop infinito, como no caso abaixo (Seu objetivo foi trocar o estado de P2.5 a cada (20*10)ms no timer1 modo 01), para isso, usei DJNZ para repetir a interrução 10 vezes seguidas (ou seja, travei a programação): ORG 0000H LJMP INICIO ORG 001BH LJMP ROTINA INICIO: CLR P2.5 MOV IE, #88H MOV IP, #08H MOV TCON, #40H MOV TMOD, #10H MOV TH1, #0D8H MOV TL1, #0F1H LJMP $ ; ESCREVA O PROGRAMA PRINCIPAL AQUI. ROTINA: MOV R0, #09H LOOP: MOV TH1, #0D8H MOV TL1, #0F0H JNB TF1,$ ; ESPERA A CONTAGEM TERMINAR (ESPERA O OVERFLOW) - não é possível fazer outras coisas coisas, somos obrigados a esperar TF1, logo, não é o ideal. CLR TF1 ; LIMPA O TF1 POIS ELE NÃO MUDA DE ESTADO AUTOMATICAMENTE QUANDO O OVERFLOW TERMINA. DJNZ R0, LOOP ; ESPERAMOS (TRAVADO) A INTERRUÇÃO ACONTECER 10 VEZES (20*10 = 200ms) CPL P2.5 ; INVERTE O ESTADO LÓGICO DE P2.5 A CADA 200ms RETI Se alguém puder me dizer como faço para programar interrupções de mais de 65535us, eu ficaria agradecido!

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

×