@Ricardo_pontes
Bom dia, Ricardo.
Não me respondeu a pergunta do meu último post.
Um pulso? Uma frequência qualquer em algum pino?
Como não deu pra formatar exatamente como é na IDE bascom, pode abrir arquivo .bas com:
http://www.mcselec.com/index.php?option=com_content&task=view&id=14&Itemid=103
Versão demo até 4KB de código. Basta copiar e color código abaixo.
$regfile = "m16def.dat" 'micro usado
$crystal = 8000000 'freq. do cristal
Config Timer1 = Timer , Prescale = 8 'com este valor e cristal de 8MHz, 1 incremento a cada 1uS
On Ovf1 Isr_t1 Nosave 'habilita int. T1 sem salvar registros
Enable Ovf1 'interrupção toda vez que houver "estouro" no timer 1=65536
Start Timer1
Dim Tempo As Word , Recarga As Word 'variáveis de 16bits
Config Portb.0 = Input 'Configura portb.0 como entrada
Chave1 Alias Pinb.0 : Portb.0 = 1 'label "chave1"= portb.0 : Ativa pullup neste pino
Pulso Alias Portb.1 'saída de um sinal de 500Hz. Se a int é de 1mS então freq.= 1/(2 x 0.001)
Config Pulso = Output
Recarga = 65536 - 1000 'interrupção a cada 1mS (1000x1uS)
Config Portb.2 = Output 'saída 500Hz
'rotina para pulso de 1 segundo na porta b.0 quando a chave for pressionada
Loop1:
Tempo = 0 'contador de 1000 x 1mS=1segundo
Timer1 = Recarga 'já deixa iniciamente timer 1 com valor de recarga
Do : Loop Until Chave1 = 0 'aguarda chave1 ser pressionada, considerando que é NA e está ligada ao GND.
Set Pulso
Start Timer1 'inicia contador
Do : Loop Until Tempo = 1000 'agrarda 1000 interrupções de 1mS
Reset Pulso
Goto Loop1
'----------------------------------------------------------------------------------------
Isr_t1:
Pushall 'salva apenas registros usados no momento da int.
Timer1 = Recarga
Incr Tempo
Toggle Portb.2 'inverte saída portb.2
Popall 'restaura registros
Return
'----------------------------------------------------------------------------------------