sexta-feira, 6 de janeiro de 2023

Código - Rotina de Delay em assembly

Teoria :  

Se o cristal for de 12Mhz:

1 ciclo de máquina = 1/12MHZ * 12 => 1uS (1 microsegundo).

a Instrução "djnz r0,espera" gasta 02 ciclos de máquina (24 pulsoa de clock = 2uS).

Mas para uma contagem de 1 segundo, melhor usar um dos contadores Timer0 ou Timer1, como no exemplo abaixo:


Código : 


	MOV TMOD,#11H 		;AMBOS OS TIMERS NO MODO1=TEMPORIZADOR SINAL INT.
MOV TCON,#00 ;AMBOS 16 BITS RECARGA AUT - INICIALM. DESLIGADOS

DELAY1S:MOV R7,#20 ;ATRASO DE 1000 MS SE R7=20(USAR R7 COMO MULTIPLICADOR DE 50)
RET: MOV TH0,#HIGH(65535-50000) ;Contador conta 50.000 vezeS X 1uS = 50mS
MOV TL0,#LOW(65535-50000) ;
SETB TR0 ;AQUI O CONTADOR É LIGADO E COMEÇA A CONTAR
JNB TF0,$ ;ENQUANTO TF0=0 AINDA NÃO CONTOU 50mS
CLR TF0 ;RESETA O FLAG DE OVERFLOW = COMPLETOU A CONTAGEM DE 50mS
DJNZ R7,RET ;REPETE A CONTAGEM DE DE 50mS POR MAIS 20 VEZES (VALOR DE R7)
CLR TR0
RET
Outro código de delay :

DELAY:  MOV TMOD,#01
        MOV TCON,#00
REPETE: MOV TH0,#08
       ;MOV TL,#DB      
        SETB TR0
AQUI:   JNB  TF0,AQUI
  CLR   TF0
  DJNZ  R4,REPETE
  CLR   TR0
  RET 
Fonte: 
https://www.clubedohardware.com.br/forums/topic/900206-delay-1s-como-calcular-assembly-8051/

0 comments:

Postar um comentário


Caso queria ajudar nosso projeto... Fique à vontade !!!


EBOOKS

Translate | Tradutor

Deseja anunciar aqui. Fale comigo !!!

Nome

E-mail *

Mensagem *

Tecnologia do Blogger.

Popular Posts

Arquivo