Testei o código e funcionou, mas somente com baixo rpm. Saberia me dizer como contornar isso? Porque preciso ler o RPM de um motor trifásico diretamente na polia e ele tem uma boa rpm. Estou usando aquele conjunto de fototransistor e Led IR. Retirei de uma impressora laser.
Estou usando o Contador de forma correta?
Desde já muito obrigado!
Código:
asm code
; Renato
; 02/02/19
;----------------------------------------------------------- DIRETIVAS -----------------------------------------------------------
; ENTRADAS
B_Ligar EQU P2.0
; SAÍDAS
Motor EQU P2.5
LED_Verde EQU P2.6
;------------------------------------------------------------- SETUP ------------------------------------------------------------
ORG 00h
Setup: MOV TMOD, #00000101b ; Usaremos o Contador0 no modo 1(16bits) com sinal externo.
Contador: MOV TH0, #High (65535-200) ; 1.000 contagens
MOV TL0, #Low (65535-200) ; TH0 recebe a parte alta de 1000 e TL0 recebe a parte baixa.
;------------------------------------------------------------- LIGAR ------------------------------------------------------------
Inicio: JB B_Ligar, $
SETB TR0 ; Liga o Contador0, Motor e o Led
CLR Motor
CLR LED_Verde
Continua: JNB TF0, $
;------------------------------------------------------------ TERMINAR ----------------------------------------------------------
Terminar: CLR TR0 ; Desliga o Contador
CLR TF0 ; Reseta o Flag TF0
SETB Motor ; Desligo o Motor
MOV TH0, #High (65535-200) ; Recarrega o contador 0
MOV TL0, #Low (65535-200)
Pisca_Verde: MOV R0,#2
DELAY80: MOV R1,#255
DELAY70: MOV R2,#255
DELAY60: DJNZ R2, DELAY60 ; Pisca o LED Verde até que alguém pressione o Botão de Ligar para recomeçar.
DJNZ R1, DELAY70
DJNZ R0, DELAY80
CPL LED_Verde
JB B_Ligar, Pisca_Verde
JNB B_Ligar, $
SETB LED_Verde ; Desliga o Led
AJMP Inicio ; Reinicia tudo
END ; Fim do programa.